| OLD | NEW |
| 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/pepper_plugin_delegate_impl.h" | 5 #include "content/renderer/pepper/pepper_plugin_delegate_impl.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <cstddef> | 8 #include <cstddef> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 #include "ipc/ipc_channel_handle.h" | 61 #include "ipc/ipc_channel_handle.h" |
| 62 #include "media/video/capture/video_capture_proxy.h" | 62 #include "media/video/capture/video_capture_proxy.h" |
| 63 #include "ppapi/c/dev/pp_video_dev.h" | 63 #include "ppapi/c/dev/pp_video_dev.h" |
| 64 #include "ppapi/c/pp_errors.h" | 64 #include "ppapi/c/pp_errors.h" |
| 65 #include "ppapi/c/private/ppb_flash.h" | 65 #include "ppapi/c/private/ppb_flash.h" |
| 66 #include "ppapi/proxy/host_dispatcher.h" | 66 #include "ppapi/proxy/host_dispatcher.h" |
| 67 #include "ppapi/proxy/pepper_file_messages.h" | 67 #include "ppapi/proxy/pepper_file_messages.h" |
| 68 #include "ppapi/proxy/ppapi_messages.h" | 68 #include "ppapi/proxy/ppapi_messages.h" |
| 69 #include "ppapi/shared_impl/file_path.h" | 69 #include "ppapi/shared_impl/file_path.h" |
| 70 #include "ppapi/shared_impl/platform_file.h" | 70 #include "ppapi/shared_impl/platform_file.h" |
| 71 #include "ppapi/shared_impl/ppapi_permissions.h" |
| 71 #include "ppapi/shared_impl/ppapi_preferences.h" | 72 #include "ppapi/shared_impl/ppapi_preferences.h" |
| 72 #include "ppapi/shared_impl/ppb_device_ref_shared.h" | 73 #include "ppapi/shared_impl/ppb_device_ref_shared.h" |
| 73 #include "ppapi/thunk/enter.h" | 74 #include "ppapi/thunk/enter.h" |
| 74 #include "ppapi/thunk/ppb_tcp_server_socket_private_api.h" | 75 #include "ppapi/thunk/ppb_tcp_server_socket_private_api.h" |
| 75 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" | 76 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCursorInfo.h" |
| 76 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" | 77 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
| 77 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserComplet
ion.h" | 78 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserComplet
ion.h" |
| 78 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams.
h" | 79 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFileChooserParams.
h" |
| 79 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
| 80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" | 81 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 // be out of process. | 294 // be out of process. |
| 294 const PepperPluginInfo* info = | 295 const PepperPluginInfo* info = |
| 295 PepperPluginRegistry::GetInstance()->GetInfoForPlugin(webplugin_info); | 296 PepperPluginRegistry::GetInstance()->GetInfoForPlugin(webplugin_info); |
| 296 if (!info) { | 297 if (!info) { |
| 297 *pepper_plugin_was_registered = false; | 298 *pepper_plugin_was_registered = false; |
| 298 return scoped_refptr<webkit::ppapi::PluginModule>(); | 299 return scoped_refptr<webkit::ppapi::PluginModule>(); |
| 299 } else if (!info->is_out_of_process) { | 300 } else if (!info->is_out_of_process) { |
| 300 // In-process plugin not preloaded, it probably couldn't be initialized. | 301 // In-process plugin not preloaded, it probably couldn't be initialized. |
| 301 return scoped_refptr<webkit::ppapi::PluginModule>(); | 302 return scoped_refptr<webkit::ppapi::PluginModule>(); |
| 302 } | 303 } |
| 304 ppapi::PpapiPermissions permissions(info->permissions); |
| 303 | 305 |
| 304 // Out of process: have the browser start the plugin process for us. | 306 // Out of process: have the browser start the plugin process for us. |
| 305 IPC::ChannelHandle channel_handle; | 307 IPC::ChannelHandle channel_handle; |
| 306 int plugin_child_id = 0; | 308 int plugin_child_id = 0; |
| 307 render_view_->Send(new ViewHostMsg_OpenChannelToPepperPlugin( | 309 render_view_->Send(new ViewHostMsg_OpenChannelToPepperPlugin( |
| 308 path, &channel_handle, &plugin_child_id)); | 310 path, &channel_handle, &plugin_child_id)); |
| 309 if (channel_handle.name.empty()) { | 311 if (channel_handle.name.empty()) { |
| 310 // Couldn't be initialized. | 312 // Couldn't be initialized. |
| 311 return scoped_refptr<webkit::ppapi::PluginModule>(); | 313 return scoped_refptr<webkit::ppapi::PluginModule>(); |
| 312 } | 314 } |
| 313 | 315 |
| 314 scoped_refptr<PepperHungPluginFilter> hung_filter( | 316 scoped_refptr<PepperHungPluginFilter> hung_filter( |
| 315 new PepperHungPluginFilter(path, render_view_->routing_id(), | 317 new PepperHungPluginFilter(path, render_view_->routing_id(), |
| 316 plugin_child_id)); | 318 plugin_child_id)); |
| 317 | 319 |
| 318 // Create a new HostDispatcher for the proxying, and hook it to a new | 320 // Create a new HostDispatcher for the proxying, and hook it to a new |
| 319 // PluginModule. Note that AddLiveModule must be called before any early | 321 // PluginModule. Note that AddLiveModule must be called before any early |
| 320 // returns since the module's destructor will remove itself. | 322 // returns since the module's destructor will remove itself. |
| 321 module = new webkit::ppapi::PluginModule(info->name, path, | 323 module = new webkit::ppapi::PluginModule( |
| 322 PepperPluginRegistry::GetInstance()); | 324 info->name, path, |
| 325 PepperPluginRegistry::GetInstance(), |
| 326 permissions); |
| 323 PepperPluginRegistry::GetInstance()->AddLiveModule(path, module); | 327 PepperPluginRegistry::GetInstance()->AddLiveModule(path, module); |
| 324 scoped_ptr<HostDispatcherWrapper> dispatcher(new HostDispatcherWrapper); | 328 scoped_ptr<HostDispatcherWrapper> dispatcher(new HostDispatcherWrapper); |
| 325 if (!dispatcher->Init( | 329 if (!dispatcher->Init( |
| 326 channel_handle, | 330 channel_handle, |
| 327 module->pp_module(), | 331 module->pp_module(), |
| 328 webkit::ppapi::PluginModule::GetLocalGetInterfaceFunc(), | 332 webkit::ppapi::PluginModule::GetLocalGetInterfaceFunc(), |
| 329 GetPreferences(), | 333 GetPreferences(), |
| 330 hung_filter.get())) | 334 hung_filter.get())) |
| 331 return scoped_refptr<webkit::ppapi::PluginModule>(); | 335 return scoped_refptr<webkit::ppapi::PluginModule>(); |
| 332 module->InitAsProxied(dispatcher.release()); | 336 module->InitAsProxied(dispatcher.release()); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 346 | 350 |
| 347 FilePath path(kBrowserPluginPath); | 351 FilePath path(kBrowserPluginPath); |
| 348 scoped_refptr<PepperHungPluginFilter> hung_filter( | 352 scoped_refptr<PepperHungPluginFilter> hung_filter( |
| 349 new PepperHungPluginFilter(path, | 353 new PepperHungPluginFilter(path, |
| 350 render_view_->routing_id(), | 354 render_view_->routing_id(), |
| 351 guest_process_id)); | 355 guest_process_id)); |
| 352 // Create a new HostDispatcher for the proxying, and hook it to a new | 356 // Create a new HostDispatcher for the proxying, and hook it to a new |
| 353 // PluginModule. | 357 // PluginModule. |
| 354 module = new webkit::ppapi::PluginModule(kBrowserPluginName, | 358 module = new webkit::ppapi::PluginModule(kBrowserPluginName, |
| 355 path, | 359 path, |
| 356 registry); | 360 registry, |
| 361 ppapi::PpapiPermissions()); |
| 357 RenderThreadImpl::current()->browser_plugin_registry()->AddModule( | 362 RenderThreadImpl::current()->browser_plugin_registry()->AddModule( |
| 358 guest_process_id, module); | 363 guest_process_id, module); |
| 359 scoped_ptr<HostDispatcherWrapper> dispatcher(new HostDispatcherWrapper); | 364 scoped_ptr<HostDispatcherWrapper> dispatcher(new HostDispatcherWrapper); |
| 360 if (!dispatcher->Init( | 365 if (!dispatcher->Init( |
| 361 channel_handle, | 366 channel_handle, |
| 362 module->pp_module(), | 367 module->pp_module(), |
| 363 webkit::ppapi::PluginModule::GetLocalGetInterfaceFunc(), | 368 webkit::ppapi::PluginModule::GetLocalGetInterfaceFunc(), |
| 364 GetPreferences(), | 369 GetPreferences(), |
| 365 hung_filter.get())) | 370 hung_filter.get())) |
| 366 return scoped_refptr<webkit::ppapi::PluginModule>(); | 371 return scoped_refptr<webkit::ppapi::PluginModule>(); |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 if (last_mouse_event_target_ == instance) | 664 if (last_mouse_event_target_ == instance) |
| 660 last_mouse_event_target_ = NULL; | 665 last_mouse_event_target_ = NULL; |
| 661 if (focused_plugin_ == instance) | 666 if (focused_plugin_ == instance) |
| 662 PluginFocusChanged(instance, false); | 667 PluginFocusChanged(instance, false); |
| 663 } | 668 } |
| 664 | 669 |
| 665 scoped_ptr< ::ppapi::thunk::ResourceCreationAPI> | 670 scoped_ptr< ::ppapi::thunk::ResourceCreationAPI> |
| 666 PepperPluginDelegateImpl::CreateResourceCreationAPI( | 671 PepperPluginDelegateImpl::CreateResourceCreationAPI( |
| 667 webkit::ppapi::PluginInstance* instance) { | 672 webkit::ppapi::PluginInstance* instance) { |
| 668 return scoped_ptr< ::ppapi::thunk::ResourceCreationAPI>( | 673 return scoped_ptr< ::ppapi::thunk::ResourceCreationAPI>( |
| 669 new PepperInProcessResourceCreation(render_view_, instance)); | 674 new PepperInProcessResourceCreation(render_view_, instance, |
| 675 instance->module()->permissions())); |
| 670 } | 676 } |
| 671 | 677 |
| 672 SkBitmap* PepperPluginDelegateImpl::GetSadPluginBitmap() { | 678 SkBitmap* PepperPluginDelegateImpl::GetSadPluginBitmap() { |
| 673 return GetContentClient()->renderer()->GetSadPluginBitmap(); | 679 return GetContentClient()->renderer()->GetSadPluginBitmap(); |
| 674 } | 680 } |
| 675 | 681 |
| 676 WebKit::WebPlugin* PepperPluginDelegateImpl::CreatePluginReplacement( | 682 WebKit::WebPlugin* PepperPluginDelegateImpl::CreatePluginReplacement( |
| 677 const FilePath& file_path) { | 683 const FilePath& file_path) { |
| 678 return GetContentClient()->renderer()->CreatePluginReplacement( | 684 return GetContentClient()->renderer()->CreatePluginReplacement( |
| 679 render_view_, file_path); | 685 render_view_, file_path); |
| (...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1729 else | 1735 else |
| 1730 return render_view_->mouse_lock_dispatcher(); | 1736 return render_view_->mouse_lock_dispatcher(); |
| 1731 } | 1737 } |
| 1732 | 1738 |
| 1733 webkit_glue::ClipboardClient* | 1739 webkit_glue::ClipboardClient* |
| 1734 PepperPluginDelegateImpl::CreateClipboardClient() const { | 1740 PepperPluginDelegateImpl::CreateClipboardClient() const { |
| 1735 return new RendererClipboardClient; | 1741 return new RendererClipboardClient; |
| 1736 } | 1742 } |
| 1737 | 1743 |
| 1738 } // namespace content | 1744 } // namespace content |
| OLD | NEW |