• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 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_TASK_SEQUENCE_MANAGER_TEST_MOCK_TIME_DOMAIN_H_
6 #define BASE_TASK_SEQUENCE_MANAGER_TEST_MOCK_TIME_DOMAIN_H_
7 
8 #include "base/task/sequence_manager/time_domain.h"
9 #include "base/time/tick_clock.h"
10 #include "third_party/abseil-cpp/absl/types/optional.h"
11 
12 namespace base {
13 namespace sequence_manager {
14 
15 // TimeDomain with a mock clock and not invoking SequenceManager.
16 // NOTE: All methods are main thread only.
17 class MockTimeDomain : public TimeDomain {
18  public:
19   explicit MockTimeDomain(TimeTicks initial_now_ticks);
20   MockTimeDomain(const MockTimeDomain&) = delete;
21   MockTimeDomain& operator=(const MockTimeDomain&) = delete;
22   ~MockTimeDomain() override;
23 
24   void SetNowTicks(TimeTicks now_ticks);
25 
26   // TickClock implementation:
27   TimeTicks NowTicks() const override;
28 
29   // TimeDomain implementation:
30   bool MaybeFastForwardToWakeUp(absl::optional<WakeUp> next_wake_up,
31                                 bool quit_when_idle_requested) override;
32   const char* GetName() const override;
33 
34  private:
35   TimeTicks now_ticks_;
36 };
37 
38 }  // namespace sequence_manager
39 }  // namespace base
40 
41 #endif  // BASE_TASK_SEQUENCE_MANAGER_TEST_MOCK_TIME_DOMAIN_H_
42