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