base: Remove MessageLoop usage from tests

This patch removes MessageLoop usage from base unittests *except* for the
following ones:

 - MessageLoop's own unit and perf tests
 - SequenceManager unit and perf tests (need to keep MessageLoop interop
   working for now)
 - FileWatcher (needs a controlled threading environment)
 - ObserverListThreadSafe (ditto)
 - TaskObserverPerfTest (measures MessageLoop overhead)
 - ThreadTest (Thread API needs updating)

These tests will eventually be migrated to the MessageLoop's
replacement or removed.

Bug: 891670
Change-Id: Ic32495a77819b9644cca823d64dea77754cf5c84
Reviewed-on: https://chromium-review.googlesource.com/c/1336147
Reviewed-by: Sami Kyöstilä <[email protected]>
Reviewed-by: François Doray <[email protected]>
Commit-Queue: Sami Kyöstilä <[email protected]>
Cr-Commit-Position: refs/heads/master@{#609257}
diff --git a/base/observer_list_threadsafe_unittest.cc b/base/observer_list_threadsafe_unittest.cc
index 3134fca7..00ca1cf 100644
--- a/base/observer_list_threadsafe_unittest.cc
+++ b/base/observer_list_threadsafe_unittest.cc
@@ -165,7 +165,7 @@
 }  // namespace
 
 TEST(ObserverListThreadSafeTest, BasicTest) {
-  MessageLoop loop;
+  test::ScopedTaskEnvironment scoped_task_environment;
 
   scoped_refptr<ObserverListThreadSafe<Foo>> observer_list(
       new ObserverListThreadSafe<Foo>);
@@ -194,7 +194,7 @@
 }
 
 TEST(ObserverListThreadSafeTest, RemoveObserver) {
-  MessageLoop loop;
+  test::ScopedTaskEnvironment scoped_task_environment;
 
   scoped_refptr<ObserverListThreadSafe<Foo>> observer_list(
       new ObserverListThreadSafe<Foo>);
@@ -237,7 +237,7 @@
 
   {
     // Add c when there's a sequence.
-    MessageLoop loop;
+    test::ScopedTaskEnvironment scoped_task_environment;
     observer_list->AddObserver(&c);
 
     observer_list->Notify(FROM_HERE, &Foo::Observe, 10);
@@ -266,7 +266,7 @@
   observer_list->RemoveObserver(&a);
 
   // Notifying should not fail but should also be a no-op.
-  MessageLoop loop;
+  test::ScopedTaskEnvironment scoped_task_environment;
   observer_list->AddObserver(&b);
   observer_list->Notify(FROM_HERE, &Foo::Observe, 30);
   RunLoop().RunUntilIdle();
@@ -297,7 +297,7 @@
 };
 
 TEST(ObserverListThreadSafeTest, RemoveMultipleObservers) {
-  MessageLoop loop;
+  test::ScopedTaskEnvironment scoped_task_environment;
   scoped_refptr<ObserverListThreadSafe<Foo>> observer_list(
       new ObserverListThreadSafe<Foo>);
 
@@ -320,7 +320,7 @@
 // observer threads will also trigger notifications to all observers.
 static void ThreadSafeObserverHarness(int num_threads,
                                       bool cross_thread_notifies) {
-  MessageLoop loop;
+  test::ScopedTaskEnvironment scoped_task_environment;
 
   scoped_refptr<ObserverListThreadSafe<Foo>> observer_list(
       new ObserverListThreadSafe<Foo>);
@@ -347,8 +347,8 @@
   ASSERT_EQ(static_cast<size_t>(num_threads), threaded_observer.size());
   ASSERT_EQ(static_cast<size_t>(num_threads), ready.size());
 
-  // This makes sure that threaded_observer has gotten to set loop_, so that we
-  // can call Quit() below safe-ish-ly.
+  // This makes sure that threaded_observer has gotten to set
+  // scoped_task_environment_, so that we can call Quit() below safe-ish-ly.
   for (int i = 0; i < num_threads; ++i)
     ready[i]->Wait();
 
@@ -385,14 +385,14 @@
   ThreadSafeObserverHarness(3, true);
 }
 
-TEST(ObserverListThreadSafeTest, OutlivesMessageLoop) {
-  MessageLoop* loop = new MessageLoop;
+TEST(ObserverListThreadSafeTest, OutlivesTaskEnvironment) {
+  Optional<test::ScopedTaskEnvironment> scoped_task_environment(in_place);
   scoped_refptr<ObserverListThreadSafe<Foo>> observer_list(
       new ObserverListThreadSafe<Foo>);
 
   Adder a(1);
   observer_list->AddObserver(&a);
-  delete loop;
+  scoped_task_environment.reset();
   // Test passes if we don't crash here.
   observer_list->Notify(FROM_HERE, &Foo::Observe, 1);
 }
@@ -528,7 +528,7 @@
 
 // Same as ObserverListTest.Existing, but for ObserverListThreadSafe
 TEST(ObserverListThreadSafeTest, Existing) {
-  MessageLoop loop;
+  test::ScopedTaskEnvironment scoped_task_environment;
   scoped_refptr<ObserverListThreadSafe<Foo>> observer_list(
       new ObserverListThreadSafe<Foo>(ObserverListPolicy::EXISTING_ONLY));
   Adder a(1);