Home | History | Annotate | Download | only in base
      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 
     11 ScopedClosureRunner::ScopedClosureRunner() {
     12 }
     13 
     14 ScopedClosureRunner::ScopedClosureRunner(const Closure& closure)
     15     : closure_(closure) {
     16 }
     17 
     18 ScopedClosureRunner::~ScopedClosureRunner() {
     19   if (!closure_.is_null())
     20     closure_.Run();
     21 }
     22 
     23 void ScopedClosureRunner::Reset() {
     24   Closure old_closure = Release();
     25   if (!old_closure.is_null())
     26     old_closure.Run();
     27 }
     28 
     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 
     36 Closure ScopedClosureRunner::Release() {
     37   Closure result = closure_;
     38   closure_.Reset();
     39   return result;
     40 }
     41 
     42 }  // namespace base
     43