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

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

Issue 225903006: PPAPI: Run clang_format.py on content/renderer/pepper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 6 years, 8 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/pepper/renderer_ppapi_host_impl.h" 5 #include "content/renderer/pepper/renderer_ppapi_host_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 13 matching lines...) Expand all
24 #include "ppapi/host/ppapi_host.h" 24 #include "ppapi/host/ppapi_host.h"
25 #include "ppapi/proxy/host_dispatcher.h" 25 #include "ppapi/proxy/host_dispatcher.h"
26 #include "third_party/WebKit/public/platform/WebRect.h" 26 #include "third_party/WebKit/public/platform/WebRect.h"
27 #include "third_party/WebKit/public/web/WebDocument.h" 27 #include "third_party/WebKit/public/web/WebDocument.h"
28 #include "third_party/WebKit/public/web/WebElement.h" 28 #include "third_party/WebKit/public/web/WebElement.h"
29 #include "third_party/WebKit/public/web/WebPluginContainer.h" 29 #include "third_party/WebKit/public/web/WebPluginContainer.h"
30 #include "ui/gfx/point.h" 30 #include "ui/gfx/point.h"
31 31
32 namespace content { 32 namespace content {
33 // static 33 // static
34 CONTENT_EXPORT RendererPpapiHost* 34 CONTENT_EXPORT RendererPpapiHost* RendererPpapiHost::GetForPPInstance(
35 RendererPpapiHost::GetForPPInstance(PP_Instance instance) { 35 PP_Instance instance) {
36 return RendererPpapiHostImpl::GetForPPInstance(instance); 36 return RendererPpapiHostImpl::GetForPPInstance(instance);
37 } 37 }
38 38
39 // Out-of-process constructor. 39 // Out-of-process constructor.
40 RendererPpapiHostImpl::RendererPpapiHostImpl( 40 RendererPpapiHostImpl::RendererPpapiHostImpl(
41 PluginModule* module, 41 PluginModule* module,
42 ppapi::proxy::HostDispatcher* dispatcher, 42 ppapi::proxy::HostDispatcher* dispatcher,
43 const ppapi::PpapiPermissions& permissions) 43 const ppapi::PpapiPermissions& permissions)
44 : module_(module), 44 : module_(module), dispatcher_(dispatcher) {
45 dispatcher_(dispatcher) {
46 // Hook the PpapiHost up to the dispatcher for out-of-process communication. 45 // Hook the PpapiHost up to the dispatcher for out-of-process communication.
47 ppapi_host_.reset( 46 ppapi_host_.reset(new ppapi::host::PpapiHost(dispatcher, permissions));
48 new ppapi::host::PpapiHost(dispatcher, permissions));
49 ppapi_host_->AddHostFactoryFilter(scoped_ptr<ppapi::host::HostFactory>( 47 ppapi_host_->AddHostFactoryFilter(scoped_ptr<ppapi::host::HostFactory>(
50 new ContentRendererPepperHostFactory(this))); 48 new ContentRendererPepperHostFactory(this)));
51 dispatcher->AddFilter(ppapi_host_.get()); 49 dispatcher->AddFilter(ppapi_host_.get());
52 is_running_in_process_ = false; 50 is_running_in_process_ = false;
53 } 51 }
54 52
55 // In-process constructor. 53 // In-process constructor.
56 RendererPpapiHostImpl::RendererPpapiHostImpl( 54 RendererPpapiHostImpl::RendererPpapiHostImpl(
57 PluginModule* module, 55 PluginModule* module,
58 const ppapi::PpapiPermissions& permissions) 56 const ppapi::PpapiPermissions& permissions)
59 : module_(module), 57 : module_(module), dispatcher_(NULL) {
60 dispatcher_(NULL) {
61 // Hook the host up to the in-process router. 58 // Hook the host up to the in-process router.
62 in_process_router_.reset(new PepperInProcessRouter(this)); 59 in_process_router_.reset(new PepperInProcessRouter(this));
63 ppapi_host_.reset(new ppapi::host::PpapiHost( 60 ppapi_host_.reset(new ppapi::host::PpapiHost(
64 in_process_router_->GetRendererToPluginSender(), permissions)); 61 in_process_router_->GetRendererToPluginSender(), permissions));
65 ppapi_host_->AddHostFactoryFilter(scoped_ptr<ppapi::host::HostFactory>( 62 ppapi_host_->AddHostFactoryFilter(scoped_ptr<ppapi::host::HostFactory>(
66 new ContentRendererPepperHostFactory(this))); 63 new ContentRendererPepperHostFactory(this)));
67 is_running_in_process_ = true; 64 is_running_in_process_ = true;
68 } 65 }
69 66
70 RendererPpapiHostImpl::~RendererPpapiHostImpl() { 67 RendererPpapiHostImpl::~RendererPpapiHostImpl() {
71 // Delete the host explicitly first. This shutdown will destroy the 68 // Delete the host explicitly first. This shutdown will destroy the
72 // resources, which may want to do cleanup in their destructors and expect 69 // resources, which may want to do cleanup in their destructors and expect
73 // their pointers to us to be valid. 70 // their pointers to us to be valid.
74 ppapi_host_.reset(); 71 ppapi_host_.reset();
75 } 72 }
76 73
77 // static 74 // static
78 RendererPpapiHostImpl* RendererPpapiHostImpl::CreateOnModuleForOutOfProcess( 75 RendererPpapiHostImpl* RendererPpapiHostImpl::CreateOnModuleForOutOfProcess(
79 PluginModule* module, 76 PluginModule* module,
80 ppapi::proxy::HostDispatcher* dispatcher, 77 ppapi::proxy::HostDispatcher* dispatcher,
81 const ppapi::PpapiPermissions& permissions) { 78 const ppapi::PpapiPermissions& permissions) {
82 DCHECK(!module->renderer_ppapi_host()); 79 DCHECK(!module->renderer_ppapi_host());
83 RendererPpapiHostImpl* result = new RendererPpapiHostImpl( 80 RendererPpapiHostImpl* result =
84 module, dispatcher, permissions); 81 new RendererPpapiHostImpl(module, dispatcher, permissions);
85 82
86 // Takes ownership of pointer. 83 // Takes ownership of pointer.
87 module->SetRendererPpapiHost(scoped_ptr<RendererPpapiHostImpl>(result)); 84 module->SetRendererPpapiHost(scoped_ptr<RendererPpapiHostImpl>(result));
88 85
89 return result; 86 return result;
90 } 87 }
91 88
92 // static 89 // static
93 RendererPpapiHostImpl* RendererPpapiHostImpl::CreateOnModuleForInProcess( 90 RendererPpapiHostImpl* RendererPpapiHostImpl::CreateOnModuleForInProcess(
94 PluginModule* module, 91 PluginModule* module,
95 const ppapi::PpapiPermissions& permissions) { 92 const ppapi::PpapiPermissions& permissions) {
96 DCHECK(!module->renderer_ppapi_host()); 93 DCHECK(!module->renderer_ppapi_host());
97 RendererPpapiHostImpl* result = new RendererPpapiHostImpl( 94 RendererPpapiHostImpl* result =
98 module, permissions); 95 new RendererPpapiHostImpl(module, permissions);
99 96
100 // Takes ownership of pointer. 97 // Takes ownership of pointer.
101 module->SetRendererPpapiHost(scoped_ptr<RendererPpapiHostImpl>(result)); 98 module->SetRendererPpapiHost(scoped_ptr<RendererPpapiHostImpl>(result));
102 99
103 return result; 100 return result;
104 } 101 }
105 102
106 // static 103 // static
107 RendererPpapiHostImpl* RendererPpapiHostImpl::GetForPPInstance( 104 RendererPpapiHostImpl* RendererPpapiHostImpl::GetForPPInstance(
108 PP_Instance pp_instance) { 105 PP_Instance pp_instance) {
(...skipping 17 matching lines...) Expand all
126 PepperPluginInstanceImpl* RendererPpapiHostImpl::GetPluginInstanceImpl( 123 PepperPluginInstanceImpl* RendererPpapiHostImpl::GetPluginInstanceImpl(
127 PP_Instance instance) const { 124 PP_Instance instance) const {
128 return GetAndValidateInstance(instance); 125 return GetAndValidateInstance(instance);
129 } 126 }
130 127
131 ppapi::host::PpapiHost* RendererPpapiHostImpl::GetPpapiHost() { 128 ppapi::host::PpapiHost* RendererPpapiHostImpl::GetPpapiHost() {
132 return ppapi_host_.get(); 129 return ppapi_host_.get();
133 } 130 }
134 131
135 RenderFrame* RendererPpapiHostImpl::GetRenderFrameForInstance( 132 RenderFrame* RendererPpapiHostImpl::GetRenderFrameForInstance(
136 PP_Instance instance) const { 133 PP_Instance instance) const {
137 PepperPluginInstanceImpl* instance_object = GetAndValidateInstance(instance); 134 PepperPluginInstanceImpl* instance_object = GetAndValidateInstance(instance);
138 if (!instance_object) 135 if (!instance_object)
139 return NULL; 136 return NULL;
140 137
141 // Since we're the embedder, we can make assumptions about the helper on 138 // Since we're the embedder, we can make assumptions about the helper on
142 // the instance and get back to our RenderFrame. 139 // the instance and get back to our RenderFrame.
143 return instance_object->render_frame(); 140 return instance_object->render_frame();
144 } 141 }
145 142
146 RenderView* RendererPpapiHostImpl::GetRenderViewForInstance( 143 RenderView* RendererPpapiHostImpl::GetRenderViewForInstance(
(...skipping 10 matching lines...) Expand all
157 bool RendererPpapiHostImpl::IsValidInstance(PP_Instance instance) const { 154 bool RendererPpapiHostImpl::IsValidInstance(PP_Instance instance) const {
158 return !!GetAndValidateInstance(instance); 155 return !!GetAndValidateInstance(instance);
159 } 156 }
160 157
161 PepperPluginInstance* RendererPpapiHostImpl::GetPluginInstance( 158 PepperPluginInstance* RendererPpapiHostImpl::GetPluginInstance(
162 PP_Instance instance) const { 159 PP_Instance instance) const {
163 return GetAndValidateInstance(instance); 160 return GetAndValidateInstance(instance);
164 } 161 }
165 162
166 blink::WebPluginContainer* RendererPpapiHostImpl::GetContainerForInstance( 163 blink::WebPluginContainer* RendererPpapiHostImpl::GetContainerForInstance(
167 PP_Instance instance) const { 164 PP_Instance instance) const {
168 PepperPluginInstanceImpl* instance_object = GetAndValidateInstance(instance); 165 PepperPluginInstanceImpl* instance_object = GetAndValidateInstance(instance);
169 if (!instance_object) 166 if (!instance_object)
170 return NULL; 167 return NULL;
171 return instance_object->container(); 168 return instance_object->container();
172 } 169 }
173 170
174 base::ProcessId RendererPpapiHostImpl::GetPluginPID() const { 171 base::ProcessId RendererPpapiHostImpl::GetPluginPID() const {
175 if (dispatcher_) 172 if (dispatcher_)
176 return dispatcher_->channel()->peer_pid(); 173 return dispatcher_->channel()->peer_pid();
177 return base::kNullProcessId; 174 return base::kNullProcessId;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 } 210 }
214 211
215 IPC::PlatformFileForTransit RendererPpapiHostImpl::ShareHandleWithRemote( 212 IPC::PlatformFileForTransit RendererPpapiHostImpl::ShareHandleWithRemote(
216 base::PlatformFile handle, 213 base::PlatformFile handle,
217 bool should_close_source) { 214 bool should_close_source) {
218 if (!dispatcher_) { 215 if (!dispatcher_) {
219 DCHECK(is_running_in_process_); 216 DCHECK(is_running_in_process_);
220 // Duplicate the file handle for in process mode so this function 217 // Duplicate the file handle for in process mode so this function
221 // has the same semantics for both in process mode and out of 218 // has the same semantics for both in process mode and out of
222 // process mode (i.e., the remote side must cloes the handle). 219 // process mode (i.e., the remote side must cloes the handle).
223 return BrokerGetFileHandleForProcess(handle, 220 return BrokerGetFileHandleForProcess(
224 base::GetCurrentProcId(), 221 handle, base::GetCurrentProcId(), should_close_source);
225 should_close_source);
226 } 222 }
227 return dispatcher_->ShareHandleWithRemote(handle, should_close_source); 223 return dispatcher_->ShareHandleWithRemote(handle, should_close_source);
228 } 224 }
229 225
230 bool RendererPpapiHostImpl::IsRunningInProcess() const { 226 bool RendererPpapiHostImpl::IsRunningInProcess() const {
231 return is_running_in_process_; 227 return is_running_in_process_;
232 } 228 }
233 229
234 void RendererPpapiHostImpl::CreateBrowserResourceHosts( 230 void RendererPpapiHostImpl::CreateBrowserResourceHosts(
235 PP_Instance instance, 231 PP_Instance instance,
236 const std::vector<IPC::Message>& nested_msgs, 232 const std::vector<IPC::Message>& nested_msgs,
237 const base::Callback<void(const std::vector<int>&)>& callback) const { 233 const base::Callback<void(const std::vector<int>&)>& callback) const {
238 RenderFrame* render_frame = GetRenderFrameForInstance(instance); 234 RenderFrame* render_frame = GetRenderFrameForInstance(instance);
239 PepperBrowserConnection* browser_connection = 235 PepperBrowserConnection* browser_connection =
240 PepperBrowserConnection::Get(render_frame); 236 PepperBrowserConnection::Get(render_frame);
241 if (!browser_connection) { 237 if (!browser_connection) {
242 base::MessageLoop::current()->PostTask(FROM_HERE, 238 base::MessageLoop::current()->PostTask(
239 FROM_HERE,
243 base::Bind(callback, std::vector<int>(nested_msgs.size(), 0))); 240 base::Bind(callback, std::vector<int>(nested_msgs.size(), 0)));
244 } else { 241 } else {
245 browser_connection->SendBrowserCreate(module_->GetPluginChildId(), 242 browser_connection->SendBrowserCreate(
246 instance, 243 module_->GetPluginChildId(), instance, nested_msgs, callback);
247 nested_msgs,
248 callback);
249 } 244 }
250 } 245 }
251 246
252 GURL RendererPpapiHostImpl::GetDocumentURL(PP_Instance instance) const { 247 GURL RendererPpapiHostImpl::GetDocumentURL(PP_Instance instance) const {
253 PepperPluginInstanceImpl* instance_object = GetAndValidateInstance(instance); 248 PepperPluginInstanceImpl* instance_object = GetAndValidateInstance(instance);
254 if (!instance_object) 249 if (!instance_object)
255 return GURL(); 250 return GURL();
256 251
257 return instance_object->container()->element().document().url(); 252 return instance_object->container()->element().document().url();
258 } 253 }
259 254
260 PepperPluginInstanceImpl* RendererPpapiHostImpl::GetAndValidateInstance( 255 PepperPluginInstanceImpl* RendererPpapiHostImpl::GetAndValidateInstance(
261 PP_Instance pp_instance) const { 256 PP_Instance pp_instance) const {
262 PepperPluginInstanceImpl* instance = 257 PepperPluginInstanceImpl* instance =
263 HostGlobals::Get()->GetInstance(pp_instance); 258 HostGlobals::Get()->GetInstance(pp_instance);
264 if (!instance) 259 if (!instance)
265 return NULL; 260 return NULL;
266 if (!instance->IsValidInstanceOf(module_)) 261 if (!instance->IsValidInstanceOf(module_))
267 return NULL; 262 return NULL;
268 return instance; 263 return instance;
269 } 264 }
270 265
271 } // namespace content 266 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/renderer_ppapi_host_impl.h ('k') | content/renderer/pepper/resource_converter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698