diff --git a/ppapi/proxy/broker_dispatcher.cc b/ppapi/proxy/broker_dispatcher.cc index 6095679a16a942..7187852ba26d86 100644 --- a/ppapi/proxy/broker_dispatcher.cc +++ b/ppapi/proxy/broker_dispatcher.cc @@ -24,9 +24,8 @@ bool BrokerDispatcher::InitBrokerWithChannel( base::ProcessId peer_pid, const IPC::ChannelHandle& channel_handle, bool is_client) { - InitWithChannel(delegate, peer_pid); - ConnectChannel(channel_handle, is_client); - return true; + return ProxyChannel::InitWithChannel(delegate, peer_pid, channel_handle, + is_client); } bool BrokerDispatcher::OnMessageReceived(const IPC::Message& msg) { diff --git a/ppapi/proxy/host_dispatcher.cc b/ppapi/proxy/host_dispatcher.cc index 3dfa25a29a0553..8f3833f5ddff7f 100644 --- a/ppapi/proxy/host_dispatcher.cc +++ b/ppapi/proxy/host_dispatcher.cc @@ -91,9 +91,10 @@ bool HostDispatcher::InitHostWithChannel( const IPC::ChannelHandle& channel_handle, bool is_client, const ppapi::Preferences& preferences) { - InitWithChannel(delegate, peer_pid); + if (!Dispatcher::InitWithChannel(delegate, peer_pid, channel_handle, + is_client)) + return false; AddIOThreadMessageFilter(sync_status_.get()); - ConnectChannel(channel_handle, is_client); Send(new PpapiMsg_SetPreferences(preferences)); return true; diff --git a/ppapi/proxy/plugin_dispatcher.cc b/ppapi/proxy/plugin_dispatcher.cc index f99ec9e3673501..6cd0ab4151dff6 100644 --- a/ppapi/proxy/plugin_dispatcher.cc +++ b/ppapi/proxy/plugin_dispatcher.cc @@ -161,7 +161,9 @@ bool PluginDispatcher::InitPluginWithChannel( base::ProcessId peer_pid, const IPC::ChannelHandle& channel_handle, bool is_client) { - InitWithChannel(delegate, peer_pid); + if (!Dispatcher::InitWithChannel(delegate, peer_pid, channel_handle, + is_client)) + return false; plugin_delegate_ = delegate; plugin_dispatcher_id_ = plugin_delegate_->Register(this); @@ -174,7 +176,6 @@ bool PluginDispatcher::InitPluginWithChannel( new PluginMessageFilter( delegate->GetGloballySeenInstanceIDSet(), PluginGlobals::Get()->resource_reply_thread_registrar())); - ConnectChannel(channel_handle, is_client); return true; } diff --git a/ppapi/proxy/proxy_channel.cc b/ppapi/proxy/proxy_channel.cc index 162340153e955f..b7f8a826ce3245 100644 --- a/ppapi/proxy/proxy_channel.cc +++ b/ppapi/proxy/proxy_channel.cc @@ -25,19 +25,18 @@ ProxyChannel::~ProxyChannel() { DVLOG(1) << "ProxyChannel::~ProxyChannel()"; } -void ProxyChannel::InitWithChannel(Delegate* delegate, - base::ProcessId peer_pid) { +bool ProxyChannel::InitWithChannel(Delegate* delegate, + base::ProcessId peer_pid, + const IPC::ChannelHandle& channel_handle, + bool is_client) { delegate_ = delegate; peer_pid_ = peer_pid; - channel_.reset(new IPC::SyncChannel(this, delegate->GetIPCMessageLoop(), - delegate->GetShutdownEvent())); -} - -void ProxyChannel::ConnectChannel(const IPC::ChannelHandle& channel_handle, - bool is_client) { IPC::Channel::Mode mode = is_client ? IPC::Channel::MODE_CLIENT : IPC::Channel::MODE_SERVER; - channel_->Init(channel_handle, mode, true); + channel_.reset(new IPC::SyncChannel(channel_handle, mode, this, + delegate->GetIPCMessageLoop(), true, + delegate->GetShutdownEvent())); + return true; } void ProxyChannel::InitWithTestSink(IPC::TestSink* test_sink) { diff --git a/ppapi/proxy/proxy_channel.h b/ppapi/proxy/proxy_channel.h index 64b8a77bf318c7..6c9f1f67f74963 100644 --- a/ppapi/proxy/proxy_channel.h +++ b/ppapi/proxy/proxy_channel.h @@ -53,10 +53,10 @@ class PPAPI_PROXY_EXPORT ProxyChannel virtual ~ProxyChannel(); - // Alternative to InitWithChannel()/ConnectChannel() for unit tests that want - // to send all messages sent via this channel to the given test sink. The - // test sink must outlive this class. In this case, the peer PID will be the - // current process ID. + // Alternative to InitWithChannel() for unit tests that want to send all + // messages sent via this channel to the given test sink. The test sink + // must outlive this class. In this case, the peer PID will be the current + // process ID. void InitWithTestSink(IPC::TestSink* test_sink); // Shares a file handle (HANDLE / file descriptor) with the remote side. It @@ -87,14 +87,13 @@ class PPAPI_PROXY_EXPORT ProxyChannel protected: explicit ProxyChannel(); - // You must call this function before anything else. + // You must call this function before anything else. Returns true on success. // The delegate pointer must outlive this class, ownership is not // transferred. - void InitWithChannel(Delegate* delegate, base::ProcessId peer_pid); - - // You must call this function after InitWithChannel(), and after adding any - // desired filters to the underlying channel, but before anything else. - void ConnectChannel(const IPC::ChannelHandle& channel_handle, bool is_client); + virtual bool InitWithChannel(Delegate* delegate, + base::ProcessId peer_pid, + const IPC::ChannelHandle& channel_handle, + bool is_client); ProxyChannel::Delegate* delegate() const { return delegate_;