| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_TIME_TICK_CLOCK_H_ |
| #define BASE_TIME_TICK_CLOCK_H_ |
| |
| #include "base/base_export.h" |
| #include "base/time/time.h" |
| |
| namespace base { |
| |
| // A TickClock is an interface for objects that vend TimeTicks. It is |
| // intended to be able to test the behavior of classes with respect to |
| // non-decreasing time. |
| // |
| // Note: Overriding Time/TimeTicks altogether via |
| // TaskEnvironment::TimeSource::MOCK_TIME is now the preferred way of overriding |
| // time in unit tests. As such, there shouldn't be many new use cases for |
| // TickClock/DefaultTickClock anymore. |
| // |
| // See DefaultTickClock (base/time/default_tick_clock.h) for the default |
| // implementation that simply uses TimeTicks::Now(). |
| // |
| // (Other implementations that use TimeTicks::NowFromSystemTime() should |
| // be added as needed.) |
| // |
| // See SimpleTestTickClock (base/test/simple_test_tick_clock.h) for a |
| // simple test implementation. |
| // |
| // See Clock (base/time/clock.h) for the equivalent interface for Times. |
| class BASE_EXPORT TickClock { |
| public: |
| virtual ~TickClock(); |
| |
| // NowTicks() must be safe to call from any thread. The caller may |
| // assume that NowTicks() is monotonic (but not strictly monotonic). |
| // In other words, the returned TimeTicks will never decrease with |
| // time, although they might "stand still". |
| virtual TimeTicks NowTicks() const = 0; |
| }; |
| |
| } // namespace base |
| |
| #endif // BASE_TIME_TICK_CLOCK_H_ |