diff options
author | steveblock@chromium.org <steveblock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-20 11:57:36 +0000 |
---|---|---|
committer | steveblock@chromium.org <steveblock@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-20 11:57:36 +0000 |
commit | 4a9e852a691dbd67d8c178744e335a23330d253a (patch) | |
tree | b50155b7e89479c02f3e47fa16afc6d3b1cee85e /content | |
parent | b5be69a9c65e5a8e9c9912cb48336b069b67ed59 (diff) | |
download | chromium_src-4a9e852a691dbd67d8c178744e335a23330d253a.zip chromium_src-4a9e852a691dbd67d8c178744e335a23330d253a.tar.gz chromium_src-4a9e852a691dbd67d8c178744e335a23330d253a.tar.bz2 |
Add shutdown event argument to NPChannelBase::GetChannel()
Currently NPChannelBase uses ChildProcess::current()->GetShutDownEvent() as the
shutdown event for its underlying SyncChannel. This change allows child classes
to specify their own shutdown event.
This is required to allow NPChannelBase to be used between the renderer and
non-child processes.
This change is refactoring only and introduces no change in behaviour.
BUG=96703
Review URL: http://codereview.chromium.org/7971006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101948 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/common/np_channel_base.cc | 10 | ||||
-rw-r--r-- | content/common/np_channel_base.h | 5 | ||||
-rw-r--r-- | content/plugin/plugin_channel.cc | 8 | ||||
-rw-r--r-- | content/plugin/plugin_channel.h | 3 | ||||
-rw-r--r-- | content/renderer/plugin_channel_host.cc | 10 | ||||
-rw-r--r-- | content/renderer/plugin_channel_host.h | 3 |
6 files changed, 24 insertions, 15 deletions
diff --git a/content/common/np_channel_base.cc b/content/common/np_channel_base.cc index 6ba5083..e5f8f02 100644 --- a/content/common/np_channel_base.cc +++ b/content/common/np_channel_base.cc @@ -10,7 +10,6 @@ #include "base/hash_tables.h" #include "base/lazy_instance.h" #include "base/string_number_conversions.h" -#include "content/common/child_process.h" #include "ipc/ipc_sync_message.h" #if defined(OS_POSIX) @@ -29,7 +28,7 @@ static int next_pipe_id = 0; NPChannelBase* NPChannelBase::GetChannel( const IPC::ChannelHandle& channel_handle, IPC::Channel::Mode mode, ChannelFactory factory, base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now) { + bool create_pipe_now, base::WaitableEvent* shutdown_event) { scoped_refptr<NPChannelBase> channel; std::string channel_key = channel_handle.name; ChannelMap::const_iterator iter = g_channels_.find(channel_key); @@ -48,7 +47,7 @@ NPChannelBase* NPChannelBase::GetChannel( channel->channel_handle_.name.append(base::IntToString(next_pipe_id++)); } channel->mode_ = mode; - if (channel->Init(ipc_message_loop, create_pipe_now)) { + if (channel->Init(ipc_message_loop, create_pipe_now, shutdown_event)) { g_channels_[channel_key] = channel; } else { channel = NULL; @@ -112,10 +111,11 @@ NPObjectBase* NPChannelBase::GetNPObjectListenerForRoute(int route_id) { } bool NPChannelBase::Init(base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now) { + bool create_pipe_now, + base::WaitableEvent* shutdown_event) { channel_.reset(new IPC::SyncChannel( channel_handle_, mode_, this, ipc_message_loop, create_pipe_now, - ChildProcess::current()->GetShutDownEvent())); + shutdown_event)); channel_valid_ = true; return true; } diff --git a/content/common/np_channel_base.h b/content/common/np_channel_base.h index 9726f6d..5f0eac5 100644 --- a/content/common/np_channel_base.h +++ b/content/common/np_channel_base.h @@ -115,7 +115,7 @@ class NPChannelBase : public IPC::Channel::Listener, static NPChannelBase* GetChannel( const IPC::ChannelHandle& channel_handle, IPC::Channel::Mode mode, ChannelFactory factory, base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now); + bool create_pipe_now, base::WaitableEvent* shutdown_event); // Sends a message to all instances. static void Broadcast(IPC::Message* message); @@ -138,7 +138,8 @@ class NPChannelBase : public IPC::Channel::Listener, } virtual bool Init(base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now); + bool create_pipe_now, + base::WaitableEvent* shutdown_event); scoped_ptr<IPC::SyncChannel> channel_; diff --git a/content/plugin/plugin_channel.cc b/content/plugin/plugin_channel.cc index 6d428cf..a9a12a6 100644 --- a/content/plugin/plugin_channel.cc +++ b/content/plugin/plugin_channel.cc @@ -148,7 +148,8 @@ PluginChannel* PluginChannel::GetPluginChannel( IPC::Channel::MODE_SERVER, ClassFactory, ipc_message_loop, - false)); + false, + ChildProcess::current()->GetShutDownEvent())); if (channel) channel->renderer_id_ = renderer_id; @@ -324,8 +325,9 @@ void PluginChannel::CleanUp() { } bool PluginChannel::Init(base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now) { - if (!NPChannelBase::Init(ipc_message_loop, create_pipe_now)) + bool create_pipe_now, + base::WaitableEvent* shutdown_event) { + if (!NPChannelBase::Init(ipc_message_loop, create_pipe_now, shutdown_event)) return false; channel_->AddFilter(filter_.get()); diff --git a/content/plugin/plugin_channel.h b/content/plugin/plugin_channel.h index 87afb8c..d2d7f0b 100644 --- a/content/plugin/plugin_channel.h +++ b/content/plugin/plugin_channel.h @@ -65,7 +65,8 @@ class PluginChannel : public NPChannelBase { // Overrides NPChannelBase::Init. virtual bool Init(base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now); + bool create_pipe_now, + base::WaitableEvent* shutdown_event); private: class MessageFilter; diff --git a/content/renderer/plugin_channel_host.cc b/content/renderer/plugin_channel_host.cc index b41db85..69ad605 100644 --- a/content/renderer/plugin_channel_host.cc +++ b/content/renderer/plugin_channel_host.cc @@ -4,6 +4,7 @@ #include "content/renderer/plugin_channel_host.h" +#include "content/common/child_process.h" #include "content/common/npobject_base.h" #include "content/common/plugin_messages.h" @@ -76,7 +77,8 @@ PluginChannelHost* PluginChannelHost::GetPluginChannelHost( IPC::Channel::MODE_CLIENT, ClassFactory, ipc_message_loop, - true)); + true, + ChildProcess::current()->GetShutDownEvent())); return result; } @@ -87,8 +89,10 @@ PluginChannelHost::~PluginChannelHost() { } bool PluginChannelHost::Init(base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now) { - bool ret = NPChannelBase::Init(ipc_message_loop, create_pipe_now); + bool create_pipe_now, + base::WaitableEvent* shutdown_event) { + bool ret = + NPChannelBase::Init(ipc_message_loop, create_pipe_now, shutdown_event); is_listening_filter_ = new IsListeningFilter; channel_->AddFilter(is_listening_filter_); return ret; diff --git a/content/renderer/plugin_channel_host.h b/content/renderer/plugin_channel_host.h index a12fca6..38e0bf7 100644 --- a/content/renderer/plugin_channel_host.h +++ b/content/renderer/plugin_channel_host.h @@ -22,7 +22,8 @@ class PluginChannelHost : public NPChannelBase { base::MessageLoopProxy* ipc_message_loop); virtual bool Init(base::MessageLoopProxy* ipc_message_loop, - bool create_pipe_now); + bool create_pipe_now, + base::WaitableEvent* shutdown_event); virtual int GenerateRouteID(); |