Add IPC::ChannelProxy::Create() and IPC::SyncChannel::Create()

This change replaces constructors with Create() methods of
ChannelProxy and SyncChannel. This open the possibility to introduce
polymorphism to these classes.

This is a revision of r274310 (https://codereview.chromium.org/301973003/)
in which I added bunch of Create*() method variants.
The chagne was reverted. This change no longer does it and just keeps
using Channel::Mode to specify the channel type.

TEST=none
BUG=377980
R=darin@chromium.org,jam@chromium.org

Review URL: https://codereview.chromium.org/310853003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275140 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: fca876a107b04f46eabeff93dbd09e3612d96c61
diff --git a/ipc/ipc_sync_channel_unittest.cc b/ipc/ipc_sync_channel_unittest.cc
index ca8d5d7..817f17e 100644
--- a/ipc/ipc_sync_channel_unittest.cc
+++ b/ipc/ipc_sync_channel_unittest.cc
@@ -151,12 +151,10 @@
   }
 
   virtual SyncChannel* CreateChannel() {
-    return new SyncChannel(channel_name_,
-                           mode_,
-                           this,
-                           ipc_thread_.message_loop_proxy().get(),
-                           true,
-                           &shutdown_event_);
+    scoped_ptr<SyncChannel> channel = SyncChannel::Create(
+        channel_name_, mode_, this, ipc_thread_.message_loop_proxy().get(),
+        true, &shutdown_event_);
+    return channel.release();
   }
 
   base::Thread* ListenerThread() {
@@ -324,9 +322,11 @@
   }
 
   virtual SyncChannel* CreateChannel() OVERRIDE {
-    SyncChannel* channel = new SyncChannel(
-        this, ipc_thread().message_loop_proxy().get(), shutdown_event());
-    channel->Init(channel_name(), mode(), create_pipe_now_);
+    SyncChannel* channel =
+        SyncChannel::Create(channel_name(), mode(), this,
+                            ipc_thread().message_loop_proxy().get(),
+                            create_pipe_now_,
+                            shutdown_event()).release();
     return channel;
   }
 
@@ -345,9 +345,11 @@
   }
 
   virtual SyncChannel* CreateChannel() OVERRIDE {
-    SyncChannel* channel = new SyncChannel(
-        this, ipc_thread().message_loop_proxy().get(), shutdown_event());
-    channel->Init(channel_name(), mode(), create_pipe_now_);
+    SyncChannel* channel =
+        SyncChannel::Create(channel_name(), mode(), this,
+                            ipc_thread().message_loop_proxy().get(),
+                            create_pipe_now_,
+                            shutdown_event()).release();
     return channel;
   }
 
@@ -1135,13 +1137,13 @@
     else
       LOG(ERROR) << "Send failed to dispatch incoming message on same channel";
 
-    non_restricted_channel_.reset(
-        new SyncChannel("non_restricted_channel",
-                        Channel::MODE_CLIENT,
-                        this,
-                        ipc_thread().message_loop_proxy().get(),
-                        true,
-                        shutdown_event()));
+    non_restricted_channel_ =
+        SyncChannel::Create("non_restricted_channel",
+                            IPC::Channel::MODE_CLIENT,
+                            this,
+                            ipc_thread().message_loop_proxy().get(),
+                            true,
+                            shutdown_event());
 
     server_->ListenerThread()->message_loop()->PostTask(
         FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 2));
@@ -1526,13 +1528,13 @@
     if (is_first())
       event1_->Signal();
     event2_->Wait();
-    other_channel_.reset(
-        new SyncChannel(other_channel_name_,
-                        Channel::MODE_CLIENT,
-                        this,
-                        ipc_thread().message_loop_proxy().get(),
-                        true,
-                        shutdown_event()));
+    other_channel_ =
+        SyncChannel::Create(other_channel_name_,
+                            IPC::Channel::MODE_CLIENT,
+                            this,
+                            ipc_thread().message_loop_proxy().get(),
+                            true,
+                            shutdown_event());
     other_channel_->SetRestrictDispatchChannelGroup(group_);
     if (!is_first()) {
       event1_->Signal();
@@ -1606,13 +1608,13 @@
         server_ready_(server_ready) { }
 
   virtual void Run() OVERRIDE {
-    server2_channel_.reset(
-        new SyncChannel("reentrant_reply2",
-                        Channel::MODE_CLIENT,
-                        this,
-                        ipc_thread().message_loop_proxy().get(),
-                        true,
-                        shutdown_event()));
+    server2_channel_ =
+        SyncChannel::Create("reentrant_reply2",
+                            IPC::Channel::MODE_CLIENT,
+                            this,
+                            ipc_thread().message_loop_proxy().get(),
+                            true,
+                            shutdown_event());
     server_ready_->Signal();
     Message* msg = new SyncChannelTestMsg_Reentrant1();
     server2_channel_->Send(msg);