OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_TOKEN_H_ | 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_TOKEN_H_ |
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_TOKEN_H_ | 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_TOKEN_H_ |
7 | 7 |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
12 #include "chrome/browser/sync_file_system/sync_callbacks.h" | 12 #include "chrome/browser/sync_file_system/sync_callbacks.h" |
13 #include "chrome/browser/sync_file_system/task_logger.h" | 13 #include "chrome/browser/sync_file_system/task_logger.h" |
14 | 14 |
15 namespace sync_file_system { | 15 namespace sync_file_system { |
16 namespace drive_backend { | 16 namespace drive_backend { |
17 | 17 |
18 class SyncTaskManager; | 18 class SyncTaskManager; |
19 struct BlockingFactor; | 19 struct TaskBlocker; |
20 | 20 |
21 // Represents a running sequence of SyncTasks. Owned by a callback chain that | 21 // Represents a running sequence of SyncTasks. Owned by a callback chain that |
22 // should run exclusively, and held by SyncTaskManager when no task is running. | 22 // should run exclusively, and held by SyncTaskManager when no task is running. |
23 class SyncTaskToken { | 23 class SyncTaskToken { |
24 public: | 24 public: |
25 static const int64 kTestingTaskTokenID; | 25 static const int64 kTestingTaskTokenID; |
26 static const int64 kForegroundTaskTokenID; | 26 static const int64 kForegroundTaskTokenID; |
27 static const int64 kMinimumBackgroundTaskTokenID; | 27 static const int64 kMinimumBackgroundTaskTokenID; |
28 | 28 |
29 static scoped_ptr<SyncTaskToken> CreateForTesting( | 29 static scoped_ptr<SyncTaskToken> CreateForTesting( |
30 const SyncStatusCallback& callback); | 30 const SyncStatusCallback& callback); |
31 static scoped_ptr<SyncTaskToken> CreateForForegroundTask( | 31 static scoped_ptr<SyncTaskToken> CreateForForegroundTask( |
32 const base::WeakPtr<SyncTaskManager>& manager, | 32 const base::WeakPtr<SyncTaskManager>& manager, |
33 base::SequencedTaskRunner* task_runner); | 33 base::SequencedTaskRunner* task_runner); |
34 static scoped_ptr<SyncTaskToken> CreateForBackgroundTask( | 34 static scoped_ptr<SyncTaskToken> CreateForBackgroundTask( |
35 const base::WeakPtr<SyncTaskManager>& manager, | 35 const base::WeakPtr<SyncTaskManager>& manager, |
36 base::SequencedTaskRunner* task_runner, | 36 base::SequencedTaskRunner* task_runner, |
37 int64 token_id, | 37 int64 token_id, |
38 scoped_ptr<BlockingFactor> blocking_factor); | 38 scoped_ptr<TaskBlocker> task_blocker); |
39 | 39 |
40 void UpdateTask(const tracked_objects::Location& location, | 40 void UpdateTask(const tracked_objects::Location& location, |
41 const SyncStatusCallback& callback); | 41 const SyncStatusCallback& callback); |
42 | 42 |
43 const tracked_objects::Location& location() const { return location_; } | 43 const tracked_objects::Location& location() const { return location_; } |
44 virtual ~SyncTaskToken(); | 44 virtual ~SyncTaskToken(); |
45 | 45 |
46 static SyncStatusCallback WrapToCallback(scoped_ptr<SyncTaskToken> token); | 46 static SyncStatusCallback WrapToCallback(scoped_ptr<SyncTaskToken> token); |
47 | 47 |
48 SyncTaskManager* manager() { return manager_.get(); } | 48 SyncTaskManager* manager() { return manager_.get(); } |
49 | 49 |
50 const SyncStatusCallback& callback() const { return callback_; } | 50 const SyncStatusCallback& callback() const { return callback_; } |
51 void clear_callback() { callback_.Reset(); } | 51 void clear_callback() { callback_.Reset(); } |
52 | 52 |
53 void set_blocking_factor(scoped_ptr<BlockingFactor> blocking_factor); | 53 void set_task_blocker(scoped_ptr<TaskBlocker> task_blocker); |
54 const BlockingFactor* blocking_factor() const; | 54 const TaskBlocker* task_blocker() const; |
55 void clear_blocking_factor(); | 55 void clear_task_blocker(); |
56 | 56 |
57 int64 token_id() const { return token_id_; } | 57 int64 token_id() const { return token_id_; } |
58 | 58 |
59 void InitializeTaskLog(const std::string& task_description); | 59 void InitializeTaskLog(const std::string& task_description); |
60 void FinalizeTaskLog(const std::string& result_description); | 60 void FinalizeTaskLog(const std::string& result_description); |
61 void RecordLog(const std::string& message); | 61 void RecordLog(const std::string& message); |
62 | 62 |
63 bool has_task_log() const { return task_log_; } | 63 bool has_task_log() const { return task_log_; } |
64 void SetTaskLog(scoped_ptr<TaskLogger::TaskLog> task_log); | 64 void SetTaskLog(scoped_ptr<TaskLogger::TaskLog> task_log); |
65 scoped_ptr<TaskLogger::TaskLog> PassTaskLog(); | 65 scoped_ptr<TaskLogger::TaskLog> PassTaskLog(); |
66 | 66 |
67 private: | 67 private: |
68 SyncTaskToken(const base::WeakPtr<SyncTaskManager>& manager, | 68 SyncTaskToken(const base::WeakPtr<SyncTaskManager>& manager, |
69 const scoped_refptr<base::SequencedTaskRunner>& task_runner, | 69 const scoped_refptr<base::SequencedTaskRunner>& task_runner, |
70 int64 token_id, | 70 int64 token_id, |
71 scoped_ptr<BlockingFactor> blocking_factor, | 71 scoped_ptr<TaskBlocker> task_blocker, |
72 const SyncStatusCallback& callback); | 72 const SyncStatusCallback& callback); |
73 | 73 |
74 base::WeakPtr<SyncTaskManager> manager_; | 74 base::WeakPtr<SyncTaskManager> manager_; |
75 scoped_refptr<base::SequencedTaskRunner> task_runner_; | 75 scoped_refptr<base::SequencedTaskRunner> task_runner_; |
76 tracked_objects::Location location_; | 76 tracked_objects::Location location_; |
77 int64 token_id_; | 77 int64 token_id_; |
78 SyncStatusCallback callback_; | 78 SyncStatusCallback callback_; |
79 | 79 |
80 scoped_ptr<TaskLogger::TaskLog> task_log_; | 80 scoped_ptr<TaskLogger::TaskLog> task_log_; |
81 scoped_ptr<BlockingFactor> blocking_factor_; | 81 scoped_ptr<TaskBlocker> task_blocker_; |
82 | 82 |
83 DISALLOW_COPY_AND_ASSIGN(SyncTaskToken); | 83 DISALLOW_COPY_AND_ASSIGN(SyncTaskToken); |
84 }; | 84 }; |
85 | 85 |
86 } // namespace drive_backend | 86 } // namespace drive_backend |
87 } // namespace sync_file_system | 87 } // namespace sync_file_system |
88 | 88 |
89 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_TOKEN_H_ | 89 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_SYNC_TASK_TOKEN_H_ |
OLD | NEW |