diff options
author | bbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-03 18:56:58 +0000 |
---|---|---|
committer | bbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-03 18:56:58 +0000 |
commit | 81e32e3b31de29ec7b82a444e9467a62e957a4f0 (patch) | |
tree | 2ed9a5627f199d7f9cf49e7ffe6d62a8cf0558a7 /webkit | |
parent | 3f69d6e61ffaed3aa654b43aa48c535702012ef6 (diff) | |
download | chromium_src-81e32e3b31de29ec7b82a444e9467a62e957a4f0.zip chromium_src-81e32e3b31de29ec7b82a444e9467a62e957a4f0.tar.gz chromium_src-81e32e3b31de29ec7b82a444e9467a62e957a4f0.tar.bz2 |
Change PluginInstance so it shuts down the NaCl Plugin when it uses the IPC PPAPI proxy.
BUG=116317
TEST=manual
Review URL: https://chromiumcodereview.appspot.com/10837086
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149885 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.cc | 7 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppapi_plugin_instance.h | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.cc b/webkit/plugins/ppapi/ppapi_plugin_instance.cc index 3aef548..f012793 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.cc +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.cc @@ -403,6 +403,8 @@ void PluginInstance::Delete() { // destructor of the instance object tries to use the instance. message_channel_->SetPassthroughObject(NULL); instance_interface_->DidDestroy(pp_instance()); + if (nacl_plugin_instance_interface_.get()) + nacl_plugin_instance_interface_->DidDestroy(pp_instance()); if (fullscreen_container_) { fullscreen_container_->Destroy(); @@ -2133,6 +2135,11 @@ PP_Var PluginInstance::GetPluginInstanceURL( } bool PluginInstance::ResetAsProxied() { + // Remember the existing instance interface, so we can call DidDestroy in + // our Delete() method. This will delete the NaCl plugin instance, which + // will shut down the NaCl process. + nacl_plugin_instance_interface_.reset(instance_interface_.release()); + base::Callback<const void*(const char*)> get_plugin_interface_func = base::Bind(&PluginModule::GetPluginInterface, module_.get()); PPP_Instance_Combined* ppp_instance_combined = diff --git a/webkit/plugins/ppapi/ppapi_plugin_instance.h b/webkit/plugins/ppapi/ppapi_plugin_instance.h index 048cce4..24eb715 100644 --- a/webkit/plugins/ppapi/ppapi_plugin_instance.h +++ b/webkit/plugins/ppapi/ppapi_plugin_instance.h @@ -506,6 +506,10 @@ class WEBKIT_PLUGINS_EXPORT PluginInstance : PluginDelegate* delegate_; scoped_refptr<PluginModule> module_; scoped_ptr< ::ppapi::PPP_Instance_Combined> instance_interface_; + // If this is the NaCl plugin, store its instance interface so we can shut + // it down properly when using the IPC-based PPAPI proxy. + // TODO(bbudge) Remove this when the proxy switch is complete. + scoped_ptr< ::ppapi::PPP_Instance_Combined> nacl_plugin_instance_interface_; PP_Instance pp_instance_; |