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