xref: /aosp_15_r20/external/cronet/base/timer/mock_timer.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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