callback_tracker.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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 9namespace sync_file_system { 10namespace drive_backend { 11 12CallbackTracker::CallbackTracker() { 13} 14 15CallbackTracker::~CallbackTracker() { 16 AbortAll(); 17} 18 19void 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 29scoped_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