SupervisedUserSyncService cleanup: Implement SigninManagerBase::Observer
[chromium-blink-merge.git] / base / callback_helpers.cc
blobef02b2bde0cdfed5dbd02cb97cabd246ea18d611
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.
5 #include "base/callback_helpers.h"
7 #include "base/callback.h"
9 namespace base {
11 ScopedClosureRunner::ScopedClosureRunner() {
14 ScopedClosureRunner::ScopedClosureRunner(const Closure& closure)
15 : closure_(closure) {
18 ScopedClosureRunner::~ScopedClosureRunner() {
19 if (!closure_.is_null())
20 closure_.Run();
23 void ScopedClosureRunner::Reset() {
24 Closure old_closure = Release();
25 if (!old_closure.is_null())
26 old_closure.Run();
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();
36 Closure ScopedClosureRunner::Release() {
37 Closure result = closure_;
38 closure_.Reset();
39 return result;
42 } // namespace base