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_TEST_SIMPLE_TEST_CLOCK_H_
      6 #define BASE_TEST_SIMPLE_TEST_CLOCK_H_
      7 
      8 #include "base/compiler_specific.h"
      9 #include "base/synchronization/lock.h"
     10 #include "base/time/clock.h"
     11 #include "base/time/time.h"
     12 
     13 namespace base {
     14 
     15 // SimpleTestClock is a Clock implementation that gives control over
     16 // the returned Time objects.  All methods may be called from any
     17 // thread.
     18 class SimpleTestClock : public Clock {
     19  public:
     20   // Starts off with a clock set to Time().
     21   SimpleTestClock();
     22   ~SimpleTestClock() override;
     23 
     24   Time Now() override;
     25 
     26   // Advances the clock by |delta|.
     27   void Advance(TimeDelta delta);
     28 
     29   // Sets the clock to the given time.
     30   void SetNow(Time now);
     31 
     32  private:
     33   // Protects |now_|.
     34   Lock lock_;
     35 
     36   Time now_;
     37 };
     38 
     39 }  // namespace base
     40 
     41 #endif  // BASE_TEST_SIMPLE_TEST_CLOCK_H_
     42