Chromium Code Reviews| Index: content/renderer/pepper/pepper_in_process_resource_creation.cc |
| diff --git a/content/renderer/pepper/pepper_in_process_resource_creation.cc b/content/renderer/pepper/pepper_in_process_resource_creation.cc |
| index 19eac81d3879683f1793c03e9ea17948bcf3ced5..f3bf25e505a42147bc546f0ee325120fa7a2e3d8 100644 |
| --- a/content/renderer/pepper/pepper_in_process_resource_creation.cc |
| +++ b/content/renderer/pepper/pepper_in_process_resource_creation.cc |
| @@ -7,8 +7,9 @@ |
| #include "base/bind.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/message_loop.h" |
| -#include "content/renderer/pepper/content_renderer_pepper_host_factory.h" |
| #include "content/renderer/render_view_impl.h" |
| +#include "content/renderer/pepper/renderer_ppapi_host_impl.h" |
| +#include "content/renderer/pepper/pepper_in_process_router.h" |
|
raymes
2012/07/30 17:23:37
Order is wrong
|
| #include "ipc/ipc_message.h" |
| #include "ipc/ipc_message_macros.h" |
| #include "ppapi/host/ppapi_host.h" |
| @@ -25,131 +26,13 @@ |
| namespace content { |
| -class PepperInProcessResourceCreation::PluginToHostRouter |
| - : public IPC::Sender { |
| - public: |
| - PluginToHostRouter(RenderViewImpl* render_view, |
| - PepperInstanceStateAccessor* state, |
| - IPC::Sender* host_to_plugin_sender, |
| - const ppapi::PpapiPermissions& perms); |
| - virtual ~PluginToHostRouter() {} |
| - |
| - ppapi::host::PpapiHost& host() { return host_; } |
| - |
| - // Sender implementation. |
| - virtual bool Send(IPC::Message* msg) OVERRIDE; |
| - |
| - private: |
| - void DoSend(IPC::Message* msg); |
| - |
| - base::WeakPtrFactory<PluginToHostRouter> weak_factory_; |
| - |
| - ContentRendererPepperHostFactory factory_; |
| - ppapi::host::PpapiHost host_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(PluginToHostRouter); |
| -}; |
| - |
| -PepperInProcessResourceCreation::PluginToHostRouter::PluginToHostRouter( |
| - RenderViewImpl* render_view, |
| - PepperInstanceStateAccessor* state, |
| - IPC::Sender* host_to_plugin_sender, |
| - const ppapi::PpapiPermissions& perms) |
| - : weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
| - factory_(render_view, perms, state), |
| - host_(host_to_plugin_sender, &factory_, perms) { |
| -} |
| - |
| -bool PepperInProcessResourceCreation::PluginToHostRouter::Send( |
| - IPC::Message* msg) { |
| - // Don't directly call into the message handler to avoid reentrancy. The IPC |
| - // systen assumes everything is executed from the message loop, so emulate |
| - // the same thing for in-process. |
| - MessageLoop::current()->PostTask(FROM_HERE, |
| - base::Bind(&PluginToHostRouter::DoSend, weak_factory_.GetWeakPtr(), |
| - base::Owned(msg))); |
| - return true; |
| -} |
| - |
| -void PepperInProcessResourceCreation::PluginToHostRouter::DoSend( |
| - IPC::Message* msg) { |
| - host_.OnMessageReceived(*msg); |
| -} |
| - |
| -// HostToPluginRouter --------------------------------------------------------- |
| - |
| -class PepperInProcessResourceCreation::HostToPluginRouter |
| - : public IPC::Sender { |
| - public: |
| - HostToPluginRouter(); |
| - virtual ~HostToPluginRouter() {} |
| - |
| - // Sender implementation. |
| - virtual bool Send(IPC::Message* msg) OVERRIDE; |
| - |
| - private: |
| - void DispatchMsg(IPC::Message* msg); |
| - |
| - void OnMsgResourceReply( |
| - const ppapi::proxy::ResourceMessageReplyParams& reply_params, |
| - const IPC::Message& nested_msg); |
| - |
| - base::WeakPtrFactory<HostToPluginRouter> weak_factory_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(HostToPluginRouter); |
| -}; |
| - |
| -PepperInProcessResourceCreation::HostToPluginRouter::HostToPluginRouter() |
| - : weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
| -} |
| - |
| -bool PepperInProcessResourceCreation::HostToPluginRouter::Send( |
| - IPC::Message* msg) { |
| - // As in the PluginToHostRouter, dispatch from the message loop. |
| - MessageLoop::current()->PostTask(FROM_HERE, |
| - base::Bind(&HostToPluginRouter::DispatchMsg, |
| - weak_factory_.GetWeakPtr(), |
| - base::Owned(msg))); |
| - return true; |
| -} |
| - |
| -void PepperInProcessResourceCreation::HostToPluginRouter::DispatchMsg( |
| - IPC::Message* msg) { |
| - // Emulate the proxy by dispatching the relevant message here. |
| - IPC_BEGIN_MESSAGE_MAP(HostToPluginRouter, *msg) |
| - IPC_MESSAGE_HANDLER(PpapiPluginMsg_ResourceReply, OnMsgResourceReply) |
| - IPC_END_MESSAGE_MAP() |
| -} |
| - |
| -void PepperInProcessResourceCreation::HostToPluginRouter::OnMsgResourceReply( |
| - const ppapi::proxy::ResourceMessageReplyParams& reply_params, |
| - const IPC::Message& nested_msg) { |
| - ppapi::Resource* resource = |
| - ppapi::PpapiGlobals::Get()->GetResourceTracker()->GetResource( |
| - reply_params.pp_resource()); |
| - if (!resource) { |
| - // The resource could have been destroyed while the async processing was |
| - // pending. Just drop the message. |
| - return; |
| - } |
| - resource->OnReplyReceived(reply_params.sequence(), reply_params.result(), |
| - nested_msg); |
| -} |
| - |
| // PepperInProcessResourceCreation -------------------------------------------- |
| PepperInProcessResourceCreation::PepperInProcessResourceCreation( |
| - RenderViewImpl* render_view, |
| - webkit::ppapi::PluginInstance* instance, |
| - const ppapi::PpapiPermissions& perms) |
| + RendererPpapiHostImpl* host_impl, |
| + webkit::ppapi::PluginInstance* instance) |
| : ResourceCreationImpl(instance), |
| - instance_state_(instance->module()), |
| - host_to_plugin_router_(new HostToPluginRouter), |
| - plugin_to_host_router_( |
| - new PluginToHostRouter(render_view, &instance_state_, |
| - host_to_plugin_router_.get(), |
| - perms)) { |
| - render_view->PpapiPluginCreated(&plugin_to_host_router_->host()); |
| + host_impl_(host_impl) { |
| } |
| PepperInProcessResourceCreation::~PepperInProcessResourceCreation() { |
| @@ -160,7 +43,7 @@ PP_Resource PepperInProcessResourceCreation::CreateFileChooser( |
| PP_FileChooserMode_Dev mode, |
| const char* accept_types) { |
| return (new ppapi::proxy::FileChooserResource( |
| - plugin_to_host_router_.get(), |
| + host_impl_->in_process_router()->GetPluginConnection(), |
| instance, mode, accept_types))->GetReference(); |
| } |