Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(400)

Side by Side Diff: content/renderer/pepper/renderer_ppapi_host_impl.h

Issue 10815073: Refactoring of new IPC-only pepper implementation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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_PEPPER_RENDERER_PPAPI_HOST_IMPL_H_
6 #define CONTENT_RENDERER_PEPPER_RENDERER_PPAPI_HOST_IMPL_H_
7
8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "content/public/renderer/renderer_ppapi_host.h"
11 #include "content/renderer/pepper/content_renderer_pepper_host_factory.h"
12 #include "ppapi/host/ppapi_host.h"
13 #include "webkit/plugins/ppapi/plugin_module.h"
14
15 namespace IPC {
16 class Sender;
17 }
18
19 namespace ppapi {
20
21 namespace proxy {
22 class HostDispatcher;
23 }
24
25 namespace thunk {
26 class ResourceCreationAPI;
27 }
28
29 } // namespace ppapi
30
31 namespace webkit {
32 namespace ppapi {
33 class PluginInstance;
34 class PluginModule;
35 }
36 }
37
38 namespace content {
39
40 class PepperInProcessRouter;
41
42 // This class is attached to a PluginModule via the module's embedder state.
43 // The plugin module manages our lifetime.
44 class RendererPpapiHostImpl
45 : public RendererPpapiHost,
46 public webkit::ppapi::PluginModule::EmbedderState {
47 public:
48 virtual ~RendererPpapiHostImpl();
49
50 // Factory functiosn to create in process or out-of-process host impls. The
raymes 2012/07/25 16:53:22 "functions"
51 // host will be created and associated with the given module, which must not
52 // already have embedder state on it.
53 //
54 // The module will take ownership of the new host impl. The returned value
55 // idoes not pass ownership, it's just for the information of the caller.
raymes 2012/07/25 16:53:22 "does"
56 static RendererPpapiHostImpl* CreateOnModuleForOutOfProcess(
57 webkit::ppapi::PluginModule* module,
58 ppapi::proxy::HostDispatcher* dispatcher,
59 const ppapi::PpapiPermissions& permissions);
60 static RendererPpapiHostImpl* CreateOnModuleForInProcess(
61 webkit::ppapi::PluginModule* module,
62 const ppapi::PpapiPermissions& permissions);
63
64 // Returns the router that we use for in-process IPC emulation (see the
65 // pepper_in_process_router.h for more). This will be NULL when the plugin
66 // is running out-of-process.
67 PepperInProcessRouter* in_process_router() {
68 return in_process_router_.get();
69 }
70
71 // Creates the in-process resource creation API wrapper for the given
72 // plugin instance. This object will reference the host impl, so the
73 // host impl should outlive the returned pointer. Since the resource
74 // creation object is associated with the instance, this will generally
75 // happen automatically.
76 scoped_ptr<::ppapi::thunk::ResourceCreationAPI>
77 CreateInProcessResourceCreationAPI(
78 webkit::ppapi::PluginInstance* instance);
79
80 // RendererPpapiHost.
81 virtual ppapi::host::PpapiHost* GetPpapiHost() OVERRIDE;
82 virtual bool IsValidInstance(PP_Instance instance) const OVERRIDE;
83 virtual RenderView* GetRenderViewForInstance(
84 PP_Instance instance) const OVERRIDE;
85 virtual bool HasUserGesture(PP_Instance instance) const OVERRIDE;
86
87 private:
88 RendererPpapiHostImpl(webkit::ppapi::PluginModule* module,
89 ppapi::proxy::HostDispatcher* dispatcher,
90 const ppapi::PpapiPermissions& permissions);
91 RendererPpapiHostImpl(webkit::ppapi::PluginModule* module,
92 const ppapi::PpapiPermissions& permissions);
93
94 // Retrieves the plugin instance object associated with the given PP_Instance
95 // and validates that it is one of the instances associated with our module.
96 // Returns NULL on failure.
97 //
98 // We use this to security check the PP_Instance values sent from a plugin to
99 // make sure it's not trying to spoof another instance.
100 webkit::ppapi::PluginInstance* GetAndValidateInstance(
101 PP_Instance instance) const;
102
103 webkit::ppapi::PluginModule* module_; // Non-owning pointer.
104
105 ContentRendererPepperHostFactory host_factory_;
106 scoped_ptr<ppapi::host::PpapiHost> ppapi_host_;
107
108 // Null when running out-of-process.
109 scoped_ptr<PepperInProcessRouter> in_process_router_;
110
111 DISALLOW_COPY_AND_ASSIGN(RendererPpapiHostImpl);
112 };
113
114 } // namespace content
115
116 #endif // CONTENT_RENDERER_PEPPER_RENDERER_PPAPI_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698