Index: chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h |
diff --git a/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h b/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h |
index 9666375025598a2918ef5c987e9e5b89edebf9fb..5ddd9b6546ed33f32403b8e1477631bd40173881 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h |
+++ b/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h |
@@ -41,37 +41,108 @@ class RemoteToLocalSyncer : public SyncTask { |
RemoteToLocalSyncer(SyncEngineContext* sync_context, |
int priorities); |
virtual ~RemoteToLocalSyncer(); |
+ |
virtual void Run(const SyncStatusCallback& callback) OVERRIDE; |
private: |
- void AnalyzeCurrentDirtyTracker(); |
- |
+ // Dispatches remote change to handleing functions or to SyncCompleted() |
kinuko
2013/11/09 23:33:25
handleing -> handler or handling
tzik
2013/11/11 04:45:34
Done.
|
+ // directly. |
+ // This function uses information only in MetadataDatabase. |
+ // |
+ // If the tracker doesn't have remote metadata: |
+ // # The file is listed in a folder soon before this operation. |
kinuko
2013/11/09 23:33:25
soon before -> you mean 'right before' ?
tzik
2013/11/11 04:45:34
Done.
|
+ // - Dispatch to HandleMissingRemoteMetadata to fetch remote metadata. |
+ // Else, if the tracker is not active or the dominating app-root is disabled: |
+ // # Assume the file has remote metadata. |
+ // - Dispatch to HandleInactiveFile() to resolve offline solvable dirtiness. |
+ // Else, if the tracker doesn't have synced metadata: |
+ // # Assume the tracker has remote metadata and the tracker is active. |
+ // # The tracker is not yet synced ever. |
+ // - If the file is remotely deleted, do nothing to local file and dispatch |
+ // directly to SyncCompleted(). |
+ // - Else, if the file is a regular file, dispatch to HandleNewFile(). |
+ // - Else, if the file is a folder, dispatch to HandleNewFolder(). |
+ // - Else, the file should be a unsupported active file. This should not |
+ // happen. |
+ // Else, if the remote metadata is marked as deleted: |
+ // # Most of the remote metadata is missing including title, kind and md5. |
+ // - Dispatch to HandleDeletion(). |
+ // Else, if the tracker have different title between its synced metadata and |
+ // remote metadata: |
+ // # Assume the tracker is active and has remote metetadata and synced |
+ // metadata. |
+ // # The file is remotely renamed. |
+ // # Maybe, this can be decomposed to delete and update. |
+ // - Dispatch to HandleRemoteRename(). |
+ // Else, if the tracker's parent is not a parent of the remote metadata: |
+ // # The file has reorganized. |
+ // # Maybe, this can be decomposed to delete and update. |
+ // - Dispatch to HandreReorganize(). |
+ // Else, if the folder is a regular file and the md5 in remote metadata does |
+ // not match the md5 in synced metadata: |
+ // # The file is modified remotely. |
+ // - Dispatch to HandleContentUpdate(). |
+ // Else, if the tracker is a folder and it has needs_folder_listing flag: |
+ // - Dispatch to HandleFolderListing() |
+ // Else, there should be no change to sync. |
+ // - Dispatch to HandleOfflineSolvable() |
void ResolveRemoteChange(const SyncStatusCallback& callback); |
- void GetRemoteResource(const SyncStatusCallback& callback); |
+ // Handles missing remote metadata case. |
+ // Fetches remote metadata and updates MetadataDatabase by that. The sync |
+ // operation itself will be deferred to the next sync round. |
+ // Note: if the file is not found, it should be handled as if deleted. |
+ void HandleMissingRemoteMetadata(const SyncStatusCallback& callback); |
void DidGetRemoteResource(const SyncStatusCallback& callback, |
int64 change_id, |
google_apis::GDataErrorCode error, |
scoped_ptr<google_apis::ResourceEntry> entry); |
- void HandleDeletion(const SyncStatusCallback& callback); |
- void DidPrepareForDeletion(const SyncStatusCallback& callback, |
- SyncStatusCode status); |
+ // Handles modification to inactive or disabled-app tracker. |
+ // TODO(tzik): Write details and implement this. |
+ void HandleInactiveTracker(const SyncStatusCallback& callback); |
+ // Handles remotely added file. Needs Prepare() call. |
+ // TODO(tzik): Write details and implement this. |
void HandleNewFile(const SyncStatusCallback& callback); |
void DidPrepareForNewFile(const SyncStatusCallback& callback, |
SyncStatusCode status); |
+ // Handles remotely added folder. Needs Prepare() call. |
+ // TODO(tzik): Write details and implement this. |
+ void HandleNewFolder(const SyncStatusCallback& callback); |
+ |
+ // Handles deleted remote file. Needs Prepare() call. |
+ // If the deleted tracker is the sync-root: |
+ // - TODO(tzik): Needs special handling. |
+ // Else, if the deleted tracker is a app-root: |
+ // - TODO(tzik): Needs special handling. |
+ // Else, if the local file is already deleted: |
+ // - Do nothing anymore to the local, call SyncCompleted(). |
+ // Else, if the local file is modified: |
+ // - Do nothing to the local file, call SyncCompleted(). |
+ // Else, if the local file is not modified: |
+ // - Delete local file. |
+ // # Note: if the local file is a folder, delete recursively. |
+ void HandleDeletion(const SyncStatusCallback& callback); |
+ void DidPrepareForDeletion(const SyncStatusCallback& callback, |
+ SyncStatusCode status); |
+ |
+ // TODO(tzik): Write details and implement this. |
+ void HandleRename(const SyncStatusCallback& callback); |
+ |
+ // TODO(tzik): Write details and implement this. |
+ void HandleReorganize(const SyncStatusCallback& callback); |
+ |
+ // Handles new file. Needs Prepare() call. |
void HandleContentUpdate(const SyncStatusCallback& callback); |
void DidPrepareForContentUpdate(const SyncStatusCallback& callback, |
SyncStatusCode status); |
- void ListFolderContent(const SyncStatusCallback& callback); |
+ void HandleFolderContentListing(const SyncStatusCallback& callback); |
void DidPrepareForFolderListing(const SyncStatusCallback& callback, |
SyncStatusCode status); |
- void HandleRename(const SyncStatusCallback& callback); |
- void HandleReorganize(const SyncStatusCallback& callback); |
void HandleOfflineSolvable(const SyncStatusCallback& callback); |
void SyncCompleted(const SyncStatusCallback& callback); |
@@ -93,20 +164,8 @@ class RemoteToLocalSyncer : public SyncTask { |
SyncEngineContext* sync_context_; // Not owned. |
int priorities_; |
- FileTracker dirty_tracker_; |
- FileTracker parent_tracker_; |
- FileMetadata remote_metadata_; |
- |
- bool missing_remote_details_; |
- bool missing_synced_details_; |
- bool deleted_remote_details_; |
- bool deleted_synced_details_; |
- bool title_changed_; |
- bool content_changed_; |
- bool needs_folder_listing_; |
- bool missing_parent_; |
- |
- bool sync_root_modification_; |
+ scoped_ptr<FileTracker> dirty_tracker_; |
+ scoped_ptr<FileMetadata> remote_metadata_; |
fileapi::FileSystemURL url_; |