Chromium Code Reviews| Index: base/timer/timer_unittest.cc |
| diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc |
| index 0fb2b454ad764f7497dca7878910bee3ca701238..2168ed1f17fbb10ee77cda36bd373f8b75d7a115 100644 |
| --- a/base/timer/timer_unittest.cc |
| +++ b/base/timer/timer_unittest.cc |
| @@ -4,10 +4,12 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/message_loop/message_loop.h" |
| +#include "base/test/test_simple_task_runner.h" |
| #include "base/timer/timer.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| using base::TimeDelta; |
| +using base::SingleThreadTaskRunner; |
| namespace { |
| @@ -26,20 +28,28 @@ class OneShotTimerTester { |
| public: |
| explicit OneShotTimerTester(bool* did_run, unsigned milliseconds = 10) |
| : did_run_(did_run), |
| - delay_ms_(milliseconds) { |
| + delay_ms_(milliseconds), |
| + quit_message_loop_(true) { |
| } |
| void Start() { |
| timer_.Start(FROM_HERE, TimeDelta::FromMilliseconds(delay_ms_), this, |
| &OneShotTimerTester::Run); |
| } |
| + void SetTaskRunner(scoped_refptr<SingleThreadTaskRunner> task_runner) { |
|
danakj
2014/10/22 15:07:44
nit: should be 1 whitespace above/below the method
petrcermak
2014/10/23 10:59:37
Done (for all methods).
|
| + quit_message_loop_ = false; |
| + timer_.SetTaskRunner(task_runner); |
| + } |
| private: |
| void Run() { |
| *did_run_ = true; |
| - base::MessageLoop::current()->QuitWhenIdle(); |
| + if (quit_message_loop_) { |
| + base::MessageLoop::current()->QuitWhenIdle(); |
| + } |
| } |
| bool* did_run_; |
| base::OneShotTimer<OneShotTimerTester> timer_; |
| const unsigned delay_ms_; |
| + bool quit_message_loop_; |
| }; |
| class OneShotSelfDeletingTimerTester { |
| @@ -310,6 +320,22 @@ TEST(TimerTest, OneShotSelfDeletingTimer) { |
| } |
| } |
| +TEST(TimerTest, OneShotTimer_CustomTaskRunner) { |
| + scoped_refptr<base::TestSimpleTaskRunner> task_runner = |
| + new base::TestSimpleTaskRunner(); |
| + |
| + bool did_run = false; |
| + OneShotTimerTester f(&did_run); |
| + f.SetTaskRunner(task_runner); |
| + f.Start(); |
| + |
| + EXPECT_FALSE(did_run); |
| + |
|
danakj
2014/10/22 15:07:44
nit: drop whitespace please
petrcermak
2014/10/23 10:59:37
Done.
|
| + task_runner->RunUntilIdle(); |
| + |
|
danakj
2014/10/22 15:07:44
ditto
petrcermak
2014/10/23 10:59:37
Done.
|
| + EXPECT_TRUE(did_run); |
| +} |
| + |
| TEST(TimerTest, RepeatingTimer) { |
| for (int i = 0; i < kNumTestingMessageLoops; i++) { |
| RunTest_RepeatingTimer(testing_message_loops[i], |