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.
4
5#ifndef CONTENT_RENDERER_BROWSER_PLUGIN_MOCK_BROWSER_PLUGIN_MANAGER_H_
6#define CONTENT_RENDERER_BROWSER_PLUGIN_MOCK_BROWSER_PLUGIN_MANAGER_H_
7
8#include "content/renderer/browser_plugin/browser_plugin_manager.h"
9
10#include "base/memory/scoped_ptr.h"
11#include "content/public/renderer/browser_plugin_delegate.h"
12#include "ipc/ipc_message_utils.h"
13#include "ipc/ipc_test_sink.h"
14
15namespace content {
16
17class MockBrowserPlugin;
18
19class MockBrowserPluginManager : public BrowserPluginManager {
20 public:
21  MockBrowserPluginManager(RenderViewImpl* render_view);
22
23  // BrowserPluginManager implementation.
24  virtual BrowserPlugin* CreateBrowserPlugin(
25      RenderViewImpl* render_view,
26      blink::WebFrame* frame,
27      scoped_ptr<BrowserPluginDelegate> delegate) OVERRIDE;
28
29  // Provides access to the messages that have been received by this thread.
30  IPC::TestSink& sink() { return sink_; }
31
32  // RenderViewObserver override.
33  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
34  virtual bool Send(IPC::Message* msg) OVERRIDE;
35
36  // Returns the latest browser plugin that was created by this manager.
37  MockBrowserPlugin* last_plugin() { return last_plugin_; }
38
39 protected:
40  virtual ~MockBrowserPluginManager();
41
42  IPC::TestSink sink_;
43
44  // The last known good deserializer for sync messages.
45  scoped_ptr<IPC::MessageReplyDeserializer> reply_deserializer_;
46
47  MockBrowserPlugin* last_plugin_;
48
49  DISALLOW_COPY_AND_ASSIGN(MockBrowserPluginManager);
50};
51
52}  // namespace content
53
54#endif  // CONTENT_RENDERER_BROWSER_PLUGIN_MOCK_BROWSER_PLUGIN_MANAGER_H_
55