| 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
|
|
|