Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6984)

Unified Diff: chrome/browser/sync_file_system/drive_backend/sync_worker.h

Issue 246163005: [SyncFS] Make ExtensionService usage of SyncWorker asynchronous (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: buildfix Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698