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], |