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);