Index: chrome/browser/extensions/extension_sorting_unittest.cc |
=================================================================== |
--- chrome/browser/extensions/extension_sorting_unittest.cc (revision 132527) |
+++ chrome/browser/extensions/extension_sorting_unittest.cc (working copy) |
@@ -685,7 +685,7 @@ |
TEST_F(ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage, |
ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} |
-// Make sure that empty pages aren't removes from the integer to ordinal |
+// Make sure that empty pages aren't removed from the integer to ordinal |
// mapping. See http://www.crbug.com/109802 for details. |
class ExtensionSortingKeepEmptyStringOrdinalPages : |
public ExtensionSortingPreinstalledAppsBase { |
@@ -725,3 +725,35 @@ |
}; |
TEST_F(ExtensionSortingKeepEmptyStringOrdinalPages, |
ExtensionSortingKeepEmptyStringOrdinalPages) {} |
+ |
+class ExtensionSortingMakesFillerOrdinals : |
+ public ExtensionSortingPreinstalledAppsBase { |
+ public: |
+ ExtensionSortingMakesFillerOrdinals() {} |
+ virtual ~ExtensionSortingMakesFillerOrdinals() {} |
+ |
+ virtual void Initialize() { |
+ ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
+ |
+ StringOrdinal first_page = StringOrdinal::CreateInitialOrdinal(); |
+ extension_sorting->SetPageOrdinal(app1_->id(), first_page); |
+ EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); |
+ } |
+ virtual void Verify() { |
+ ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
+ |
+ // Because the UI can add an unlimited number of empty pages without an app |
+ // on them, this test simulates dropping of an app on the 1st and 4th empty |
+ // pages (3rd and 6th pages by index) to ensure we don't crash and that |
+ // filler ordinals are created as needed. See: http://crbug.com/122214 |
+ StringOrdinal page_three = extension_sorting->PageIntegerAsStringOrdinal(2); |
+ extension_sorting->SetPageOrdinal(app1_->id(), page_three); |
+ EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(page_three)); |
+ |
+ StringOrdinal page_six = extension_sorting->PageIntegerAsStringOrdinal(5); |
+ extension_sorting->SetPageOrdinal(app1_->id(), page_six); |
+ EXPECT_EQ(5, extension_sorting->PageStringOrdinalAsInteger(page_six)); |
+ } |
+}; |
+TEST_F(ExtensionSortingMakesFillerOrdinals, |
+ ExtensionSortingMakesFillerOrdinals) {} |