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