blob: 867de804b96f35af4abc74e00364b1e0564f9743 [file] [log] [blame]
akalin@chromium.org63bf5882013-02-22 06:50:34 +09001// 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"
akalin@chromium.org63bf5882013-02-22 06:50:34 +090010#include "base/time/tick_clock.h"
avi@chromium.orgb45ec932013-06-29 00:14:18 +090011#include "base/time/time.h"
akalin@chromium.org63bf5882013-02-22 06:50:34 +090012
13namespace base {
14
15// SimpleTestTickClock is a TickClock implementation that gives
akalin@chromium.org6ccc1fd2013-02-26 10:51:17 +090016// control over the returned TimeTicks objects. All methods may be
akalin@chromium.org63bf5882013-02-22 06:50:34 +090017// 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
akalin@chromium.org6ccc1fd2013-02-26 10:51:17 +090026 // Advances the clock by |delta|, which must not be negative.
akalin@chromium.org63bf5882013-02-22 06:50:34 +090027 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_