Reland of Make the default ctor of rtc::Thread, protected

This is a partial re-land. The change doesn't make the default Thread ctor protected anymore but it does mark it as deprecated and updates all use of it in WebRTC.

Original issue's description:

Make the default ctor of rtc::Thread, protected.
The goal is to force use of Thread::Create or Thread::CreateWithSocketServer.

The default constructor constructs a 'default' socket server, which is usually a 'physical' socket server, but not always. Not every instance of Thread actually needs to have network support, so it's better to have this be explicit instead of unknowingly instantiate one.

BUG=none

Review-Url: https://codereview.webrtc.org/2977953002
Cr-Commit-Position: refs/heads/master@{#19031}
diff --git a/webrtc/rtc_base/messagequeue_unittest.cc b/webrtc/rtc_base/messagequeue_unittest.cc
index e31adf9..4003e2d 100644
--- a/webrtc/rtc_base/messagequeue_unittest.cc
+++ b/webrtc/rtc_base/messagequeue_unittest.cc
@@ -38,9 +38,9 @@
   bool IsLocked() {
     // We have to do this on a worker thread, or else the TryEnter will
     // succeed, since our critical sections are reentrant.
-    Thread worker;
-    worker.Start();
-    return worker.Invoke<bool>(
+    std::unique_ptr<Thread> worker(Thread::CreateWithSocketServer());
+    worker->Start();
+    return worker->Invoke<bool>(
         RTC_FROM_HERE, rtc::Bind(&MessageQueueTest::IsLocked_Worker, this));
   }
 };
@@ -152,10 +152,10 @@
 // all registered message queues.
 TEST(MessageQueueManager, ProcessAllMessageQueues) {
   Event entered_process_all_message_queues(true, false);
-  Thread a;
-  Thread b;
-  a.Start();
-  b.Start();
+  auto a = Thread::CreateWithSocketServer();
+  auto b = Thread::CreateWithSocketServer();
+  a->Start();
+  b->Start();
 
   volatile int messages_processed = 0;
   FunctorMessageHandler<void, std::function<void()>> incrementer(
@@ -173,10 +173,10 @@
       });
 
   // Post messages (both delayed and non delayed) to both threads.
-  a.Post(RTC_FROM_HERE, &incrementer);
-  b.Post(RTC_FROM_HERE, &incrementer);
-  a.PostDelayed(RTC_FROM_HERE, 0, &incrementer);
-  b.PostDelayed(RTC_FROM_HERE, 0, &incrementer);
+  a->Post(RTC_FROM_HERE, &incrementer);
+  b->Post(RTC_FROM_HERE, &incrementer);
+  a->PostDelayed(RTC_FROM_HERE, 0, &incrementer);
+  b->PostDelayed(RTC_FROM_HERE, 0, &incrementer);
   rtc::Thread::Current()->Post(RTC_FROM_HERE, &event_signaler);
 
   MessageQueueManager::ProcessAllMessageQueues();
@@ -185,9 +185,9 @@
 
 // Test that ProcessAllMessageQueues doesn't hang if a thread is quitting.
 TEST(MessageQueueManager, ProcessAllMessageQueuesWithQuittingThread) {
-  Thread t;
-  t.Start();
-  t.Quit();
+  auto t = Thread::CreateWithSocketServer();
+  t->Start();
+  t->Quit();
   MessageQueueManager::ProcessAllMessageQueues();
 }
 
@@ -195,8 +195,8 @@
 // messages.
 TEST(MessageQueueManager, ProcessAllMessageQueuesWithClearedQueue) {
   Event entered_process_all_message_queues(true, false);
-  Thread t;
-  t.Start();
+  auto t = Thread::CreateWithSocketServer();
+  t->Start();
 
   FunctorMessageHandler<void, std::function<void()>> clearer(
       [&entered_process_all_message_queues] {
@@ -213,7 +213,7 @@
       });
 
   // Post messages (both delayed and non delayed) to both threads.
-  t.Post(RTC_FROM_HERE, &clearer);
+  t->Post(RTC_FROM_HERE, &clearer);
   rtc::Thread::Current()->Post(RTC_FROM_HERE, &event_signaler);
   MessageQueueManager::ProcessAllMessageQueues();
 }
@@ -231,7 +231,7 @@
 };
 
 TEST(MessageQueueManager, ClearReentrant) {
-  Thread t;
+  std::unique_ptr<Thread> t(Thread::Create());
   EmptyHandler handler;
   RefCountedHandler* inner_handler(
       new rtc::RefCountedObject<RefCountedHandler>());
@@ -242,7 +242,7 @@
   // The inner handler will be removed in a re-entrant fashion from the
   // message queue of the thread while the outer handler is removed, verifying
   // that the iterator is not invalidated in "MessageQueue::Clear".
-  t.Post(RTC_FROM_HERE, inner_handler, 0);
-  t.Post(RTC_FROM_HERE, &handler, 0,
-      new ScopedRefMessageData<RefCountedHandler>(inner_handler));
+  t->Post(RTC_FROM_HERE, inner_handler, 0);
+  t->Post(RTC_FROM_HERE, &handler, 0,
+          new ScopedRefMessageData<RefCountedHandler>(inner_handler));
 }