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_; |