summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-07 16:53:06 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-12-07 16:53:06 +0000
commite0ba93971402fee8e7b7cb1cbd2259a37d338760 (patch)
tree4af1d741d0b1b89f27f4c9225d4df6568ffd6b85 /ppapi/proxy
parent8b21080ae97787dfe73068014bce3c9e0343eb36 (diff)
downloadchromium_src-e0ba93971402fee8e7b7cb1cbd2259a37d338760.zip
chromium_src-e0ba93971402fee8e7b7cb1cbd2259a37d338760.tar.gz
chromium_src-e0ba93971402fee8e7b7cb1cbd2259a37d338760.tar.bz2
Make webkit/glue/plugins no longer depend on ppapi/proxy directly. This causes
things that use webkit but otherwise don't need IPC to include the IPC directory. This patch moves the set-up of the proxy into the renderer. I also did a lot of clean-up of the initialization and it seems much nicer now. BUG=63684 TEST=manual PPAPI proxy testing Review URL: http://codereview.chromium.org/5592005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68482 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy')
-rw-r--r--ppapi/proxy/host_dispatcher.cc12
-rw-r--r--ppapi/proxy/host_dispatcher.h5
2 files changed, 15 insertions, 2 deletions
diff --git a/ppapi/proxy/host_dispatcher.cc b/ppapi/proxy/host_dispatcher.cc
index fd9801c..6e7a1f4 100644
--- a/ppapi/proxy/host_dispatcher.cc
+++ b/ppapi/proxy/host_dispatcher.cc
@@ -7,6 +7,7 @@
#include <map>
#include "base/logging.h"
+#include "ppapi/c/dev/ppb_var_deprecated.h"
#include "ppapi/proxy/host_var_serialization_rules.h"
#include "ppapi/proxy/ppapi_messages.h"
@@ -21,10 +22,13 @@ InstanceToDispatcherMap* g_instance_to_dispatcher = NULL;
} // namespace
HostDispatcher::HostDispatcher(base::ProcessHandle remote_process_handle,
- const PPB_Var_Deprecated* var_interface,
PP_Module module,
GetInterfaceFunc local_get_interface)
: Dispatcher(remote_process_handle, local_get_interface) {
+ set_pp_module(module);
+ const PPB_Var_Deprecated* var_interface =
+ static_cast<const PPB_Var_Deprecated*>(
+ local_get_interface(PPB_VAR_DEPRECATED_INTERFACE));
SetSerializationRules(new HostVarSerializationRules(var_interface, module));
}
@@ -33,6 +37,12 @@ HostDispatcher::~HostDispatcher() {
Send(new PpapiMsg_Shutdown());
}
+bool HostDispatcher::InitializeModule() {
+ bool init_result = false;
+ Send(new PpapiMsg_InitializeModule(pp_module(), &init_result));
+ return init_result;
+}
+
// static
HostDispatcher* HostDispatcher::GetForInstance(PP_Instance instance) {
if (!g_instance_to_dispatcher)
diff --git a/ppapi/proxy/host_dispatcher.h b/ppapi/proxy/host_dispatcher.h
index f968652..f5b91b4 100644
--- a/ppapi/proxy/host_dispatcher.h
+++ b/ppapi/proxy/host_dispatcher.h
@@ -38,11 +38,14 @@ class HostDispatcher : public Dispatcher {
//
// You must call Dispatcher::InitWithChannel after the constructor.
HostDispatcher(base::ProcessHandle host_process_handle,
- const PPB_Var_Deprecated* var_interface,
PP_Module module,
GetInterfaceFunc local_get_interface);
~HostDispatcher();
+ // Calls the plugin's PPP_InitializeModule function and returns true if
+ // the call succeeded.
+ bool InitializeModule();
+
// The host side maintains a mapping from PP_Instance to Dispatcher so
// that we can send the messages to the right channel.
static HostDispatcher* GetForInstance(PP_Instance instance);