OLD | NEW |
---|---|
(Empty) | |
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 "chrome/renderer/net/mockable_one_shot_timer.h" | |
6 | |
7 MockableOneShotTimer::MockableOneShotTimer() {} | |
8 MockableOneShotTimer::~MockableOneShotTimer() {} | |
9 | |
10 void MockableOneShotTimer::Fired() { | |
11 // Store the task in a temporary across Run() to prevent its closure (and | |
12 // hence maybe arguments to the callback function or similar) from going out | |
13 // of scope while Run() is still executing if Run() calls Start(). | |
14 base::Closure temp_task = task_; | |
15 task_.Reset(); | |
16 temp_task.Run(); | |
17 } | |
18 | |
19 void MockableOneShotTimer::Start( | |
20 const tracked_objects::Location& posted_from, base::TimeDelta delay, | |
21 const base::Closure& task) { | |
22 DCHECK(!task.is_null()); | |
23 task_ = task; | |
24 timer_.Start(posted_from, delay, | |
25 base::Bind(&MockableOneShotTimer::Fired, base::Unretained(this))); | |
mmenke
2014/03/12 19:02:42
Should we include bind.h? callback.h doesn't dire
Elly Fong-Jones
2014/03/12 20:10:53
Done.
| |
26 } | |
27 | |
28 void MockableOneShotTimer::Stop() { | |
29 timer_.Stop(); | |
30 } | |
31 | |
32 bool MockableOneShotTimer::IsRunning() const { | |
33 return timer_.IsRunning(); | |
34 } | |
OLD | NEW |