| // Copyright 2017 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. |
| |
| #include "platform/testing/wtf/ScopedMockClock.h" |
| |
| namespace WTF { |
| |
| ScopedMockClock* ScopedMockClock::top_ = nullptr; |
| |
| ScopedMockClock::ScopedMockClock() |
| : next_(top_), next_time_function_(GetTimeFunctionForTesting()) { |
| top_ = this; |
| SetTimeFunctionsForTesting(&Now); |
| } |
| |
| ScopedMockClock::~ScopedMockClock() { |
| top_ = next_; |
| SetTimeFunctionsForTesting(next_time_function_); |
| } |
| |
| double ScopedMockClock::Now() { |
| return top_->now_.since_origin().InSecondsF(); |
| } |
| |
| void ScopedMockClock::Advance(TimeDelta delta) { |
| DCHECK_GT(delta, base::TimeDelta()) |
| << "Monotonically increasing time may not go backwards"; |
| now_ += delta; |
| } |
| |
| } // namespace WTF |