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..6ec14054b535a21f452e28cd669f81b40f1dfe7b 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,16 @@ void ExtensionSorting::SetAppLaunchOrdinal( |
extension_id, |
kPrefAppLaunchOrdinal, |
new_value); |
+ |
+ if (extension_service_) { |
+ const Extension* ext = |
+ extension_service_->GetInstalledExtension(extension_id); |
+ |
+ if (ext) { |
+ CHECK(ext->is_app()); |
+ extension_service_->SyncExtensionChangeIfNeeded(*ext); |
+ } |
+ } |
} |
StringOrdinal ExtensionSorting::CreateFirstAppLaunchOrdinal( |
@@ -344,7 +360,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 +378,15 @@ void ExtensionSorting::SetPageOrdinal(const std::string& extension_id, |
extension_id, |
kPrefPageOrdinal, |
new_value); |
+ |
+ if (extension_service_) { |
+ const Extension* ext = |
+ extension_service_->GetInstalledExtension(extension_id); |
+ DCHECK(!ext || ext->is_app()); |
akalin
2012/03/15 19:29:39
CHECK also? Make this consistent with the analogo
csharp
2012/03/15 20:19:45
Done.
|
+ |
+ if (ext) |
+ extension_service_->SyncExtensionChangeIfNeeded(*ext); |
+ } |
} |
void ExtensionSorting::ClearOrdinals(const std::string& extension_id) { |