Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index 3c0eb11ebdafe8e34e40c44a8687572f08a06ca9..f4c4049501e1618f50ee960df64afa2face943e1 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -445,6 +445,10 @@ ExtensionService::ExtensionService(Profile* profile, |
omnibox_icon_manager_.set_padding(gfx::Insets(0, kOmniboxIconPaddingLeft, |
0, kOmniboxIconPaddingRight)); |
+ // Set this as the ExtensionService for extension sorting to ensure it |
+ // cause syncs if required. |
+ extension_prefs_->extension_sorting()->SetExtensionService(this); |
+ |
// How long is the path to the Extensions directory? |
UMA_HISTOGRAM_CUSTOM_COUNTS("Extensions.ExtensionRootPathLength", |
install_directory_.value().length(), 0, 500, 100); |
@@ -774,8 +778,9 @@ bool ExtensionService::UninstallExtension( |
IsIncognitoEnabled(extension_id), |
extension_prefs_->GetAppNotificationClientId(extension_id), |
extension_prefs_->IsAppNotificationDisabled(extension_id), |
- GetAppLaunchOrdinal(extension_id), |
- GetPageOrdinal(extension_id)); |
+ extension_prefs_->extension_sorting()-> |
+ GetAppLaunchOrdinal(extension_id), |
+ extension_prefs_->extension_sorting()->GetPageOrdinal(extension_id)); |
sync_change = extension_sync_data.GetSyncChange(SyncChange::ACTION_DELETE); |
} |
@@ -1274,28 +1279,6 @@ bool ExtensionService::SyncBundle::HasPendingExtensionId(const std::string& id) |
return pending_sync_data.find(id) != pending_sync_data.end(); |
} |
-void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) { |
- SyncBundle* sync_bundle = GetSyncBundleForExtension(extension); |
- if (sync_bundle) { |
- ExtensionSyncData extension_sync_data( |
- extension, |
- IsExtensionEnabled(extension.id()), |
- IsIncognitoEnabled(extension.id()), |
- extension_prefs_->GetAppNotificationClientId(extension.id()), |
- extension_prefs_->IsAppNotificationDisabled(extension.id()), |
- GetAppLaunchOrdinal(extension.id()), |
- GetPageOrdinal(extension.id())); |
- |
- SyncChangeList sync_change_list(1, extension_sync_data.GetSyncChange( |
- sync_bundle->HasExtensionId(extension.id()) ? |
- SyncChange::ACTION_UPDATE : SyncChange::ACTION_ADD)); |
- sync_bundle->sync_processor->ProcessSyncChanges( |
- FROM_HERE, sync_change_list); |
- sync_bundle->synced_extensions.insert(extension.id()); |
- sync_bundle->pending_sync_data.erase(extension.id()); |
- } |
-} |
- |
ExtensionService::SyncBundle* ExtensionService::GetSyncBundleForExtension( |
const Extension& extension) { |
if (app_sync_bundle_.filter(extension)) |
@@ -1460,8 +1443,10 @@ void ExtensionService::GetSyncDataListHelper( |
IsIncognitoEnabled(extension.id()), |
extension_prefs_->GetAppNotificationClientId(extension.id()), |
extension_prefs_->IsAppNotificationDisabled(extension.id()), |
- GetAppLaunchOrdinal(extension.id()), |
- GetPageOrdinal(extension.id()))); |
+ extension_prefs_->extension_sorting()-> |
+ GetAppLaunchOrdinal(extension.id()), |
+ extension_prefs_->extension_sorting()-> |
+ GetPageOrdinal(extension.id()))); |
} |
} |
} |
@@ -1523,8 +1508,12 @@ void ExtensionService::ProcessExtensionSyncData( |
if (extension_sync_data.app_launch_ordinal().IsValid() && |
extension_sync_data.page_ordinal().IsValid()) { |
- SetAppLaunchOrdinal(id, extension_sync_data.app_launch_ordinal()); |
- SetPageOrdinal(id, extension_sync_data.page_ordinal()); |
+ extension_prefs_->extension_sorting()->SetAppLaunchOrdinal( |
+ id, |
+ extension_sync_data.app_launch_ordinal()); |
+ extension_prefs_->extension_sorting()->SetPageOrdinal( |
+ id, |
+ extension_sync_data.page_ordinal()); |
} |
if (extension_installed) { |
@@ -1660,52 +1649,6 @@ bool ExtensionService::CanLoadInIncognito(const Extension* extension) const { |
IsIncognitoEnabled(extension->id()); |
} |
-StringOrdinal ExtensionService::GetAppLaunchOrdinal( |
- const std::string& extension_id) const { |
- return |
- extension_prefs_->extension_sorting()->GetAppLaunchOrdinal(extension_id); |
-} |
- |
-void ExtensionService::SetAppLaunchOrdinal( |
- const std::string& extension_id, |
- const StringOrdinal& app_launch_ordinal) { |
- // Only apps should set this value, so we check that it is either an app or |
- // that it is not yet installed (so we can't be sure it is an app). It is |
- // possible to be setting this value through syncing before the app is |
- // installed. |
- const Extension* ext = GetExtensionById(extension_id, true); |
- DCHECK(!ext || ext->is_app()); |
- |
- extension_prefs_->extension_sorting()->SetAppLaunchOrdinal( |
- extension_id, app_launch_ordinal); |
- |
- const Extension* extension = GetInstalledExtension(extension_id); |
- if (extension) |
- SyncExtensionChangeIfNeeded(*extension); |
-} |
- |
-StringOrdinal ExtensionService::GetPageOrdinal( |
- const std::string& extension_id) const { |
- return extension_prefs_->extension_sorting()->GetPageOrdinal(extension_id); |
-} |
- |
-void ExtensionService::SetPageOrdinal(const std::string& extension_id, |
- const StringOrdinal& page_ordinal) { |
- // Only apps should set this value, so we check that it is either an app or |
- // that it is not yet installed (so we can't be sure it is an app). It is |
- // possible to be setting this value through syncing before the app is |
- // installed. |
- const Extension* ext = GetExtensionById(extension_id, true); |
- DCHECK(!ext || ext->is_app()); |
- |
- extension_prefs_->extension_sorting()->SetPageOrdinal( |
- extension_id, page_ordinal); |
- |
- const Extension* extension = GetInstalledExtension(extension_id); |
- if (extension) |
- SyncExtensionChangeIfNeeded(*extension); |
-} |
- |
void ExtensionService::OnExtensionMoved( |
const std::string& moved_extension_id, |
const std::string& predecessor_extension_id, |
@@ -2011,6 +1954,29 @@ void ExtensionService::GarbageCollectExtensions() { |
} |
} |
+void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) { |
+ SyncBundle* sync_bundle = GetSyncBundleForExtension(extension); |
+ if (sync_bundle) { |
+ ExtensionSyncData extension_sync_data( |
+ extension, |
+ IsExtensionEnabled(extension.id()), |
+ IsIncognitoEnabled(extension.id()), |
+ extension_prefs_->GetAppNotificationClientId(extension.id()), |
+ extension_prefs_->IsAppNotificationDisabled(extension.id()), |
+ extension_prefs_->extension_sorting()-> |
+ GetAppLaunchOrdinal(extension.id()), |
+ extension_prefs_->extension_sorting()->GetPageOrdinal(extension.id())); |
+ |
+ SyncChangeList sync_change_list(1, extension_sync_data.GetSyncChange( |
+ sync_bundle->HasExtensionId(extension.id()) ? |
+ SyncChange::ACTION_UPDATE : SyncChange::ACTION_ADD)); |
+ sync_bundle->sync_processor->ProcessSyncChanges( |
+ FROM_HERE, sync_change_list); |
+ sync_bundle->synced_extensions.insert(extension.id()); |
+ sync_bundle->pending_sync_data.erase(extension.id()); |
+ } |
+} |
+ |
void ExtensionService::OnLoadedInstalledExtensions() { |
if (updater_.get()) { |
updater_->Start(); |