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