| Index: ipc/ipc_sync_channel.cc
|
| diff --git a/ipc/ipc_sync_channel.cc b/ipc/ipc_sync_channel.cc
|
| index 0e0018c7eae74745b91ade4655975278568d57bb..a7ed230e53cdeec5ab1e43f90701edb0c3662c78 100644
|
| --- a/ipc/ipc_sync_channel.cc
|
| +++ b/ipc/ipc_sync_channel.cc
|
| @@ -404,19 +404,27 @@ base::WaitableEventWatcher::EventCallback
|
| return base::Bind(&SyncChannel::SyncContext::OnWaitableEventSignaled, this);
|
| }
|
|
|
| -SyncChannel::SyncChannel(
|
| +// static
|
| +scoped_ptr<SyncChannel> SyncChannel::Create(
|
| const IPC::ChannelHandle& channel_handle,
|
| Channel::Mode mode,
|
| Listener* listener,
|
| base::SingleThreadTaskRunner* ipc_task_runner,
|
| bool create_pipe_now,
|
| - WaitableEvent* shutdown_event)
|
| - : ChannelProxy(new SyncContext(listener, ipc_task_runner, shutdown_event)) {
|
| - // The current (listener) thread must be distinct from the IPC thread, or else
|
| - // sending synchronous messages will deadlock.
|
| - DCHECK_NE(ipc_task_runner, base::ThreadTaskRunnerHandle::Get());
|
| - ChannelProxy::Init(channel_handle, mode, create_pipe_now);
|
| - StartWatching();
|
| + base::WaitableEvent* shutdown_event) {
|
| + scoped_ptr<SyncChannel> channel =
|
| + Create(listener, ipc_task_runner, shutdown_event);
|
| + channel->Init(channel_handle, mode, create_pipe_now);
|
| + return channel.Pass();
|
| +}
|
| +
|
| +// static
|
| +scoped_ptr<SyncChannel> SyncChannel::Create(
|
| + Listener* listener,
|
| + base::SingleThreadTaskRunner* ipc_task_runner,
|
| + WaitableEvent* shutdown_event) {
|
| + return make_scoped_ptr(
|
| + new SyncChannel(listener, ipc_task_runner, shutdown_event));
|
| }
|
|
|
| SyncChannel::SyncChannel(
|
|
|