| Index: chrome/browser/extensions/extension_sorting.cc
|
| diff --git a/chrome/browser/extensions/extension_sorting.cc b/chrome/browser/extensions/extension_sorting.cc
|
| index 993eb0937d4c94769bf13acd4ad53c0bbd865999..2bb20171cece1da028350f7dc871f4e9d95523b2 100644
|
| --- a/chrome/browser/extensions/extension_sorting.cc
|
| +++ b/chrome/browser/extensions/extension_sorting.cc
|
| @@ -190,6 +190,27 @@ void ExtensionSorting::FixNTPOrdinalCollisions() {
|
| content::NotificationService::NoDetails());
|
| }
|
|
|
| +void ExtensionSorting::EnsureValidOrdinals(const std::string& extension_id) {
|
| + StringOrdinal page_ordinal = GetPageOrdinal(extension_id);
|
| + if (!page_ordinal.IsValid()) {
|
| + // The webstore app should always start be on the first page.
|
| + page_ordinal = extension_id == extension_misc::kWebStoreAppId ?
|
| + CreateFirstAppPageOrdinal() :
|
| + GetNaturalAppPageOrdinal();
|
| + SetPageOrdinal(extension_id, page_ordinal);
|
| + }
|
| +
|
| + StringOrdinal app_launch_ordinal = GetAppLaunchOrdinal(extension_id);
|
| + if (!app_launch_ordinal.IsValid()) {
|
| + // The webstore app should always start in the position.
|
| + app_launch_ordinal = extension_id == extension_misc::kWebStoreAppId ?
|
| + CreateFirstAppLaunchOrdinal(page_ordinal) :
|
| + CreateNextAppLaunchOrdinal(page_ordinal);
|
| + SetAppLaunchOrdinal(extension_id,
|
| + app_launch_ordinal);
|
| + }
|
| +}
|
| +
|
| void ExtensionSorting::OnExtensionMoved(
|
| const std::string& moved_extension_id,
|
| const std::string& predecessor_extension_id,
|
| @@ -243,10 +264,14 @@ void ExtensionSorting::SetAppLaunchOrdinal(
|
| extension_id, page_ordinal, GetAppLaunchOrdinal(extension_id));
|
| AddOrdinalMapping(extension_id, page_ordinal, new_app_launch_ordinal);
|
|
|
| + Value* new_value = new_app_launch_ordinal.IsValid() ?
|
| + Value::CreateStringValue(new_app_launch_ordinal.ToString()) :
|
| + NULL;
|
| +
|
| extension_scoped_prefs_->UpdateExtensionPref(
|
| extension_id,
|
| kPrefAppLaunchOrdinal,
|
| - Value::CreateStringValue(new_app_launch_ordinal.ToString()));
|
| + new_value);
|
| }
|
|
|
| StringOrdinal ExtensionSorting::CreateFirstAppLaunchOrdinal(
|
| @@ -320,10 +345,14 @@ void ExtensionSorting::SetPageOrdinal(const std::string& extension_id,
|
| extension_id, GetPageOrdinal(extension_id), app_launch_ordinal);
|
| AddOrdinalMapping(extension_id, new_page_ordinal, app_launch_ordinal);
|
|
|
| + Value* new_value = new_page_ordinal.IsValid() ?
|
| + Value::CreateStringValue(new_page_ordinal.ToString()) :
|
| + NULL;
|
| +
|
| extension_scoped_prefs_->UpdateExtensionPref(
|
| extension_id,
|
| kPrefPageOrdinal,
|
| - Value::CreateStringValue(new_page_ordinal.ToString()));
|
| + new_value);
|
| }
|
|
|
| void ExtensionSorting::ClearOrdinals(const std::string& extension_id) {
|
|
|