• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
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_TEST_SIMPLE_TEST_TICK_CLOCK_H_
6 #define BASE_TEST_SIMPLE_TEST_TICK_CLOCK_H_
7 
8 #include "base/compiler_specific.h"
9 #include "base/synchronization/lock.h"
10 #include "base/time/tick_clock.h"
11 #include "base/time/time.h"
12 
13 namespace base {
14 
15 // SimpleTestTickClock is a TickClock implementation that gives
16 // control over the returned TimeTicks objects.  All methods may be
17 // called from any thread.
18 class SimpleTestTickClock : public TickClock {
19  public:
20   // Starts off with a clock set to TimeTicks().
21   SimpleTestTickClock();
22   ~SimpleTestTickClock() override;
23 
24   TimeTicks NowTicks() const override;
25 
26   // Advances the clock by |delta|, which must not be negative.
27   void Advance(TimeDelta delta);
28 
29   // Sets the clock to the given time.
30   void SetNowTicks(TimeTicks ticks);
31 
32  private:
33   // Protects |now_ticks_|.
34   mutable Lock lock_;
35 
36   TimeTicks now_ticks_;
37 };
38 
39 }  // namespace base
40 
41 #endif  // BASE_TEST_SIMPLE_TEST_TICK_CLOCK_H_
42