Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / base / test / simple_test_clock.h
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_CLOCK_H_
6 #define BASE_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_SIMPLE_TEST_CLOCK_H_