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