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