Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1509)

Unified Diff: chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.cc

Issue 558603002: [SyncFS] Make MetadataDatabase operations synchronous (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@01_create
Patch Set: +TODO Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 50e048589da91107117070978a2a68df0c112523..5a620d017ce799fd9960f42a9665683c78c2e36c 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
@@ -370,7 +370,6 @@ void LocalToRemoteSyncer::HandleConflict(scoped_ptr<SyncTaskToken> token) {
remote_details.title() == title.AsUTF8Unsafe() &&
HasFileAsParent(remote_details,
remote_parent_folder_tracker_->file_id())) {
-
MoveToBackground(
base::Bind(&LocalToRemoteSyncer::UpdateTrackerForReusedFolder,
weak_ptr_factory_.GetWeakPtr(),
@@ -387,11 +386,9 @@ void LocalToRemoteSyncer::HandleConflict(scoped_ptr<SyncTaskToken> token) {
void LocalToRemoteSyncer::UpdateTrackerForReusedFolder(
const FileDetails& details,
scoped_ptr<SyncTaskToken> token) {
- metadata_database()->UpdateTracker(
- remote_file_tracker_->tracker_id(), details,
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&token)));
+ SyncStatusCode status = metadata_database()->UpdateTracker(
+ remote_file_tracker_->tracker_id(), details);
+ SyncCompleted(token.Pass(), status);
}
void LocalToRemoteSyncer::HandleExistingRemoteFile(
@@ -482,10 +479,9 @@ void LocalToRemoteSyncer::DidDeleteRemoteFile(
// resolution, ignore the local deletion.
if (status == SYNC_STATUS_OK ||
error == google_apis::HTTP_NOT_FOUND) {
- metadata_database()->UpdateByDeletedRemoteFile(
- remote_file_tracker_->file_id(),
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(), base::Passed(&token)));
+ SyncStatusCode status = metadata_database()->UpdateByDeletedRemoteFile(
+ remote_file_tracker_->file_id());
+ SyncCompleted(token.Pass(), status);
return;
}
@@ -551,11 +547,10 @@ void LocalToRemoteSyncer::DidUploadExistingFile(
}
DCHECK(entry);
- metadata_database()->UpdateByFileResource(
- *entry,
- base::Bind(&LocalToRemoteSyncer::DidUpdateDatabaseForUploadExistingFile,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&token)));
+ status = metadata_database()->UpdateByFileResource(*entry);
+
+ // TODO(tzik): Expand this function.
+ DidUpdateDatabaseForUploadExistingFile(token.Pass(), status);
}
void LocalToRemoteSyncer::DidUpdateDatabaseForUploadExistingFile(
@@ -581,12 +576,9 @@ void LocalToRemoteSyncer::DidUpdateDatabaseForUploadExistingFile(
details.title() == title.AsUTF8Unsafe() &&
HasFileAsParent(details,
remote_parent_folder_tracker_->file_id())) {
- metadata_database()->UpdateTracker(
- remote_file_tracker_->tracker_id(),
- file.details(),
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&token)));
+ SyncStatusCode status = metadata_database()->UpdateTracker(
+ remote_file_tracker_->tracker_id(), file.details());
+ SyncCompleted(token.Pass(), status);
return;
}
@@ -614,11 +606,9 @@ void LocalToRemoteSyncer::DidGetRemoteMetadata(
if (error == google_apis::HTTP_NOT_FOUND) {
retry_on_success_ = true;
- metadata_database()->UpdateByDeletedRemoteFile(
- file_id,
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&token)));
+ SyncStatusCode status =
+ metadata_database()->UpdateByDeletedRemoteFile(file_id);
+ SyncCompleted(token.Pass(), status);
return;
}
@@ -635,11 +625,8 @@ void LocalToRemoteSyncer::DidGetRemoteMetadata(
}
retry_on_success_ = true;
- metadata_database()->UpdateByFileResource(
- *entry,
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&token)));
+ status = metadata_database()->UpdateByFileResource(*entry);
+ SyncCompleted(token.Pass(), status);
}
void LocalToRemoteSyncer::UploadNewFile(scoped_ptr<SyncTaskToken> token) {
@@ -679,11 +666,9 @@ void LocalToRemoteSyncer::DidUploadNewFile(
return;
}
- metadata_database()->ReplaceActiveTrackerWithNewResource(
- remote_parent_folder_tracker_->tracker_id(), *entry,
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&token)));
+ status = metadata_database()->ReplaceActiveTrackerWithNewResource(
+ remote_parent_folder_tracker_->tracker_id(), *entry);
+ SyncCompleted(token.Pass(), status);
}
void LocalToRemoteSyncer::CreateRemoteFolder(
@@ -717,17 +702,14 @@ void LocalToRemoteSyncer::DidCreateRemoteFolder(
return;
}
+ status = SYNC_STATUS_FAILED;
MetadataDatabase::ActivationStatus activation_status =
metadata_database()->TryActivateTracker(
remote_parent_folder_tracker_->tracker_id(),
- file_id,
- base::Bind(&LocalToRemoteSyncer::SyncCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- base::Passed(token.Pass())));
+ file_id, &status);
switch (activation_status) {
case MetadataDatabase::ACTIVATION_PENDING:
- // The task will be finalized by the callback passed to MetadataDatabase
- // in this case.
+ SyncCompleted(token.Pass(), status);
return;
case MetadataDatabase::ACTIVATION_FAILED_ANOTHER_ACTIVE_TRACKER:
// The activation failed due to another tracker that has another parent.

Powered by Google App Engine
This is Rietveld 408576698