1*635a8641SAndroid Build Coastguard Worker // Copyright 2018 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #include "base/time/time_override.h" 6*635a8641SAndroid Build Coastguard Worker 7*635a8641SAndroid Build Coastguard Worker namespace base { 8*635a8641SAndroid Build Coastguard Worker namespace subtle { 9*635a8641SAndroid Build Coastguard Worker 10*635a8641SAndroid Build Coastguard Worker #if DCHECK_IS_ON() 11*635a8641SAndroid Build Coastguard Worker // static 12*635a8641SAndroid Build Coastguard Worker bool ScopedTimeClockOverrides::overrides_active_ = false; 13*635a8641SAndroid Build Coastguard Worker #endif 14*635a8641SAndroid Build Coastguard Worker ScopedTimeClockOverrides(TimeNowFunction time_override,TimeTicksNowFunction time_ticks_override,ThreadTicksNowFunction thread_ticks_override)15*635a8641SAndroid Build Coastguard WorkerScopedTimeClockOverrides::ScopedTimeClockOverrides( 16*635a8641SAndroid Build Coastguard Worker TimeNowFunction time_override, 17*635a8641SAndroid Build Coastguard Worker TimeTicksNowFunction time_ticks_override, 18*635a8641SAndroid Build Coastguard Worker ThreadTicksNowFunction thread_ticks_override) { 19*635a8641SAndroid Build Coastguard Worker #if DCHECK_IS_ON() 20*635a8641SAndroid Build Coastguard Worker DCHECK(!overrides_active_); 21*635a8641SAndroid Build Coastguard Worker overrides_active_ = true; 22*635a8641SAndroid Build Coastguard Worker #endif 23*635a8641SAndroid Build Coastguard Worker if (time_override) { 24*635a8641SAndroid Build Coastguard Worker internal::g_time_now_function = time_override; 25*635a8641SAndroid Build Coastguard Worker internal::g_time_now_from_system_time_function = time_override; 26*635a8641SAndroid Build Coastguard Worker } 27*635a8641SAndroid Build Coastguard Worker if (time_ticks_override) 28*635a8641SAndroid Build Coastguard Worker internal::g_time_ticks_now_function = time_ticks_override; 29*635a8641SAndroid Build Coastguard Worker if (thread_ticks_override) 30*635a8641SAndroid Build Coastguard Worker internal::g_thread_ticks_now_function = thread_ticks_override; 31*635a8641SAndroid Build Coastguard Worker } 32*635a8641SAndroid Build Coastguard Worker ~ScopedTimeClockOverrides()33*635a8641SAndroid Build Coastguard WorkerScopedTimeClockOverrides::~ScopedTimeClockOverrides() { 34*635a8641SAndroid Build Coastguard Worker internal::g_time_now_function = &TimeNowIgnoringOverride; 35*635a8641SAndroid Build Coastguard Worker internal::g_time_now_from_system_time_function = 36*635a8641SAndroid Build Coastguard Worker &TimeNowFromSystemTimeIgnoringOverride; 37*635a8641SAndroid Build Coastguard Worker internal::g_time_ticks_now_function = &TimeTicksNowIgnoringOverride; 38*635a8641SAndroid Build Coastguard Worker internal::g_thread_ticks_now_function = &ThreadTicksNowIgnoringOverride; 39*635a8641SAndroid Build Coastguard Worker #if DCHECK_IS_ON() 40*635a8641SAndroid Build Coastguard Worker overrides_active_ = false; 41*635a8641SAndroid Build Coastguard Worker #endif 42*635a8641SAndroid Build Coastguard Worker } 43*635a8641SAndroid Build Coastguard Worker 44*635a8641SAndroid Build Coastguard Worker } // namespace subtle 45*635a8641SAndroid Build Coastguard Worker } // namespace base 46