Index: chrome/browser/chromeos/drive/sync_client.h |
diff --git a/chrome/browser/chromeos/drive/sync_client.h b/chrome/browser/chromeos/drive/sync_client.h |
index a8f6d1b3a57ba8d7bec1b6afb0fd00e5375072e2..3aab63f02a8776f09aeb9cb2a8151b760b27bdc4 100644 |
--- a/chrome/browser/chromeos/drive/sync_client.h |
+++ b/chrome/browser/chromeos/drive/sync_client.h |
@@ -14,6 +14,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/time/time.h" |
#include "chrome/browser/chromeos/drive/file_errors.h" |
+#include "chrome/browser/chromeos/drive/job_scheduler.h" |
#include "chrome/browser/chromeos/drive/resource_metadata.h" |
namespace base { |
@@ -93,25 +94,38 @@ class SyncClient { |
// States of sync tasks. |
enum SyncState { |
- PENDING, |
- RUNNING, |
+ SUSPENDED, // Task is currently inactive. |
+ PENDING, // Task is going to run. |
+ RUNNING, // Task is running. |
}; |
+ typedef std::pair<SyncType, std::string> SyncTaskKey; |
+ |
struct SyncTask { |
SyncTask(); |
~SyncTask(); |
SyncState state; |
- base::Callback<base::Closure()> task; |
+ ClientContext context; |
+ base::Callback<base::Closure(const ClientContext& context)> task; |
bool should_run_again; |
base::Closure cancel_closure; |
+ std::vector<SyncTaskKey> dependent_tasks; |
}; |
- typedef std::map<std::pair<SyncType, std::string>, SyncTask> SyncTasks; |
+ typedef std::map<SyncTaskKey, SyncTask> SyncTasks; |
+ |
+ // Performs a FETCH task. |
+ base::Closure PerformFetchTask(const std::string& local_id, |
+ const ClientContext& context); |
// Adds a FETCH task. |
void AddFetchTaskInternal(const std::string& local_id, |
const base::TimeDelta& delay); |
+ // Performs a UPDATE task. |
+ base::Closure PerformUpdateTask(const std::string& local_id, |
+ const ClientContext& context); |
+ |
// Adds a UPDATE task. |
void AddUpdateTaskInternal(const ClientContext& context, |
const std::string& local_id, |
@@ -132,8 +146,10 @@ class SyncClient { |
// Adds fetch tasks. |
void AddFetchTasks(const std::vector<std::string>* local_ids); |
- // Erases the task and returns true if task is completed. |
- bool OnTaskComplete(SyncType type, const std::string& local_id); |
+ // Called when a task is completed. |
+ void OnTaskComplete(SyncType type, |
+ const std::string& local_id, |
+ FileError error); |
// Called when the file for |local_id| is fetched. |
void OnFetchFileComplete(const std::string& local_id, |
@@ -141,12 +157,11 @@ class SyncClient { |
const base::FilePath& local_path, |
scoped_ptr<ResourceEntry> entry); |
- // Called when the entry is updated. |
- void OnUpdateComplete(const std::string& local_id, FileError error); |
- |
- // Adds update tasks for |entries|. |
- void AddChildUpdateTasks(const ResourceEntryVector* entries, |
- FileError error); |
+ // Adds the task as a dependent task of the parent entry's task. |
+ void AddDependentTask(SyncType type, |
+ const std::string& local_id, |
+ const ResourceEntry* entry, |
+ FileError error); |
scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; |
file_system::OperationObserver* operation_observer_; |