// Copyright 2014 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 "base/timer/mock_timer.h" namespace base { MockTimer::MockTimer(bool retain_user_task, bool is_repeating) : Timer(retain_user_task, is_repeating), is_running_(false) { } MockTimer::MockTimer(const tracked_objects::Location& posted_from, TimeDelta delay, const base::Closure& user_task, bool is_repeating) : Timer(true, is_repeating), delay_(delay), is_running_(false) { } MockTimer::~MockTimer() { } bool MockTimer::IsRunning() const { return is_running_; } base::TimeDelta MockTimer::GetCurrentDelay() const { return delay_; } void MockTimer::Start(const tracked_objects::Location& posted_from, TimeDelta delay, const base::Closure& user_task) { delay_ = delay; user_task_ = user_task; Reset(); } void MockTimer::Stop() { is_running_ = false; if (!retain_user_task()) user_task_.Reset(); } void MockTimer::Reset() { DCHECK(!user_task_.is_null()); is_running_ = true; } void MockTimer::Fire() { DCHECK(is_running_); base::Closure old_task = user_task_; if (is_repeating()) Reset(); else Stop(); old_task.Run(); } } // namespace base