1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 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_TEST_SIMPLE_TEST_CLOCK_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_TEST_SIMPLE_TEST_CLOCK_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "base/compiler_specific.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/synchronization/lock.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/time/clock.h" 11*6777b538SAndroid Build Coastguard Worker #include "base/time/time.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker namespace base { 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker // SimpleTestClock is a Clock implementation that gives control over 16*6777b538SAndroid Build Coastguard Worker // the returned Time objects. All methods may be called from any 17*6777b538SAndroid Build Coastguard Worker // thread. 18*6777b538SAndroid Build Coastguard Worker class SimpleTestClock : public Clock { 19*6777b538SAndroid Build Coastguard Worker public: 20*6777b538SAndroid Build Coastguard Worker // Starts off with a clock set to Time(). 21*6777b538SAndroid Build Coastguard Worker SimpleTestClock(); 22*6777b538SAndroid Build Coastguard Worker ~SimpleTestClock() override; 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker Time Now() const override; 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker // Advances the clock by |delta|. 27*6777b538SAndroid Build Coastguard Worker void Advance(TimeDelta delta); 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker // Sets the clock to the given time. 30*6777b538SAndroid Build Coastguard Worker void SetNow(Time now); 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker private: 33*6777b538SAndroid Build Coastguard Worker // Protects |now_|. 34*6777b538SAndroid Build Coastguard Worker mutable Lock lock_; 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker Time now_; 37*6777b538SAndroid Build Coastguard Worker }; 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker } // namespace base 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker #endif // BASE_TEST_SIMPLE_TEST_CLOCK_H_ 42