Index: content/renderer/pepper/pepper_plugin_delegate_impl.cc |
diff --git a/content/renderer/pepper/pepper_plugin_delegate_impl.cc b/content/renderer/pepper/pepper_plugin_delegate_impl.cc |
index 18c40a97c81f85a89243f3ffb7f4636b1719e784..a42c467f33660bce28fa27f796e9e3a40ea56fd1 100644 |
--- a/content/renderer/pepper/pepper_plugin_delegate_impl.cc |
+++ b/content/renderer/pepper/pepper_plugin_delegate_impl.cc |
@@ -41,9 +41,11 @@ |
#include "content/renderer/media/pepper_platform_video_decoder_impl.h" |
#include "content/renderer/p2p/p2p_transport_impl.h" |
#include "content/renderer/p2p/socket_dispatcher.h" |
+#include "content/renderer/pepper/content_renderer_pepper_host_factory.h" |
#include "content/renderer/pepper/pepper_broker_impl.h" |
#include "content/renderer/pepper/pepper_device_enumeration_event_handler.h" |
#include "content/renderer/pepper/pepper_hung_plugin_filter.h" |
+#include "content/renderer/pepper/pepper_in_process_resource_creation.h" |
#include "content/renderer/pepper/pepper_platform_audio_input_impl.h" |
#include "content/renderer/pepper/pepper_platform_audio_output_impl.h" |
#include "content/renderer/pepper/pepper_platform_context_3d_impl.h" |
@@ -62,6 +64,7 @@ |
#include "ppapi/c/dev/pp_video_dev.h" |
#include "ppapi/c/pp_errors.h" |
#include "ppapi/c/private/ppb_flash.h" |
+#include "ppapi/host/ppapi_host.h" |
#include "ppapi/proxy/host_dispatcher.h" |
#include "ppapi/proxy/pepper_file_messages.h" |
#include "ppapi/proxy/ppapi_messages.h" |
@@ -103,7 +106,10 @@ namespace { |
class HostDispatcherWrapper |
: public webkit::ppapi::PluginDelegate::OutOfProcessProxy { |
public: |
- HostDispatcherWrapper() {} |
+ HostDispatcherWrapper(RenderViewImpl* rv) |
+ : render_view_(rv), |
+ host_factory_(rv) { |
+ } |
virtual ~HostDispatcherWrapper() {} |
bool Init(const IPC::ChannelHandle& channel_handle, |
@@ -124,6 +130,9 @@ class HostDispatcherWrapper |
dispatcher_.reset(new ppapi::proxy::HostDispatcher( |
pp_module, local_get_interface, filter)); |
+ host_.reset(new ppapi::host::PpapiHost(dispatcher_.get(), &host_factory_)); |
+ dispatcher_->AddFilter(host_.get()); |
+ |
if (!dispatcher_->InitHostWithChannel(dispatcher_delegate_.get(), |
channel_handle, |
true, // Client. |
@@ -149,6 +158,11 @@ class HostDispatcherWrapper |
} |
private: |
+ RenderViewImpl* render_view_; |
+ ContentRendererPepperHostFactory host_factory_; |
+ |
+ scoped_ptr<ppapi::host::PpapiHost> host_; |
+ |
scoped_ptr<ppapi::proxy::HostDispatcher> dispatcher_; |
scoped_ptr<ppapi::proxy::ProxyChannel::Delegate> dispatcher_delegate_; |
}; |
@@ -256,7 +270,8 @@ PepperPluginDelegateImpl::CreatePepperPluginModule( |
module = new webkit::ppapi::PluginModule(info->name, path, |
PepperPluginRegistry::GetInstance()); |
PepperPluginRegistry::GetInstance()->AddLiveModule(path, module); |
- scoped_ptr<HostDispatcherWrapper> dispatcher(new HostDispatcherWrapper); |
+ scoped_ptr<HostDispatcherWrapper> dispatcher( |
+ new HostDispatcherWrapper(render_view_)); |
if (!dispatcher->Init( |
channel_handle, |
module->pp_module(), |
@@ -291,7 +306,8 @@ scoped_refptr<webkit::ppapi::PluginModule> |
registry); |
RenderThreadImpl::current()->browser_plugin_registry()->AddModule( |
guest_process_id, module); |
- scoped_ptr<HostDispatcherWrapper> dispatcher(new HostDispatcherWrapper); |
+ scoped_ptr<HostDispatcherWrapper> dispatcher( |
+ new HostDispatcherWrapper(render_view_)); |
if (!dispatcher->Init( |
channel_handle, |
module->pp_module(), |
@@ -597,6 +613,13 @@ void PepperPluginDelegateImpl::InstanceDeleted( |
PluginFocusChanged(instance, false); |
} |
+scoped_ptr< ::ppapi::thunk::ResourceCreationAPI> |
+PepperPluginDelegateImpl::CreateResourceCreationAPI( |
+ webkit::ppapi::PluginInstance* instance) { |
+ return scoped_ptr< ::ppapi::thunk::ResourceCreationAPI>( |
+ new PepperInProcessResourceCreation(render_view_, instance)); |
+} |
+ |
SkBitmap* PepperPluginDelegateImpl::GetSadPluginBitmap() { |
return GetContentClient()->renderer()->GetSadPluginBitmap(); |
} |