Commit 746cc835 authored by tzik@chromium.org's avatar tzik@chromium.org

[SyncFS] Replace callback with token in UploadNewFile

BUG=344769

Review URL: https://codereview.chromium.org/330283002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278005 0039d316-1c4b-4281-b951-d872f2087c98
parent 4ea89a6a
...@@ -223,9 +223,7 @@ void LocalToRemoteSyncer::RunExclusive(scoped_ptr<SyncTaskToken> token) { ...@@ -223,9 +223,7 @@ void LocalToRemoteSyncer::RunExclusive(scoped_ptr<SyncTaskToken> token) {
DCHECK(target_path_ == active_ancestor_path.Append(missing_components[0])); DCHECK(target_path_ == active_ancestor_path.Append(missing_components[0]));
if (local_change_.file_type() == SYNC_FILE_TYPE_FILE) { if (local_change_.file_type() == SYNC_FILE_TYPE_FILE) {
token->RecordLog("Detected a new file."); token->RecordLog("Detected a new file.");
UploadNewFile(base::Bind( UploadNewFile(token.Pass());
&LocalToRemoteSyncer::SyncCompleted,
weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
return; return;
} }
...@@ -263,9 +261,7 @@ void LocalToRemoteSyncer::HandleConflict(scoped_ptr<SyncTaskToken> token) { ...@@ -263,9 +261,7 @@ void LocalToRemoteSyncer::HandleConflict(scoped_ptr<SyncTaskToken> token) {
} }
if (local_change_.IsFile()) { if (local_change_.IsFile()) {
UploadNewFile(base::Bind(&LocalToRemoteSyncer::SyncCompleted, UploadNewFile(token.Pass());
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token)));
return; return;
} }
...@@ -331,9 +327,7 @@ void LocalToRemoteSyncer::HandleExistingRemoteFile( ...@@ -331,9 +327,7 @@ void LocalToRemoteSyncer::HandleExistingRemoteFile(
// the remote folder and upload the file. // the remote folder and upload the file.
DeleteRemoteFile(base::Bind(&LocalToRemoteSyncer::DidDeleteForUploadNewFile, DeleteRemoteFile(base::Bind(&LocalToRemoteSyncer::DidDeleteForUploadNewFile,
weak_ptr_factory_.GetWeakPtr(), weak_ptr_factory_.GetWeakPtr(),
base::Bind(&LocalToRemoteSyncer::SyncCompleted, base::Passed(&token)));
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token))));
return; return;
} }
...@@ -550,20 +544,24 @@ void LocalToRemoteSyncer::DidGetRemoteMetadata( ...@@ -550,20 +544,24 @@ void LocalToRemoteSyncer::DidGetRemoteMetadata(
} }
void LocalToRemoteSyncer::DidDeleteForUploadNewFile( void LocalToRemoteSyncer::DidDeleteForUploadNewFile(
const SyncStatusCallback& callback, scoped_ptr<SyncTaskToken> token,
SyncStatusCode status) { SyncStatusCode status) {
if (status == SYNC_STATUS_HAS_CONFLICT) { if (status == SYNC_STATUS_HAS_CONFLICT) {
UpdateRemoteMetadata(remote_file_tracker_->file_id(), UpdateRemoteMetadata(
base::Bind(&ReturnRetryOnSuccess, callback)); remote_file_tracker_->file_id(),
base::Bind(&ReturnRetryOnSuccess,
base::Bind(&LocalToRemoteSyncer::SyncCompleted,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token))));
return; return;
} }
if (status != SYNC_STATUS_OK) { if (status != SYNC_STATUS_OK) {
callback.Run(status); SyncCompleted(token.Pass(), status);
return; return;
} }
UploadNewFile(callback); UploadNewFile(token.Pass());
} }
void LocalToRemoteSyncer::DidDeleteForCreateFolder( void LocalToRemoteSyncer::DidDeleteForCreateFolder(
...@@ -587,7 +585,7 @@ void LocalToRemoteSyncer::DidDeleteForCreateFolder( ...@@ -587,7 +585,7 @@ void LocalToRemoteSyncer::DidDeleteForCreateFolder(
CreateRemoteFolder(token.Pass()); CreateRemoteFolder(token.Pass());
} }
void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) { void LocalToRemoteSyncer::UploadNewFile(scoped_ptr<SyncTaskToken> token) {
DCHECK(remote_parent_folder_tracker_); DCHECK(remote_parent_folder_tracker_);
sync_action_ = SYNC_ACTION_ADDED; sync_action_ = SYNC_ACTION_ADDED;
...@@ -600,12 +598,12 @@ void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) { ...@@ -600,12 +598,12 @@ void LocalToRemoteSyncer::UploadNewFile(const SyncStatusCallback& callback) {
drive::DriveUploader::UploadNewFileOptions(), drive::DriveUploader::UploadNewFileOptions(),
base::Bind(&LocalToRemoteSyncer::DidUploadNewFile, base::Bind(&LocalToRemoteSyncer::DidUploadNewFile,
weak_ptr_factory_.GetWeakPtr(), weak_ptr_factory_.GetWeakPtr(),
callback), base::Passed(&token)),
google_apis::ProgressCallback()); google_apis::ProgressCallback());
} }
void LocalToRemoteSyncer::DidUploadNewFile( void LocalToRemoteSyncer::DidUploadNewFile(
const SyncStatusCallback& callback, scoped_ptr<SyncTaskToken> token,
google_apis::GDataErrorCode error, google_apis::GDataErrorCode error,
const GURL& upload_location, const GURL& upload_location,
scoped_ptr<google_apis::FileResource> entry) { scoped_ptr<google_apis::FileResource> entry) {
...@@ -614,18 +612,21 @@ void LocalToRemoteSyncer::DidUploadNewFile( ...@@ -614,18 +612,21 @@ void LocalToRemoteSyncer::DidUploadNewFile(
SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
if (status != SYNC_STATUS_OK) { if (status != SYNC_STATUS_OK) {
callback.Run(status); SyncCompleted(token.Pass(), status);
return; return;
} }
if (!entry) { if (!entry) {
NOTREACHED(); NOTREACHED();
callback.Run(SYNC_STATUS_FAILED); SyncCompleted(token.Pass(), SYNC_STATUS_FAILED);
return; return;
} }
metadata_database()->ReplaceActiveTrackerWithNewResource( 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( void LocalToRemoteSyncer::CreateRemoteFolder(
...@@ -678,10 +679,7 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder( ...@@ -678,10 +679,7 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder(
drive_service()->RemoveResourceFromDirectory( drive_service()->RemoveResourceFromDirectory(
remote_parent_folder_tracker_->file_id(), file_id, remote_parent_folder_tracker_->file_id(), file_id,
base::Bind(&LocalToRemoteSyncer::DidDetachResourceForCreationConflict, base::Bind(&LocalToRemoteSyncer::DidDetachResourceForCreationConflict,
weak_ptr_factory_.GetWeakPtr(), weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
base::Bind(&LocalToRemoteSyncer::SyncCompleted,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&token))));
return; return;
} }
...@@ -691,15 +689,15 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder( ...@@ -691,15 +689,15 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder(
} }
void LocalToRemoteSyncer::DidDetachResourceForCreationConflict( void LocalToRemoteSyncer::DidDetachResourceForCreationConflict(
const SyncStatusCallback& callback, scoped_ptr<SyncTaskToken> token,
google_apis::GDataErrorCode error) { google_apis::GDataErrorCode error) {
SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error); SyncStatusCode status = GDataErrorCodeToSyncStatusCode(error);
if (status != SYNC_STATUS_OK) { if (status != SYNC_STATUS_OK) {
callback.Run(status); SyncCompleted(token.Pass(), status);
return; return;
} }
callback.Run(SYNC_STATUS_RETRY); SyncCompleted(token.Pass(), SYNC_STATUS_RETRY);
} }
bool LocalToRemoteSyncer::IsContextReady() { bool LocalToRemoteSyncer::IsContextReady() {
......
...@@ -84,13 +84,13 @@ class LocalToRemoteSyncer : public SyncTask { ...@@ -84,13 +84,13 @@ class LocalToRemoteSyncer : public SyncTask {
google_apis::GDataErrorCode error, google_apis::GDataErrorCode error,
scoped_ptr<google_apis::FileResource> entry); scoped_ptr<google_apis::FileResource> entry);
void DidDeleteForUploadNewFile(const SyncStatusCallback& callback, void DidDeleteForUploadNewFile(scoped_ptr<SyncTaskToken> token,
SyncStatusCode status); SyncStatusCode status);
void DidDeleteForCreateFolder(scoped_ptr<SyncTaskToken> token, void DidDeleteForCreateFolder(scoped_ptr<SyncTaskToken> token,
SyncStatusCode status); SyncStatusCode status);
void UploadNewFile(const SyncStatusCallback& callback); void UploadNewFile(scoped_ptr<SyncTaskToken> token);
void DidUploadNewFile(const SyncStatusCallback& callback, void DidUploadNewFile(scoped_ptr<SyncTaskToken> token,
google_apis::GDataErrorCode error, google_apis::GDataErrorCode error,
const GURL& upload_location, const GURL& upload_location,
scoped_ptr<google_apis::FileResource> entry); scoped_ptr<google_apis::FileResource> entry);
...@@ -99,7 +99,7 @@ class LocalToRemoteSyncer : public SyncTask { ...@@ -99,7 +99,7 @@ class LocalToRemoteSyncer : public SyncTask {
void DidCreateRemoteFolder(scoped_ptr<SyncTaskToken> token, void DidCreateRemoteFolder(scoped_ptr<SyncTaskToken> token,
const std::string& file_id, const std::string& file_id,
SyncStatusCode status); SyncStatusCode status);
void DidDetachResourceForCreationConflict(const SyncStatusCallback& callback, void DidDetachResourceForCreationConflict(scoped_ptr<SyncTaskToken> token,
google_apis::GDataErrorCode error); google_apis::GDataErrorCode error);
bool IsContextReady(); bool IsContextReady();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment