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

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

Issue 236313009: [SyncFS] Post tasks between SyncEngine and SyncWorker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Post callback functions Created 6 years, 8 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/sync_worker.cc
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc
index f58c66c3f83b268e4f5dfd2fb23dea0744b4bd74..260c6e4aa0d6373c573f064a6014c3406da388eb 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc
@@ -56,6 +56,30 @@ namespace {
void EmptyStatusCallback(SyncStatusCode status) {}
+template <typename T>
+void RelayToTaskRunner(
+ base::TaskRunner* task_runner,
+ const tracked_objects::Location& from_here,
+ const base::Callback<void(T)>& callback,
+ typename base::internal::CallbackParamTraits<T>::ForwardType& p1) {
+ task_runner->PostTask(from_here,
+ base::Bind(callback,
+ base::internal::CallbackForward(p1)));
+}
+
+template <typename T1, typename T2>
+void RelayToTaskRunner(
+ base::TaskRunner* task_runner,
+ const tracked_objects::Location& from_here,
+ const base::Callback<void(T1, T2)>& callback,
+ const T1& p1,
+ typename base::internal::CallbackParamTraits<T2>::ForwardType& p2) {
+ task_runner->PostTask(from_here,
+ base::Bind(callback,
+ p1,
+ base::internal::CallbackForward(p2)));
+}
+
} // namespace
scoped_ptr<SyncWorker> SyncWorker::CreateOnWorker(
@@ -99,7 +123,8 @@ void SyncWorker::RegisterOrigin(
scoped_ptr<RegisterAppTask> task(
new RegisterAppTask(context_.get(), origin.host()));
if (task->CanFinishImmediately()) {
- callback.Run(SYNC_STATUS_OK);
+ RelayToTaskRunner(context_->GetBlockingTaskRunner(),
+ FROM_HERE, callback, SYNC_STATUS_OK);
tzik 2014/04/17 17:48:32 All existing RelayToTaskRunner usage in this file
peria 2014/04/18 05:19:36 Done. I may have misunderstood the usage of RelayT
return;
}
@@ -211,8 +236,9 @@ void SyncWorker::SetSyncEnabled(bool enabled) {
if (old_state == GetCurrentState())
return;
- // TODO(peria): PostTask()
- sync_engine_->UpdateSyncEnabled(enabled);
+ context_->GetUiTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncEngine::UpdateSyncEnabled, sync_engine_, enabled));
}
SyncStatusCode SyncWorker::SetDefaultConflictResolutionPolicy(
@@ -274,8 +300,9 @@ void SyncWorker::NotifyLastOperationStatus(
UpdateServiceStateFromSyncStatusCode(status, used_network);
if (GetMetadataDatabase()) {
- // TODO(peria): Post task
- sync_engine_->NotifyLastOperationStatus();
+ context_->GetUiTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncEngine::NotifyLastOperationStatus, sync_engine_));
}
}
@@ -360,18 +387,22 @@ SyncWorker::SyncWorker(
void SyncWorker::DoDisableApp(const std::string& app_id,
const SyncStatusCallback& callback) {
- if (GetMetadataDatabase())
+ if (GetMetadataDatabase()) {
GetMetadataDatabase()->DisableApp(app_id, callback);
- else
- callback.Run(SYNC_STATUS_OK);
+ } else {
+ RelayToTaskRunner(context_->GetBlockingTaskRunner(),
+ FROM_HERE, callback, SYNC_STATUS_OK);
+ }
}
void SyncWorker::DoEnableApp(const std::string& app_id,
const SyncStatusCallback& callback) {
- if (GetMetadataDatabase())
+ if (GetMetadataDatabase()) {
GetMetadataDatabase()->EnableApp(app_id, callback);
- else
- callback.Run(SYNC_STATUS_OK);
+ } else {
+ RelayToTaskRunner(context_->GetBlockingTaskRunner(),
+ FROM_HERE, callback, SYNC_STATUS_OK);
+ }
}
void SyncWorker::PostInitializeTask() {
@@ -410,8 +441,9 @@ void SyncWorker::DidInitialize(SyncEngineInitializer* initializer,
if (metadata_database)
context_->SetMetadataDatabase(metadata_database.Pass());
- // TODO(peria): Post task
- sync_engine_->UpdateRegisteredApps();
+ context_->GetUiTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncEngine::UpdateRegisteredApps, sync_engine_));
}
void SyncWorker::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
@@ -420,13 +452,18 @@ void SyncWorker::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
if (syncer->is_sync_root_deletion()) {
MetadataDatabase::ClearDatabase(context_->PassMetadataDatabase());
PostInitializeTask();
- callback.Run(status, syncer->url());
+ RelayToTaskRunner(context_->GetUiTaskRunner(),
+ FROM_HERE,
+ callback,
+ status,
+ syncer->url());
return;
}
if (status == SYNC_STATUS_OK) {
- // TODO(peria): Post task
- sync_engine_->DidProcessRemoteChange(syncer);
+ context_->GetUiTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncEngine::DidProcessRemoteChange, sync_engine_, syncer));
if (syncer->sync_action() == SYNC_ACTION_DELETED &&
syncer->url().is_valid() &&
@@ -435,13 +472,18 @@ void SyncWorker::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
}
should_check_conflict_ = true;
}
- callback.Run(status, syncer->url());
+
+ RelayToTaskRunner(context_->GetUiTaskRunner(),
+ FROM_HERE,
+ callback,
+ status,
+ syncer->url());
}
void SyncWorker::DidApplyLocalChange(LocalToRemoteSyncer* syncer,
const SyncStatusCallback& callback,
SyncStatusCode status) {
- // TODO(peria): Post task
+ // TODO(peria): PostTask (Simple replace fails DriveBackendSync* tests)
sync_engine_->DidApplyLocalChange(syncer, status);
if (status == SYNC_STATUS_UNKNOWN_ORIGIN && syncer->url().is_valid()) {
@@ -464,16 +506,11 @@ void SyncWorker::DidApplyLocalChange(LocalToRemoteSyncer* syncer,
base::TimeDelta::FromSeconds(kListChangesRetryDelaySeconds);
}
- if (status != SYNC_STATUS_OK &&
- status != SYNC_STATUS_NO_CHANGE_TO_SYNC) {
- callback.Run(status);
- return;
- }
-
if (status == SYNC_STATUS_OK)
should_check_conflict_ = true;
- callback.Run(status);
+ RelayToTaskRunner(context_->GetBlockingTaskRunner(),
+ FROM_HERE, callback, status);
}
void SyncWorker::MaybeStartFetchChanges() {
@@ -583,8 +620,10 @@ void SyncWorker::UpdateServiceState(RemoteServiceState state,
util::Log(logging::LOG_VERBOSE, FROM_HERE,
"Service state changed: %d->%d: %s",
old_state, GetCurrentState(), description.c_str());
- // TODO(peria): Post task
- sync_engine_->UpdateServiceState(description);
+
+ context_->GetUiTaskRunner()->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncEngine::UpdateServiceState, sync_engine_, description));
}
} // namespace drive_backend

Powered by Google App Engine
This is Rietveld 408576698