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 5e6b9e4da69ea631b72baeabc8d4f64cd9bd5a4a..d8dca0531d272ddf81d454ecaa26374d67164c16 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 |
@@ -223,9 +223,7 @@ void LocalToRemoteSyncer::RunExclusive(scoped_ptr<SyncTaskToken> token) { |
DCHECK(target_path_ == active_ancestor_path.Append(missing_components[0])); |
if (local_change_.file_type() == SYNC_FILE_TYPE_FILE) { |
token->RecordLog("Detected a new file."); |
- UploadNewFile(base::Bind( |
- &LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); |
+ UploadNewFile(token.Pass()); |
return; |
} |
@@ -263,9 +261,7 @@ void LocalToRemoteSyncer::HandleConflict(scoped_ptr<SyncTaskToken> token) { |
} |
if (local_change_.IsFile()) { |
- UploadNewFile(base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&token))); |
+ UploadNewFile(token.Pass()); |
return; |
} |
@@ -331,9 +327,7 @@ void LocalToRemoteSyncer::HandleExistingRemoteFile( |
// the remote folder and upload the file. |
DeleteRemoteFile(base::Bind(&LocalToRemoteSyncer::DidDeleteForUploadNewFile, |
weak_ptr_factory_.GetWeakPtr(), |
- base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&token)))); |
+ base::Passed(&token))); |
return; |
} |
@@ -550,20 +544,24 @@ void LocalToRemoteSyncer::DidGetRemoteMetadata( |
} |
void LocalToRemoteSyncer::DidDeleteForUploadNewFile( |
- const SyncStatusCallback& callback, |
+ scoped_ptr<SyncTaskToken> token, |
SyncStatusCode status) { |
if (status == SYNC_STATUS_HAS_CONFLICT) { |
- UpdateRemoteMetadata(remote_file_tracker_->file_id(), |
- base::Bind(&ReturnRetryOnSuccess, callback)); |
+ UpdateRemoteMetadata( |
+ remote_file_tracker_->file_id(), |
+ base::Bind(&ReturnRetryOnSuccess, |
+ base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ base::Passed(&token)))); |
return; |
} |
if (status != SYNC_STATUS_OK) { |
- callback.Run(status); |
+ SyncCompleted(token.Pass(), status); |
return; |
} |
- UploadNewFile(callback); |
+ UploadNewFile(token.Pass()); |
} |
void LocalToRemoteSyncer::DidDeleteForCreateFolder( |
@@ -587,7 +585,7 @@ void LocalToRemoteSyncer::DidDeleteForCreateFolder( |
CreateRemoteFolder(token.Pass()); |
} |
-void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) { |
+void LocalToRemoteSyncer::UploadNewFile(scoped_ptr<SyncTaskToken> token) { |
DCHECK(remote_parent_folder_tracker_); |
sync_action_ = SYNC_ACTION_ADDED; |
@@ -600,12 +598,12 @@ void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) { |
drive::DriveUploader::UploadNewFileOptions(), |
base::Bind(&LocalToRemoteSyncer::DidUploadNewFile, |
weak_ptr_factory_.GetWeakPtr(), |
- callback), |
+ base::Passed(&token)), |
google_apis::ProgressCallback()); |
} |
void LocalToRemoteSyncer::DidUploadNewFile( |
- const SyncStatusCallback& callback, |
+ scoped_ptr<SyncTaskToken> token, |
google_apis::GDataErrorCode error, |
const GURL& upload_location, |
scoped_ptr<google_apis::FileResource> entry) { |
@@ -614,18 +612,21 @@ void LocalToRemoteSyncer::DidUploadNewFile( |
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()->ReplaceActiveTrackerWithNewResource( |
- remote_parent_folder_tracker_->tracker_id(), *entry, callback); |
+ remote_parent_folder_tracker_->tracker_id(), *entry, |
+ base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ base::Passed(&token))); |
} |
void LocalToRemoteSyncer::CreateRemoteFolder( |
@@ -678,10 +679,7 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder( |
drive_service()->RemoveResourceFromDirectory( |
remote_parent_folder_tracker_->file_id(), file_id, |
base::Bind(&LocalToRemoteSyncer::DidDetachResourceForCreationConflict, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Bind(&LocalToRemoteSyncer::SyncCompleted, |
- weak_ptr_factory_.GetWeakPtr(), |
- base::Passed(&token)))); |
+ weak_ptr_factory_.GetWeakPtr(), base::Passed(&token))); |
return; |
} |
@@ -691,15 +689,15 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder( |
} |
void LocalToRemoteSyncer::DidDetachResourceForCreationConflict( |
- const SyncStatusCallback& callback, |
+ scoped_ptr<SyncTaskToken> token, |
google_apis::GDataErrorCode error) { |
SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); |
if (status != SYNC_STATUS_OK) { |
- callback.Run(status); |
+ SyncCompleted(token.Pass(), status); |
return; |
} |
- callback.Run(SYNC_STATUS_RETRY); |
+ SyncCompleted(token.Pass(), SYNC_STATUS_RETRY); |
} |
bool LocalToRemoteSyncer::IsContextReady() { |