Chromium Code Reviews| 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; |
| - } |
|
tzik
2014/04/21 04:09:10
Doesn't this change break anything?
peria
2014/04/21 04:50:06
No.
If |status| is SYNC_STATUS_OK, |should_check_c
|
| - |
| 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 |