Index: gin/modules/timer_unittest.cc |
diff --git a/gin/modules/timer_unittest.cc b/gin/modules/timer_unittest.cc |
index bd4b3450f0ac3c3caf71408f8d8055200326a445..665ea4e788d56bebf4170217433b20ce9349cab0 100644 |
--- a/gin/modules/timer_unittest.cc |
+++ b/gin/modules/timer_unittest.cc |
@@ -67,12 +67,6 @@ struct TestHelper { |
result->GetWrapper(isolate).ToLocalChecked()); |
} |
- void QuitSoon(base::MessageLoop* message_loop) { |
- message_loop->task_runner()->PostDelayedTask( |
- FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), |
- base::TimeDelta::FromMilliseconds(0)); |
- } |
- |
ShellRunnerDelegate delegate; |
std::unique_ptr<ShellRunner> runner; |
Runner::Scope scope; |
@@ -94,8 +88,7 @@ TEST_F(TimerUnittest, OneShot) { |
helper.runner->Run(source, "script"); |
EXPECT_EQ(0, helper.result->count()); |
- helper.QuitSoon(&message_loop_); |
- base::RunLoop().Run(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, helper.result->count()); |
} |
@@ -110,8 +103,7 @@ TEST_F(TimerUnittest, OneShotCancel) { |
helper.runner->Run(source, "script"); |
EXPECT_EQ(0, helper.result->count()); |
- helper.QuitSoon(&message_loop_); |
- base::RunLoop().Run(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(0, helper.result->count()); |
} |
@@ -121,12 +113,15 @@ TEST_F(TimerUnittest, Repeating) { |
// TODO(aa): Cannot do: if (++result.count == 3) because of v8 bug. Create |
// test case and report. |
std::string source = |
- "timer.createRepeating(0, function() {" |
- " result.count++;" |
- " if (result.count == 3) {" |
- " result.quit();" |
- " }" |
- "});"; |
+ "var t = timer.createRepeating(0, function() {" |
+ " result.count++;" |
+ " if (result.count == 3) {" |
+ " /* Cancel the timer to prevent a hang when ScopedTaskEnvironment " |
+ " flushes main thread tasks. */" |
+ " t.cancel();" |
+ " result.quit();" |
+ " }" |
+ "});"; |
helper.runner->Run(source, "script"); |
EXPECT_EQ(0, helper.result->count()); |
@@ -146,9 +141,8 @@ TEST_F(TimerUnittest, TimerCallbackToDestroyedRunner) { |
EXPECT_EQ(0, helper.result->count()); |
// Destroy runner, which should destroy the timer object we created. |
- helper.QuitSoon(&message_loop_); |
helper.runner.reset(NULL); |
- base::RunLoop().Run(); |
+ base::RunLoop().RunUntilIdle(); |
// Timer should not have run because it was deleted. |
EXPECT_EQ(0, helper.result->count()); |