Chromium Code Reviews| Index: chrome/browser/sync_file_system/drive_backend/sync_worker.h |
| diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker.h b/chrome/browser/sync_file_system/drive_backend/sync_worker.h |
| index 752cfc603ac3995e3751278d3cabe06a54ec4692..e063a3ab10e727529019dd4bb6f09a7e18647012 100644 |
| --- a/chrome/browser/sync_file_system/drive_backend/sync_worker.h |
| +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker.h |
| @@ -67,7 +67,7 @@ class SyncWorker : public SyncTaskManager::Client { |
| static scoped_ptr<SyncWorker> CreateOnWorker( |
| const base::FilePath& base_dir, |
| Observer* observer, |
| - ExtensionServiceInterface* extension_service, |
| + const base::WeakPtr<ExtensionServiceInterface>& extension_service, |
| scoped_ptr<SyncEngineContext> sync_engine_context, |
| leveldb::Env* env_override); |
| @@ -129,8 +129,16 @@ class SyncWorker : public SyncTaskManager::Client { |
| friend class DriveBackendSyncTest; |
| friend class SyncEngineTest; |
| + enum AppStatus { |
|
peria
2014/04/24 02:38:21
(optional) I recommend to move this enum to extens
tzik
2014/04/24 06:56:55
ExtensionRegistry has similar but fine grained, wh
|
| + APP_STATUS_ENABLED, |
| + APP_STATUS_DISABLED, |
| + APP_STATUS_UNINSTALLED, |
| + }; |
| + |
| + typedef base::hash_map<std::string, AppStatus> AppStatusMap; |
| + |
| SyncWorker(const base::FilePath& base_dir, |
| - ExtensionServiceInterface* extension_service, |
| + const base::WeakPtr<ExtensionServiceInterface>& extension_service, |
| scoped_ptr<SyncEngineContext> sync_engine_context, |
| leveldb::Env* env_override); |
| @@ -143,6 +151,12 @@ class SyncWorker : public SyncTaskManager::Client { |
| void DidInitialize(SyncEngineInitializer* initializer, |
| SyncStatusCode status); |
| void UpdateRegisteredApp(); |
| + static void QueryAppStatusOnUIThread( |
| + const base::WeakPtr<ExtensionServiceInterface>& extension_service_ptr, |
| + const std::vector<std::string>* apps, |
| + AppStatusMap* status, |
| + const base::Closure& callback); |
| + void DidQueryAppStatus(const AppStatusMap* app_status); |
| void DidProcessRemoteChange(RemoteToLocalSyncer* syncer, |
| const SyncFileCallback& callback, |
| SyncStatusCode status); |
| @@ -178,9 +192,7 @@ class SyncWorker : public SyncTaskManager::Client { |
| scoped_ptr<SyncTaskManager> task_manager_; |
| - // TODO(tzik): Add a proxy class for ExtensionServiceInterface to cross |
| - // thread, and hold its instance as WeakPtr here. |
| - ExtensionServiceInterface* extension_service_; |
| + base::WeakPtr<ExtensionServiceInterface> extension_service_; |
| scoped_ptr<SyncEngineContext> context_; |
| ObserverList<Observer> observers_; |