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.
5 #include "chrome/browser/sync_file_system/drive_backend/sync_task.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"
12 namespace sync_file_system {
13 namespace drive_backend {
17 void CallRunExclusive(const base::WeakPtr<ExclusiveTask>& task,
18 scoped_ptr<SyncTaskToken> token) {
20 task->RunExclusive(SyncTaskToken::WrapToCallback(token.Pass()));
25 ExclusiveTask::ExclusiveTask() : weak_ptr_factory_(this) {}
26 ExclusiveTask::~ExclusiveTask() {}
28 void ExclusiveTask::RunPreflight(scoped_ptr<SyncTaskToken> token) {
29 scoped_ptr<TaskBlocker> task_blocker(new TaskBlocker);
30 task_blocker->exclusive = true;
32 SyncTaskManager::UpdateTaskBlocker(
33 token.Pass(), task_blocker.Pass(),
34 base::Bind(&CallRunExclusive, weak_ptr_factory_.GetWeakPtr()));
37 } // namespace drive_backend
38 } // namespace sync_file_system