15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_RENDERER_PEPPER_MOCK_RENDERER_PPAPI_HOST_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_RENDERER_PEPPER_MOCK_RENDERER_PPAPI_HOST_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/renderer_ppapi_host.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/renderer/pepper/content_renderer_pepper_host_factory.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/host/ppapi_host.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/proxy/resource_message_test_sink.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class FakePepperPluginInstance;
1758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochclass PluginModule;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A mock RendererPpapiHost for testing resource hosts. Messages sent by
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// resources through this will get added to the test sink.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockRendererPpapiHost : public RendererPpapiHost {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This function takes the RenderView and instance that the mock resource
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // host will be associated with.
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  MockRendererPpapiHost(RenderView* render_view, PP_Instance instance);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockRendererPpapiHost();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ppapi::proxy::ResourceMessageTestSink& sink() { return sink_; }
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Instance pp_instance() const { return pp_instance_; }
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets whether there is currently a user gesture. Defaults to false.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_has_user_gesture(bool gesture) { has_user_gesture_ = gesture; }
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RendererPpapiHost.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ppapi::host::PpapiHost* GetPpapiHost() OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsValidInstance(PP_Instance instance) const OVERRIDE;
37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual PepperPluginInstance* GetPluginInstance(PP_Instance instance) const
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual RenderFrame* GetRenderFrameForInstance(PP_Instance instance) const
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual RenderView* GetRenderViewForInstance(PP_Instance instance) const
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebPluginContainer* GetContainerForInstance(
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      PP_Instance instance) const OVERRIDE;
4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual base::ProcessId GetPluginPID() const OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool HasUserGesture(PP_Instance instance) const OVERRIDE;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual int GetRoutingIDForWidget(PP_Instance instance) const OVERRIDE;
48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual gfx::Point PluginPointToRenderFrame(PP_Instance instance,
49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                              const gfx::Point& pt) const
50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual IPC::PlatformFileForTransit ShareHandleWithRemote(
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::PlatformFile handle,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool should_close_source) OVERRIDE;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool IsRunningInProcess() const OVERRIDE;
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual std::string GetPluginName() const OVERRIDE;
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void SetToExternalPluginHost() OVERRIDE;
573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void CreateBrowserResourceHosts(
58868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      PP_Instance instance,
593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      const std::vector<IPC::Message>& nested_msgs,
60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      const base::Callback<void(const std::vector<int>&)>& callback) const
61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      OVERRIDE;
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual GURL GetDocumentURL(PP_Instance instance) const OVERRIDE;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ppapi::proxy::ResourceMessageTestSink sink_;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ppapi::host::PpapiHost ppapi_host_;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderView* render_view_;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Instance pp_instance_;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool has_user_gesture_;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<FakePepperPluginInstance> plugin_instance_;
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockRendererPpapiHost);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_RENDERER_PEPPER_MOCK_RENDERER_PPAPI_HOST_H_
81