146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/callback_tracker_internal.h" 646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "chrome/browser/sync_file_system/drive_backend/callback_tracker.h" 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace sync_file_system { 1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace drive_backend { 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace internal { 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)AbortHelper::AbortHelper(CallbackTracker* tracker) 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) : tracker_(tracker), weak_ptr_factory_(this) { 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)AbortHelper::~AbortHelper() {} 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)base::WeakPtr<AbortHelper> AbortHelper::AsWeakPtr() { 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return weak_ptr_factory_.GetWeakPtr(); 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// static 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)scoped_ptr<AbortHelper> AbortHelper::TakeOwnership( 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) const base::WeakPtr<AbortHelper>& abort_helper) { 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (!abort_helper) 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return scoped_ptr<AbortHelper>(); 2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) scoped_ptr<AbortHelper> result = 2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) abort_helper->tracker_->PassAbortHelper(abort_helper.get()); 3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) abort_helper->weak_ptr_factory_.InvalidateWeakPtrs(); 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return result.Pass(); 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace internal 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace drive_backend 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace sync_file_system 37