Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / drive_backend / sync_task.cc
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<TaskBlocker> task_blocker(new TaskBlocker);
30   task_blocker->exclusive = true;
31
32   SyncTaskManager::UpdateTaskBlocker(
33       token.Pass(), task_blocker.Pass(),
34       base::Bind(&CallRunExclusive, weak_ptr_factory_.GetWeakPtr()));
35 }
36
37 }  // namespace drive_backend
38 }  // namespace sync_file_system