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_TIME_TICK_CLOCK_H_ 6#define BASE_TIME_TICK_CLOCK_H_ 7 8#include "base/base_export.h" 9#include "base/time/time.h" 10 11namespace base { 12 13// A TickClock is an interface for objects that vend TimeTicks. It is 14// intended to be able to test the behavior of classes with respect to 15// non-decreasing time. 16// 17// See DefaultTickClock (base/time/default_tick_clock.h) for the default 18// implementation that simply uses TimeTicks::Now(). 19// 20// (Other implementations that use TimeTicks::NowFromSystemTime() should 21// be added as needed.) 22// 23// See SimpleTestTickClock (base/test/simple_test_tick_clock.h) for a 24// simple test implementation. 25// 26// See Clock (base/time/clock.h) for the equivalent interface for Times. 27class BASE_EXPORT TickClock { 28 public: 29 virtual ~TickClock(); 30 31 // NowTicks() must be safe to call from any thread. The caller may 32 // assume that NowTicks() is monotonic (but not strictly monotonic). 33 // In other words, the returned TimeTicks will never decrease with 34 // time, although they might "stand still". 35 virtual TimeTicks NowTicks() = 0; 36}; 37 38} // namespace base 39 40#endif // BASE_TIME_TICK_CLOCK_H_ 41