|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef BASE_TIME_CLOCK_H_ | 
|  | #define BASE_TIME_CLOCK_H_ | 
|  |  | 
|  | #include "base/base_export.h" | 
|  | #include "base/time/time.h" | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | // A Clock is an interface for objects that vend Times.  It is | 
|  | // intended to be able to test the behavior of classes with respect to | 
|  | // time. | 
|  | // | 
|  | // See DefaultClock (base/time/default_clock.h) for the default | 
|  | // implementation that simply uses Time::Now(). | 
|  | // | 
|  | // (An implementation that uses Time::SystemTime() should be added as | 
|  | // needed.) | 
|  | // | 
|  | // See SimpleTestClock (base/test/simple_test_clock.h) for a simple | 
|  | // test implementation. | 
|  | // | 
|  | // See TickClock (base/time/tick_clock.h) for the equivalent interface for | 
|  | // TimeTicks. | 
|  | class BASE_EXPORT Clock { | 
|  | public: | 
|  | virtual ~Clock(); | 
|  |  | 
|  | // Now() must be safe to call from any thread.  The caller cannot | 
|  | // make any ordering assumptions about the returned Time.  For | 
|  | // example, the system clock may change to an earlier time. | 
|  | virtual Time Now() const = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace base | 
|  |  | 
|  | #endif  // BASE_TIME_CLOCK_H_ |