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