1 // Copyright 2014 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_TIMER_MOCK_TIMER_H_ 6 #define BASE_TIMER_MOCK_TIMER_H_ 7 8 #include "base/test/simple_test_tick_clock.h" 9 #include "base/timer/timer.h" 10 11 namespace base { 12 13 class TestSimpleTaskRunner; 14 15 // A mock implementation of base::OneShotTimer which requires being explicitly 16 // Fire()'d. 17 // Prefer using TaskEnvironment::MOCK_TIME + FastForward*() to this when 18 // possible. 19 class MockOneShotTimer : public OneShotTimer { 20 public: 21 MockOneShotTimer(); 22 ~MockOneShotTimer() override; 23 24 // Testing method. 25 void Fire(); 26 27 // OneShotTimer::FireNow requires no task runner is set. Override FireNow to 28 // bypass the check. 29 void FireNow() override; 30 31 private: 32 // Timer implementation. 33 // MockOneShotTimer doesn't support SetTaskRunner. Do not use this. 34 void SetTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner) override; 35 36 SimpleTestTickClock clock_; 37 scoped_refptr<TestSimpleTaskRunner> test_task_runner_; 38 }; 39 40 // See MockOneShotTimer's comment. Prefer using 41 // TaskEnvironment::MOCK_TIME. 42 class MockRepeatingTimer : public RepeatingTimer { 43 public: 44 MockRepeatingTimer(); 45 ~MockRepeatingTimer() override; 46 47 // Testing method. 48 void Fire(); 49 50 private: 51 // Timer implementation. 52 // MockRepeatingTimer doesn't support SetTaskRunner. Do not use this. 53 void SetTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner) override; 54 55 SimpleTestTickClock clock_; 56 scoped_refptr<TestSimpleTaskRunner> test_task_runner_; 57 }; 58 59 // See MockOneShotTimer's comment. Prefer using 60 // TaskEnvironment::MOCK_TIME. 61 class MockRetainingOneShotTimer : public RetainingOneShotTimer { 62 public: 63 MockRetainingOneShotTimer(); 64 ~MockRetainingOneShotTimer() override; 65 66 // Testing method. 67 void Fire(); 68 69 private: 70 // Timer implementation. 71 // MockRetainingOneShotTimer doesn't support SetTaskRunner. Do not use this. 72 void SetTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner) override; 73 74 SimpleTestTickClock clock_; 75 scoped_refptr<TestSimpleTaskRunner> test_task_runner_; 76 }; 77 78 } // namespace base 79 80 #endif // BASE_TIMER_MOCK_TIMER_H_ 81