Home | History | Annotate | Download | only in drive_backend
      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/browser/sync_file_system/drive_backend/callback_tracker.h"
      6 
      7 #include <algorithm>
      8 
      9 namespace sync_file_system {
     10 namespace drive_backend {
     11 
     12 CallbackTracker::CallbackTracker() {
     13 }
     14 
     15 CallbackTracker::~CallbackTracker() {
     16   AbortAll();
     17 }
     18 
     19 void CallbackTracker::AbortAll() {
     20   AbortClosureByHelper helpers;
     21   std::swap(helpers, helpers_);
     22   for (AbortClosureByHelper::iterator itr = helpers.begin();
     23        itr != helpers.end(); ++itr) {
     24     delete itr->first;
     25     itr->second.Run();
     26   }
     27 }
     28 
     29 scoped_ptr<internal::AbortHelper> CallbackTracker::PassAbortHelper(
     30     internal::AbortHelper* helper) {
     31   if (helpers_.erase(helper) == 1)
     32     return scoped_ptr<internal::AbortHelper>(helper);
     33   return scoped_ptr<internal::AbortHelper>();
     34 }
     35 
     36 }  // namespace drive_backend
     37 }  // namespace sync_file_system
     38