1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/renderer/browser_plugin/mock_browser_plugin_manager.h"
7 #include "base/message_loop/message_loop.h"
8 #include "content/common/browser_plugin/browser_plugin_messages.h"
9 #include "content/renderer/browser_plugin/mock_browser_plugin.h"
10 #include "ipc/ipc_message.h"
14 MockBrowserPluginManager::MockBrowserPluginManager(
15 RenderViewImpl* render_view)
16 : BrowserPluginManager(render_view),
17 guest_instance_id_counter_(0) {
20 MockBrowserPluginManager::~MockBrowserPluginManager() {
23 BrowserPlugin* MockBrowserPluginManager::CreateBrowserPlugin(
24 RenderViewImpl* render_view,
25 WebKit::WebFrame* frame,
26 const WebKit::WebPluginParams& params) {
27 return new MockBrowserPlugin(render_view, frame, params);
30 void MockBrowserPluginManager::AllocateInstanceID(
31 const base::WeakPtr<BrowserPlugin>& browser_plugin) {
32 int guest_instance_id = ++guest_instance_id_counter_;
33 base::MessageLoop::current()->PostTask(
35 base::Bind(&MockBrowserPluginManager::AllocateInstanceIDACK,
41 void MockBrowserPluginManager::AllocateInstanceIDACK(
42 BrowserPlugin* browser_plugin,
43 int guest_instance_id) {
44 browser_plugin->OnInstanceIDAllocated(guest_instance_id);
45 scoped_ptr<base::DictionaryValue> extra_params(new base::DictionaryValue());
46 browser_plugin->Attach(extra_params.Pass());
49 bool MockBrowserPluginManager::Send(IPC::Message* msg) {
50 // This is a copy-and-paste from MockRenderThread::Send.
51 // We need to simulate a synchronous channel, thus we are going to receive
52 // through this function messages, messages with reply and reply messages.
53 // We can only handle one synchronous message at a time.
54 if (msg->is_reply()) {
55 if (reply_deserializer_) {
56 reply_deserializer_->SerializeOutputParameters(*msg);
57 reply_deserializer_.reset();
61 // We actually need to handle deleting the reply deserializer for sync
63 reply_deserializer_.reset(
64 static_cast<IPC::SyncMessage*>(msg)->GetReplyDeserializer());
66 OnMessageReceived(*msg);
72 bool MockBrowserPluginManager::OnMessageReceived(
73 const IPC::Message& message) {
74 // Save the message in the sink.
75 sink_.OnMessageReceived(message);
79 } // namespace content