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/sync_task.h" 6 7 #include "base/bind.h" 8 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" 9 #include "chrome/browser/sync_file_system/drive_backend/sync_task_token.h" 10 #include "chrome/browser/sync_file_system/drive_backend/task_dependency_manager.h" 11 12 namespace sync_file_system { 13 namespace drive_backend { 14 15 namespace { 16 17 void CallRunExclusive(const base::WeakPtr<ExclusiveTask>& task, 18 scoped_ptr<SyncTaskToken> token) { 19 if (task) 20 task->RunExclusive(SyncTaskToken::WrapToCallback(token.Pass())); 21 } 22 23 } // namespace 24 25 ExclusiveTask::ExclusiveTask() : weak_ptr_factory_(this) {} 26 ExclusiveTask::~ExclusiveTask() {} 27 28 void ExclusiveTask::RunPreflight(scoped_ptr<SyncTaskToken> token) { 29 scoped_ptr<BlockingFactor> blocking_factor(new BlockingFactor); 30 blocking_factor->exclusive = true; 31 32 SyncTaskManager::UpdateBlockingFactor( 33 token.Pass(), blocking_factor.Pass(), 34 base::Bind(&CallRunExclusive, weak_ptr_factory_.GetWeakPtr())); 35 } 36 37 } // namespace drive_backend 38 } // namespace sync_file_system 39