1// Copyright 2014 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#include "base/timer/mock_timer.h" 6 7namespace base { 8 9MockTimer::MockTimer(bool retain_user_task, bool is_repeating) 10 : Timer(retain_user_task, is_repeating), 11 is_running_(false) { 12} 13 14MockTimer::MockTimer(const tracked_objects::Location& posted_from, 15 TimeDelta delay, 16 const base::Closure& user_task, 17 bool is_repeating) 18 : Timer(true, is_repeating), 19 delay_(delay), 20 is_running_(false) { 21} 22 23MockTimer::~MockTimer() { 24} 25 26bool MockTimer::IsRunning() const { 27 return is_running_; 28} 29 30base::TimeDelta MockTimer::GetCurrentDelay() const { 31 return delay_; 32} 33 34void MockTimer::Start(const tracked_objects::Location& posted_from, 35 TimeDelta delay, 36 const base::Closure& user_task) { 37 delay_ = delay; 38 user_task_ = user_task; 39 Reset(); 40} 41 42void MockTimer::Stop() { 43 is_running_ = false; 44 if (!retain_user_task()) 45 user_task_.Reset(); 46} 47 48void MockTimer::Reset() { 49 DCHECK(!user_task_.is_null()); 50 is_running_ = true; 51} 52 53void MockTimer::Fire() { 54 DCHECK(is_running_); 55 base::Closure old_task = user_task_; 56 if (is_repeating()) 57 Reset(); 58 else 59 Stop(); 60 old_task.Run(); 61} 62 63} // namespace base 64