Home | History | Annotate | Download | only in test
      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_TICK_CLOCK_H_
      6 #define BASE_SIMPLE_TEST_TICK_CLOCK_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "base/synchronization/lock.h"
     10 #include "base/time/tick_clock.h"
     11 #include "base/time/time.h"
     12 
     13 namespace base {
     14 
     15 // SimpleTestTickClock is a TickClock implementation that gives
     16 // control over the returned TimeTicks objects.  All methods may be
     17 // called from any thread.
     18 class 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 
     26   // Advances the clock by |delta|, which must not be negative.
     27   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_
     39