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