blob: ef02b2bde0cdfed5dbd02cb97cabd246ea18d611 [file] [log] [blame]
avi@chromium.orgb74bab82013-08-30 11:04:04 +09001// 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
9namespace base {
10
11ScopedClosureRunner::ScopedClosureRunner() {
12}
13
14ScopedClosureRunner::ScopedClosureRunner(const Closure& closure)
15 : closure_(closure) {
16}
17
18ScopedClosureRunner::~ScopedClosureRunner() {
19 if (!closure_.is_null())
20 closure_.Run();
21}
22
23void ScopedClosureRunner::Reset() {
24 Closure old_closure = Release();
25 if (!old_closure.is_null())
26 old_closure.Run();
27}
28
29void 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
36Closure ScopedClosureRunner::Release() {
37 Closure result = closure_;
38 closure_.Reset();
39 return result;
40}
41
42} // namespace base