1 // Copyright 2013 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/callback_helpers.h"
6 
7 #include "base/callback.h"
8 
9 namespace base {
10 
ScopedClosureRunner()11 ScopedClosureRunner::ScopedClosureRunner() {
12 }
13 
ScopedClosureRunner(const Closure & closure)14 ScopedClosureRunner::ScopedClosureRunner(const Closure& closure)
15     : closure_(closure) {
16 }
17 
~ScopedClosureRunner()18 ScopedClosureRunner::~ScopedClosureRunner() {
19   if (!closure_.is_null())
20     closure_.Run();
21 }
22 
Reset()23 void ScopedClosureRunner::Reset() {
24   Closure old_closure = Release();
25   if (!old_closure.is_null())
26     old_closure.Run();
27 }
28 
Reset(const Closure & closure)29 void ScopedClosureRunner::Reset(const Closure& closure) {
30   Closure old_closure = Release();
31   closure_ = closure;
32   if (!old_closure.is_null())
33     old_closure.Run();
34 }
35 
Release()36 Closure ScopedClosureRunner::Release() {
37   Closure result = closure_;
38   closure_.Reset();
39   return result;
40 }
41 
42 }  // namespace base
43