Index: chrome/browser/sync_file_system/drive_file_sync_service.cc |
diff --git a/chrome/browser/sync_file_system/drive_file_sync_service.cc b/chrome/browser/sync_file_system/drive_file_sync_service.cc |
index 6360c6deadec9f55d8278f6f24aec1eb5b245677..dccdfcd29177fb7df4b2dcaf9fa990fbb30e1c01 100644 |
--- a/chrome/browser/sync_file_system/drive_file_sync_service.cc |
+++ b/chrome/browser/sync_file_system/drive_file_sync_service.cc |
@@ -81,8 +81,10 @@ void EmptyStatusCallback(SyncStatusCode code) {} |
void DidRemoveOrigin(const GURL& origin, SyncStatusCode status) { |
// TODO(calvinlo): Disable syncing if status not ok (http://crbug.com/171611). |
DCHECK_EQ(SYNC_STATUS_OK, status); |
- LOG(WARNING) << "Remove origin failed for: " << origin.spec() |
- << " status=" << status; |
+ if (status != SYNC_STATUS_OK) { |
+ LOG(WARNING) << "Remove origin failed for: " << origin.spec() |
+ << " status=" << status; |
+ } |
} |
FileChange CreateFileChange(bool is_deleted) { |
@@ -404,6 +406,28 @@ void DriveFileSyncService::UnregisterOriginForTrackingChanges( |
AsWeakPtr(), base::Passed(&token), callback)); |
} |
+void DriveFileSyncService::DeleteOriginDirectory( |
+ const GURL& origin, |
+ const SyncStatusCallback& callback) { |
+ scoped_ptr<TaskToken> token(GetToken( |
+ FROM_HERE, TASK_TYPE_DATABASE, "Delete Origin Directory")); |
+ if (!token) { |
+ pending_tasks_.push_back(base::Bind( |
+ &DriveFileSyncService::DeleteOriginDirectory, |
+ AsWeakPtr(), origin, callback)); |
+ return; |
+ } |
+ |
+ // Convert origin's directory GURL to ResourceID and delete it. Expected MD5 |
+ // is empty to force delete (i.e. skip conflict resolution). |
+ std::string resource_id = metadata_store_->GetResourceIdForOrigin(origin); |
+ sync_client_->DeleteFile( |
+ resource_id, |
+ std::string(), |
+ base::Bind(&DriveFileSyncService::DidDeleteOriginDirectory, |
+ AsWeakPtr(), base::Passed(&token), callback)); |
+} |
+ |
void DriveFileSyncService::ProcessRemoteChange( |
RemoteChangeProcessor* processor, |
const SyncFileCallback& callback) { |
@@ -974,6 +998,15 @@ void DriveFileSyncService::DidGetDirectoryForOrigin( |
callback.Run(SYNC_STATUS_OK); |
} |
+void DriveFileSyncService::DidDeleteOriginDirectory( |
+ scoped_ptr<TaskToken> token, |
+ const SyncStatusCallback& callback, |
+ google_apis::GDataErrorCode error) { |
+ SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); |
+ NotifyTaskDone(status, token.Pass()); |
+ callback.Run(status); |
+} |
+ |
void DriveFileSyncService::DidGetLargestChangeStampForBatchSync( |
scoped_ptr<TaskToken> token, |
const GURL& origin, |