Index: chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc b/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc |
index d8dca0531d272ddf81d454ecaa26374d67164c16..321be8d2a65d32156889ddc0fa37d04e700cd23e 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc |
@@ -42,13 +42,6 @@ scoped_ptr<FileTracker> FindTrackerByID(MetadataDatabase* metadata_database, |
return scoped_ptr<FileTracker>(); |
} |
-void ReturnRetryOnSuccess(const SyncStatusCallback& callback, |
- SyncStatusCode status) { |
- if (status == SYNC_STATUS_OK) |
- status = SYNC_STATUS_RETRY; |
- callback.Run(status); |
-} |
- |
bool IsLocalFileMissing(const SyncFileMetadata& local_metadata, |
const FileChange& local_change) { |
return local_metadata.file_type == SYNC_FILE_TYPE_UNKNOWN || |
@@ -442,10 +435,7 @@ void LocalToRemoteSyncer::DidUploadExistingFile( |
needs_remote_change_listing_ = true; |
UpdateRemoteMetadata( |
remote_file_tracker_->file_id(), |
- base::Bind(&ReturnRetryOnSuccess, |
- base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&token)))); |
+ token.Pass()); |
return; |
} |
@@ -506,41 +496,49 @@ void LocalToRemoteSyncer::DidUpdateDatabaseForUploadExistingFile( |
void LocalToRemoteSyncer::UpdateRemoteMetadata( |
const std::string& file_id, |
- const SyncStatusCallback& callback) { |
+ scoped_ptr<SyncTaskToken> token) { |
DCHECK(remote_file_tracker_); |
drive_service()->GetFileResource( |
file_id, |
base::Bind(&LocalToRemoteSyncer::DidGetRemoteMetadata, |
weak_ptr_factory_.GetWeakPtr(), |
- file_id, callback)); |
+ file_id, base::Passed(&token))); |
} |
void LocalToRemoteSyncer::DidGetRemoteMetadata( |
const std::string& file_id, |
- const SyncStatusCallback& callback, |
+ scoped_ptr<SyncTaskToken> token, |
google_apis::GDataErrorCode error, |
scoped_ptr<google_apis::FileResource> entry) { |
DCHECK(sync_context_->GetWorkerTaskRunner()->RunsTasksOnCurrentThread()); |
if (error == google_apis::HTTP_NOT_FOUND) { |
- metadata_database()->UpdateByDeletedRemoteFile(file_id, callback); |
+ metadata_database()->UpdateByDeletedRemoteFile( |
+ file_id, |
+ base::Bind(&LocalToRemoteSyncer::CompleteWithRetryStatus, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ base::Passed(&token))); |
return; |
} |
SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); |
if (status != SYNC_STATUS_OK) { |
- callback.Run(status); |
+ SyncCompleted(token.Pass(), status); |
return; |
} |
if (!entry) { |
NOTREACHED(); |
- callback.Run(SYNC_STATUS_FAILED); |
+ SyncCompleted(token.Pass(), SYNC_STATUS_FAILED); |
return; |
} |
- metadata_database()->UpdateByFileResource(*entry, callback); |
+ metadata_database()->UpdateByFileResource( |
+ *entry, |
+ base::Bind(&LocalToRemoteSyncer::CompleteWithRetryStatus, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ base::Passed(&token))); |
} |
void LocalToRemoteSyncer::DidDeleteForUploadNewFile( |
@@ -549,10 +547,7 @@ void LocalToRemoteSyncer::DidDeleteForUploadNewFile( |
if (status == SYNC_STATUS_HAS_CONFLICT) { |
UpdateRemoteMetadata( |
remote_file_tracker_->file_id(), |
- base::Bind(&ReturnRetryOnSuccess, |
- base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&token)))); |
+ token.Pass()); |
return; |
} |
@@ -568,12 +563,7 @@ void LocalToRemoteSyncer::DidDeleteForCreateFolder( |
scoped_ptr<SyncTaskToken> token, |
SyncStatusCode status) { |
if (status == SYNC_STATUS_HAS_CONFLICT) { |
- UpdateRemoteMetadata( |
- remote_file_tracker_->file_id(), |
- base::Bind(&ReturnRetryOnSuccess, |
- base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&token)))); |
+ UpdateRemoteMetadata(remote_file_tracker_->file_id(), token.Pass()); |
return; |
} |
@@ -720,5 +710,13 @@ MetadataDatabase* LocalToRemoteSyncer::metadata_database() { |
return sync_context_->GetMetadataDatabase(); |
} |
+void LocalToRemoteSyncer::CompleteWithRetryStatus( |
+ scoped_ptr<SyncTaskToken> token, |
+ SyncStatusCode status) { |
+ if (status == SYNC_STATUS_OK) |
+ status = SYNC_STATUS_RETRY; |
+ SyncCompleted(token.Pass(), status); |
+} |
+ |
} // namespace drive_backend |
} // namespace sync_file_system |