| Index: chrome/browser/extensions/extension_sorting.cc
|
| diff --git a/chrome/browser/extensions/extension_sorting.cc b/chrome/browser/extensions/extension_sorting.cc
|
| index c306ca3e26a05ad990c2655d018f2240c8599614..f9340dc7cc37bd1d4b62ad14d5102e8ad6320a34 100644
|
| --- a/chrome/browser/extensions/extension_sorting.cc
|
| +++ b/chrome/browser/extensions/extension_sorting.cc
|
| @@ -28,12 +28,18 @@ const char kPrefPageOrdinal[] = "page_ordinal";
|
| ExtensionSorting::ExtensionSorting(ExtensionScopedPrefs* extension_scoped_prefs,
|
| PrefService* pref_service)
|
| : extension_scoped_prefs_(extension_scoped_prefs),
|
| - pref_service_(pref_service) {
|
| + pref_service_(pref_service),
|
| + extension_service_(NULL) {
|
| }
|
|
|
| ExtensionSorting::~ExtensionSorting() {
|
| }
|
|
|
| +void ExtensionSorting::SetExtensionService(
|
| + ExtensionServiceInterface* extension_service) {
|
| + extension_service_ = extension_service;
|
| +}
|
| +
|
| void ExtensionSorting::Initialize(
|
| const ExtensionPrefs::ExtensionIdSet& extension_ids) {
|
| InitializePageOrdinalMap(extension_ids);
|
| @@ -277,6 +283,7 @@ void ExtensionSorting::SetAppLaunchOrdinal(
|
| extension_id,
|
| kPrefAppLaunchOrdinal,
|
| new_value);
|
| + SyncIfNeeded(extension_id);
|
| }
|
|
|
| StringOrdinal ExtensionSorting::CreateFirstAppLaunchOrdinal(
|
| @@ -344,7 +351,7 @@ StringOrdinal ExtensionSorting::GetPageOrdinal(const std::string& extension_id)
|
| }
|
|
|
| void ExtensionSorting::SetPageOrdinal(const std::string& extension_id,
|
| - const StringOrdinal& new_page_ordinal) {
|
| + const StringOrdinal& new_page_ordinal) {
|
| // No work is required if the old and new values are the same.
|
| if (new_page_ordinal.EqualOrBothInvalid(GetPageOrdinal(extension_id)))
|
| return;
|
| @@ -362,6 +369,7 @@ void ExtensionSorting::SetPageOrdinal(const std::string& extension_id,
|
| extension_id,
|
| kPrefPageOrdinal,
|
| new_value);
|
| + SyncIfNeeded(extension_id);
|
| }
|
|
|
| void ExtensionSorting::ClearOrdinals(const std::string& extension_id) {
|
| @@ -490,3 +498,15 @@ void ExtensionSorting::RemoveOrdinalMapping(
|
| }
|
| }
|
| }
|
| +
|
| +void ExtensionSorting::SyncIfNeeded(const std::string& extension_id) {
|
| + if (extension_service_) {
|
| + const Extension* ext =
|
| + extension_service_->GetInstalledExtension(extension_id);
|
| +
|
| + if (ext) {
|
| + CHECK(ext->is_app());
|
| + extension_service_->SyncExtensionChangeIfNeeded(*ext);
|
| + }
|
| + }
|
| +}
|
|
|