| 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..856ce68ded6857d26b97cac3afed1e259469f0f3 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/sync_worker.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker.cc
|
| @@ -99,10 +99,12 @@ void SyncWorker::RegisterOrigin(
|
| scoped_ptr<RegisterAppTask> task(
|
| new RegisterAppTask(context_.get(), origin.host()));
|
| if (task->CanFinishImmediately()) {
|
| - callback.Run(SYNC_STATUS_OK);
|
| + context_->GetUiTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(callback, SYNC_STATUS_OK));
|
| return;
|
| }
|
|
|
| + // TODO(peria): Forward |callback| to UI thread.
|
| task_manager_->ScheduleSyncTask(
|
| FROM_HERE,
|
| task.PassAs<SyncTask>(),
|
| @@ -113,6 +115,7 @@ void SyncWorker::RegisterOrigin(
|
| void SyncWorker::EnableOrigin(
|
| const GURL& origin,
|
| const SyncStatusCallback& callback) {
|
| + // TODO(peria): Forward |callback| to UI thread.
|
| task_manager_->ScheduleTask(
|
| FROM_HERE,
|
| base::Bind(&SyncWorker::DoEnableApp,
|
| @@ -125,6 +128,7 @@ void SyncWorker::EnableOrigin(
|
| void SyncWorker::DisableOrigin(
|
| const GURL& origin,
|
| const SyncStatusCallback& callback) {
|
| + // TODO(peria): Forward |callback| to UI thread.
|
| task_manager_->ScheduleTask(
|
| FROM_HERE,
|
| base::Bind(&SyncWorker::DoDisableApp,
|
| @@ -138,6 +142,7 @@ void SyncWorker::UninstallOrigin(
|
| const GURL& origin,
|
| RemoteFileSyncService::UninstallFlag flag,
|
| const SyncStatusCallback& callback) {
|
| + // TODO(peria): Forward |callback| to UI thread.
|
| task_manager_->ScheduleSyncTask(
|
| FROM_HERE,
|
| scoped_ptr<SyncTask>(
|
| @@ -211,8 +216,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 +280,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 +367,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 {
|
| + context_->GetUiTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(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 {
|
| + context_->GetUiTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(callback, SYNC_STATUS_OK));
|
| + }
|
| }
|
|
|
| void SyncWorker::PostInitializeTask() {
|
| @@ -381,14 +392,15 @@ void SyncWorker::PostInitializeTask() {
|
| // already initialized when it runs.
|
| SyncEngineInitializer* initializer =
|
| new SyncEngineInitializer(context_.get(),
|
| - context_->GetBlockingTaskRunner(),
|
| + context_->GetFileTaskRunner(),
|
| base_dir_.Append(kDatabaseName),
|
| env_override_);
|
| task_manager_->ScheduleSyncTask(
|
| FROM_HERE,
|
| scoped_ptr<SyncTask>(initializer),
|
| SyncTaskManager::PRIORITY_HIGH,
|
| - base::Bind(&SyncWorker::DidInitialize, weak_ptr_factory_.GetWeakPtr(),
|
| + base::Bind(&SyncWorker::DidInitialize,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| initializer));
|
| }
|
|
|
| @@ -410,8 +422,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 +433,15 @@ void SyncWorker::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
|
| if (syncer->is_sync_root_deletion()) {
|
| MetadataDatabase::ClearDatabase(context_->PassMetadataDatabase());
|
| PostInitializeTask();
|
| - callback.Run(status, syncer->url());
|
| + context_->GetUiTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(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 +450,16 @@ void SyncWorker::DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
|
| }
|
| should_check_conflict_ = true;
|
| }
|
| - callback.Run(status, syncer->url());
|
| +
|
| + context_->GetUiTaskRunner()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(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 +482,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);
|
| + context_->GetUiTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(callback, status));
|
| }
|
|
|
| void SyncWorker::MaybeStartFetchChanges() {
|
| @@ -583,8 +596,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
|
|
|