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_SIMPLE_TEST_TICK_CLOCK_H_
6#define BASE_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
13namespace 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.
18class SimpleTestTickClock : public TickClock {
19 public:
20  // Starts off with a clock set to TimeTicks().
21  SimpleTestTickClock();
22  virtual ~SimpleTestTickClock();
23
24  virtual TimeTicks NowTicks() OVERRIDE;
25
26  // Advances the clock by |delta|, which must not be negative.
27  void Advance(TimeDelta delta);
28
29 private:
30  // Protects |now_ticks_|.
31  Lock lock_;
32
33  TimeTicks now_ticks_;
34};
35
36}  // namespace base
37
38#endif  // BASE_SIMPLE_TEST_TICK_CLOCK_H_
39