Chromium Code Reviews| Index: chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
| diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
| index 9dc0c8181bcdcc349ff1e47a07d705178251241a..780eed74b761ae8bc3e3df450d04410dfe99f156 100644 |
| --- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
| +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
| @@ -112,6 +112,13 @@ class SyncEngine::WorkerObserver : public SyncWorker::Observer { |
| sync_engine_, state, description)); |
| } |
| + virtual void OnPromoteDemotedChanges(size_t num_trackers) OVERRIDE { |
| + ui_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&SyncEngine::DidPromoteDemotedChanges, |
| + sync_engine_, num_trackers)); |
| + } |
| + |
| private: |
| scoped_refptr<base::SequencedTaskRunner> ui_task_runner_; |
| base::WeakPtr<SyncEngine> sync_engine_; |
| @@ -391,14 +398,10 @@ void SyncEngine::SetSyncEnabled(bool enabled) { |
| } |
| void SyncEngine::PromoteDemotedChanges() { |
| - MetadataDatabase* metadata_db = GetMetadataDatabase(); |
| - if (metadata_db && metadata_db->HasLowPriorityDirtyTracker()) { |
| - metadata_db->PromoteLowerPriorityTrackersToNormal(); |
| - FOR_EACH_OBSERVER( |
| - Observer, |
| - service_observers_, |
| - OnRemoteChangeQueueUpdated(metadata_db->CountDirtyTracker())); |
| - } |
| + worker_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&SyncWorker::PromoteDemotedChanges, |
| + base::Unretained(sync_worker_.get()))); |
| } |
| void SyncEngine::ApplyLocalChange( |
| @@ -467,8 +470,7 @@ drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() { |
| return drive_uploader_.get(); |
| } |
| -MetadataDatabase* SyncEngine::GetMetadataDatabase() { |
| - // TODO(peria): Post task |
| +MetadataDatabase* SyncEngine::GetMetadataDatabaseForTesting() { |
|
nhiroki
2014/05/29 01:56:13
In tests, callers of this function need to ensure
peria
2014/05/29 02:15:29
I think it wrong.
In such a case, sync worker and
nhiroki
2014/05/29 04:12:58
Sorry, "... ensure that the worker is suspended ..
|
| return sync_worker_->GetMetadataDatabase(); |
| } |
| @@ -516,11 +518,18 @@ void SyncEngine::UpdateServiceState(RemoteServiceState state, |
| OnRemoteServiceStateUpdated(state, description)); |
| } |
| -void SyncEngine::UpdateRegisteredApps() { |
| +void SyncEngine::DidPromoteDemotedChanges(size_t num_trackers) { |
|
tzik
2014/05/29 02:24:25
Please merge this to OnPendingFileListUpdated
peria
2014/05/29 03:11:46
Done.
|
| + FOR_EACH_OBSERVER( |
| + Observer, |
| + service_observers_, |
| + OnRemoteChangeQueueUpdated(num_trackers)); |
| +} |
| + |
| +void SyncEngine::UpdateRegisteredAppsForTesting() { |
| if (!extension_service_) |
| return; |
| - MetadataDatabase* metadata_db = GetMetadataDatabase(); |
| + MetadataDatabase* metadata_db = GetMetadataDatabaseForTesting(); |
| DCHECK(metadata_db); |
| std::vector<std::string> app_ids; |
| metadata_db->GetRegisteredAppIDs(&app_ids); |