| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/extension_prefs_unittest.h" | 5 #include "chrome/browser/extensions/extension_prefs_unittest.h" |
| 6 #include "chrome/browser/extensions/extension_sorting.h" | 6 #include "chrome/browser/extensions/extension_sorting.h" |
| 7 #include "chrome/common/extensions/extension_manifest_constants.h" | 7 #include "chrome/common/extensions/extension_manifest_constants.h" |
| 8 #include "sync/api/string_ordinal.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 10 |
| 10 using extensions::Extension; | 11 using extensions::Extension; |
| 11 | 12 |
| 12 namespace keys = extension_manifest_keys; | 13 namespace keys = extension_manifest_keys; |
| 13 | 14 |
| 14 class ExtensionSortingTest : public extensions::ExtensionPrefsTest { | 15 class ExtensionSortingTest : public extensions::ExtensionPrefsTest { |
| 15 protected: | 16 protected: |
| 16 ExtensionSorting* extension_sorting() { | 17 ExtensionSorting* extension_sorting() { |
| 17 return prefs()->extension_sorting(); | 18 return prefs()->extension_sorting(); |
| 18 } | 19 } |
| 19 }; | 20 }; |
| 20 | 21 |
| 21 class ExtensionSortingAppLocation : public ExtensionSortingTest { | 22 class ExtensionSortingAppLocation : public ExtensionSortingTest { |
| 22 public: | 23 public: |
| 23 virtual void Initialize() OVERRIDE { | 24 virtual void Initialize() OVERRIDE { |
| 24 extension_ = prefs_.AddExtension("not_an_app"); | 25 extension_ = prefs_.AddExtension("not_an_app"); |
| 25 // Non-apps should not have any app launch ordinal or page ordinal. | 26 // Non-apps should not have any app launch ordinal or page ordinal. |
| 26 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, | 27 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, |
| 27 false, StringOrdinal()); | 28 false, syncer::StringOrdinal()); |
| 28 } | 29 } |
| 29 | 30 |
| 30 virtual void Verify() OVERRIDE { | 31 virtual void Verify() OVERRIDE { |
| 31 EXPECT_FALSE( | 32 EXPECT_FALSE( |
| 32 extension_sorting()->GetAppLaunchOrdinal(extension_->id()).IsValid()); | 33 extension_sorting()->GetAppLaunchOrdinal(extension_->id()).IsValid()); |
| 33 EXPECT_FALSE( | 34 EXPECT_FALSE( |
| 34 extension_sorting()->GetPageOrdinal(extension_->id()).IsValid()); | 35 extension_sorting()->GetPageOrdinal(extension_->id()).IsValid()); |
| 35 } | 36 } |
| 36 | 37 |
| 37 private: | 38 private: |
| 38 scoped_refptr<Extension> extension_; | 39 scoped_refptr<Extension> extension_; |
| 39 }; | 40 }; |
| 40 TEST_F(ExtensionSortingAppLocation, ExtensionSortingAppLocation) {} | 41 TEST_F(ExtensionSortingAppLocation, ExtensionSortingAppLocation) {} |
| 41 | 42 |
| 42 class ExtensionSortingAppLaunchOrdinal : public ExtensionSortingTest { | 43 class ExtensionSortingAppLaunchOrdinal : public ExtensionSortingTest { |
| 43 public: | 44 public: |
| 44 virtual void Initialize() OVERRIDE { | 45 virtual void Initialize() OVERRIDE { |
| 45 // No extensions yet. | 46 // No extensions yet. |
| 46 StringOrdinal page = StringOrdinal::CreateInitialOrdinal(); | 47 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 47 EXPECT_TRUE(StringOrdinal::CreateInitialOrdinal().Equal( | 48 EXPECT_TRUE(syncer::StringOrdinal::CreateInitialOrdinal().Equals( |
| 48 extension_sorting()->CreateNextAppLaunchOrdinal(page))); | 49 extension_sorting()->CreateNextAppLaunchOrdinal(page))); |
| 49 | 50 |
| 50 extension_ = prefs_.AddApp("on_extension_installed"); | 51 extension_ = prefs_.AddApp("on_extension_installed"); |
| 51 EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id())); | 52 EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id())); |
| 52 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, | 53 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, |
| 53 false, StringOrdinal()); | 54 false, syncer::StringOrdinal()); |
| 54 } | 55 } |
| 55 | 56 |
| 56 virtual void Verify() OVERRIDE { | 57 virtual void Verify() OVERRIDE { |
| 57 StringOrdinal launch_ordinal = | 58 syncer::StringOrdinal launch_ordinal = |
| 58 extension_sorting()->GetAppLaunchOrdinal(extension_->id()); | 59 extension_sorting()->GetAppLaunchOrdinal(extension_->id()); |
| 59 StringOrdinal page_ordinal = StringOrdinal::CreateInitialOrdinal(); | 60 syncer::StringOrdinal page_ordinal = |
| 61 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 60 | 62 |
| 61 // Extension should have been assigned a valid StringOrdinal. | 63 // Extension should have been assigned a valid StringOrdinal. |
| 62 EXPECT_TRUE(launch_ordinal.IsValid()); | 64 EXPECT_TRUE(launch_ordinal.IsValid()); |
| 63 EXPECT_TRUE(launch_ordinal.LessThan( | 65 EXPECT_TRUE(launch_ordinal.LessThan( |
| 64 extension_sorting()->CreateNextAppLaunchOrdinal(page_ordinal))); | 66 extension_sorting()->CreateNextAppLaunchOrdinal(page_ordinal))); |
| 65 // Set a new launch ordinal of and verify it comes after. | 67 // Set a new launch ordinal of and verify it comes after. |
| 66 extension_sorting()->SetAppLaunchOrdinal( | 68 extension_sorting()->SetAppLaunchOrdinal( |
| 67 extension_->id(), | 69 extension_->id(), |
| 68 extension_sorting()->CreateNextAppLaunchOrdinal(page_ordinal)); | 70 extension_sorting()->CreateNextAppLaunchOrdinal(page_ordinal)); |
| 69 StringOrdinal new_launch_ordinal = | 71 syncer::StringOrdinal new_launch_ordinal = |
| 70 extension_sorting()->GetAppLaunchOrdinal(extension_->id()); | 72 extension_sorting()->GetAppLaunchOrdinal(extension_->id()); |
| 71 EXPECT_TRUE(launch_ordinal.LessThan(new_launch_ordinal)); | 73 EXPECT_TRUE(launch_ordinal.LessThan(new_launch_ordinal)); |
| 72 | 74 |
| 73 // This extension doesn't exist, so it should return an invalid | 75 // This extension doesn't exist, so it should return an invalid |
| 74 // StringOrdinal. | 76 // StringOrdinal. |
| 75 StringOrdinal invalid_app_launch_ordinal = | 77 syncer::StringOrdinal invalid_app_launch_ordinal = |
| 76 extension_sorting()->GetAppLaunchOrdinal("foo"); | 78 extension_sorting()->GetAppLaunchOrdinal("foo"); |
| 77 EXPECT_FALSE(invalid_app_launch_ordinal.IsValid()); | 79 EXPECT_FALSE(invalid_app_launch_ordinal.IsValid()); |
| 78 EXPECT_EQ(-1, extension_sorting()->PageStringOrdinalAsInteger( | 80 EXPECT_EQ(-1, extension_sorting()->PageStringOrdinalAsInteger( |
| 79 invalid_app_launch_ordinal)); | 81 invalid_app_launch_ordinal)); |
| 80 | 82 |
| 81 // The second page doesn't have any apps so its next launch ordinal should | 83 // The second page doesn't have any apps so its next launch ordinal should |
| 82 // be the first launch ordinal. | 84 // be the first launch ordinal. |
| 83 StringOrdinal next_page = page_ordinal.CreateAfter(); | 85 syncer::StringOrdinal next_page = page_ordinal.CreateAfter(); |
| 84 StringOrdinal next_page_app_launch_ordinal = | 86 syncer::StringOrdinal next_page_app_launch_ordinal = |
| 85 extension_sorting()->CreateNextAppLaunchOrdinal(next_page); | 87 extension_sorting()->CreateNextAppLaunchOrdinal(next_page); |
| 86 EXPECT_TRUE(next_page_app_launch_ordinal.Equal( | 88 EXPECT_TRUE(next_page_app_launch_ordinal.Equals( |
| 87 extension_sorting()->CreateFirstAppLaunchOrdinal(next_page))); | 89 extension_sorting()->CreateFirstAppLaunchOrdinal(next_page))); |
| 88 } | 90 } |
| 89 | 91 |
| 90 private: | 92 private: |
| 91 scoped_refptr<Extension> extension_; | 93 scoped_refptr<Extension> extension_; |
| 92 }; | 94 }; |
| 93 TEST_F(ExtensionSortingAppLaunchOrdinal, ExtensionSortingAppLaunchOrdinal) {} | 95 TEST_F(ExtensionSortingAppLaunchOrdinal, ExtensionSortingAppLaunchOrdinal) {} |
| 94 | 96 |
| 95 class ExtensionSortingPageOrdinal : public ExtensionSortingTest { | 97 class ExtensionSortingPageOrdinal : public ExtensionSortingTest { |
| 96 public: | 98 public: |
| 97 virtual void Initialize() OVERRIDE{ | 99 virtual void Initialize() OVERRIDE{ |
| 98 extension_ = prefs_.AddApp("page_ordinal"); | 100 extension_ = prefs_.AddApp("page_ordinal"); |
| 99 // Install with a page preference. | 101 // Install with a page preference. |
| 100 first_page_ = StringOrdinal::CreateInitialOrdinal(); | 102 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 101 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, | 103 prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED, |
| 102 false, first_page_); | 104 false, first_page_); |
| 103 EXPECT_TRUE(first_page_.Equal( | 105 EXPECT_TRUE(first_page_.Equals( |
| 104 extension_sorting()->GetPageOrdinal(extension_->id()))); | 106 extension_sorting()->GetPageOrdinal(extension_->id()))); |
| 105 EXPECT_EQ(0, extension_sorting()->PageStringOrdinalAsInteger(first_page_)); | 107 EXPECT_EQ(0, extension_sorting()->PageStringOrdinalAsInteger(first_page_)); |
| 106 | 108 |
| 107 scoped_refptr<Extension> extension2 = prefs_.AddApp("page_ordinal_2"); | 109 scoped_refptr<Extension> extension2 = prefs_.AddApp("page_ordinal_2"); |
| 108 // Install without any page preference. | 110 // Install without any page preference. |
| 109 prefs()->OnExtensionInstalled(extension2.get(), Extension::ENABLED, | 111 prefs()->OnExtensionInstalled(extension2.get(), Extension::ENABLED, |
| 110 false, StringOrdinal()); | 112 false, syncer::StringOrdinal()); |
| 111 EXPECT_TRUE(first_page_.Equal( | 113 EXPECT_TRUE(first_page_.Equals( |
| 112 extension_sorting()->GetPageOrdinal(extension2->id()))); | 114 extension_sorting()->GetPageOrdinal(extension2->id()))); |
| 113 } | 115 } |
| 114 virtual void Verify() OVERRIDE { | 116 virtual void Verify() OVERRIDE { |
| 115 // Set the page ordinal. | 117 // Set the page ordinal. |
| 116 StringOrdinal new_page = first_page_.CreateAfter(); | 118 syncer::StringOrdinal new_page = first_page_.CreateAfter(); |
| 117 extension_sorting()->SetPageOrdinal(extension_->id(), new_page); | 119 extension_sorting()->SetPageOrdinal(extension_->id(), new_page); |
| 118 // Verify the page ordinal. | 120 // Verify the page ordinal. |
| 119 EXPECT_TRUE( | 121 EXPECT_TRUE( |
| 120 new_page.Equal(extension_sorting()->GetPageOrdinal(extension_->id()))); | 122 new_page.Equals(extension_sorting()->GetPageOrdinal(extension_->id()))); |
| 121 EXPECT_EQ(1, extension_sorting()->PageStringOrdinalAsInteger(new_page)); | 123 EXPECT_EQ(1, extension_sorting()->PageStringOrdinalAsInteger(new_page)); |
| 122 | 124 |
| 123 // This extension doesn't exist, so it should return an invalid | 125 // This extension doesn't exist, so it should return an invalid |
| 124 // StringOrdinal. | 126 // StringOrdinal. |
| 125 EXPECT_FALSE(extension_sorting()->GetPageOrdinal("foo").IsValid()); | 127 EXPECT_FALSE(extension_sorting()->GetPageOrdinal("foo").IsValid()); |
| 126 } | 128 } |
| 127 | 129 |
| 128 private: | 130 private: |
| 129 StringOrdinal first_page_; | 131 syncer::StringOrdinal first_page_; |
| 130 scoped_refptr<Extension> extension_; | 132 scoped_refptr<Extension> extension_; |
| 131 }; | 133 }; |
| 132 TEST_F(ExtensionSortingPageOrdinal, ExtensionSortingPageOrdinal) {} | 134 TEST_F(ExtensionSortingPageOrdinal, ExtensionSortingPageOrdinal) {} |
| 133 | 135 |
| 134 // Ensure that ExtensionSorting is able to properly initialize off a set | 136 // Ensure that ExtensionSorting is able to properly initialize off a set |
| 135 // of old page and app launch indices and properly convert them. | 137 // of old page and app launch indices and properly convert them. |
| 136 class ExtensionSortingInitialize | 138 class ExtensionSortingInitialize |
| 137 : public extensions::ExtensionPrefsPrepopulatedTest { | 139 : public extensions::ExtensionPrefsPrepopulatedTest { |
| 138 public: | 140 public: |
| 139 ExtensionSortingInitialize() {} | 141 ExtensionSortingInitialize() {} |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 // We insert the ids in reserve order so that we have to deal with the | 174 // We insert the ids in reserve order so that we have to deal with the |
| 173 // element on the 2nd page before the 1st page is seen. | 175 // element on the 2nd page before the 1st page is seen. |
| 174 extensions::ExtensionPrefs::ExtensionIds ids; | 176 extensions::ExtensionPrefs::ExtensionIds ids; |
| 175 ids.push_back(ext3_->id()); | 177 ids.push_back(ext3_->id()); |
| 176 ids.push_back(ext2_->id()); | 178 ids.push_back(ext2_->id()); |
| 177 ids.push_back(ext1_->id()); | 179 ids.push_back(ext1_->id()); |
| 178 | 180 |
| 179 prefs()->extension_sorting()->Initialize(ids); | 181 prefs()->extension_sorting()->Initialize(ids); |
| 180 } | 182 } |
| 181 virtual void Verify() OVERRIDE { | 183 virtual void Verify() OVERRIDE { |
| 182 StringOrdinal first_ordinal = StringOrdinal::CreateInitialOrdinal(); | 184 syncer::StringOrdinal first_ordinal = |
| 185 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 183 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 186 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 184 | 187 |
| 185 EXPECT_TRUE(first_ordinal.Equal( | 188 EXPECT_TRUE(first_ordinal.Equals( |
| 186 extension_sorting->GetAppLaunchOrdinal(ext1_->id()))); | 189 extension_sorting->GetAppLaunchOrdinal(ext1_->id()))); |
| 187 EXPECT_TRUE(first_ordinal.LessThan( | 190 EXPECT_TRUE(first_ordinal.LessThan( |
| 188 extension_sorting->GetAppLaunchOrdinal(ext2_->id()))); | 191 extension_sorting->GetAppLaunchOrdinal(ext2_->id()))); |
| 189 EXPECT_TRUE(first_ordinal.Equal( | 192 EXPECT_TRUE(first_ordinal.Equals( |
| 190 extension_sorting->GetAppLaunchOrdinal(ext3_->id()))); | 193 extension_sorting->GetAppLaunchOrdinal(ext3_->id()))); |
| 191 | 194 |
| 192 EXPECT_TRUE(first_ordinal.Equal( | 195 EXPECT_TRUE(first_ordinal.Equals( |
| 193 extension_sorting->GetPageOrdinal(ext1_->id()))); | 196 extension_sorting->GetPageOrdinal(ext1_->id()))); |
| 194 EXPECT_TRUE(first_ordinal.Equal( | 197 EXPECT_TRUE(first_ordinal.Equals( |
| 195 extension_sorting->GetPageOrdinal(ext2_->id()))); | 198 extension_sorting->GetPageOrdinal(ext2_->id()))); |
| 196 EXPECT_TRUE(first_ordinal.LessThan( | 199 EXPECT_TRUE(first_ordinal.LessThan( |
| 197 extension_sorting->GetPageOrdinal(ext3_->id()))); | 200 extension_sorting->GetPageOrdinal(ext3_->id()))); |
| 198 } | 201 } |
| 199 }; | 202 }; |
| 200 TEST_F(ExtensionSortingInitialize, ExtensionSortingInitialize) {} | 203 TEST_F(ExtensionSortingInitialize, ExtensionSortingInitialize) {} |
| 201 | 204 |
| 202 // Make sure that initialization still works when no extensions are present | 205 // Make sure that initialization still works when no extensions are present |
| 203 // (i.e. make sure that the web store icon is still loaded into the map). | 206 // (i.e. make sure that the web store icon is still loaded into the map). |
| 204 class ExtensionSortingInitializeWithNoApps | 207 class ExtensionSortingInitializeWithNoApps |
| 205 : public extensions::ExtensionPrefsPrepopulatedTest { | 208 : public extensions::ExtensionPrefsPrepopulatedTest { |
| 206 public: | 209 public: |
| 207 ExtensionSortingInitializeWithNoApps() {} | 210 ExtensionSortingInitializeWithNoApps() {} |
| 208 virtual ~ExtensionSortingInitializeWithNoApps() {} | 211 virtual ~ExtensionSortingInitializeWithNoApps() {} |
| 209 | 212 |
| 210 virtual void Initialize() OVERRIDE { | 213 virtual void Initialize() OVERRIDE { |
| 211 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 214 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 212 | 215 |
| 213 // Make sure that the web store has valid ordinals. | 216 // Make sure that the web store has valid ordinals. |
| 214 StringOrdinal initial_ordinal = StringOrdinal::CreateInitialOrdinal(); | 217 syncer::StringOrdinal initial_ordinal = |
| 218 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 215 extension_sorting->SetPageOrdinal(extension_misc::kWebStoreAppId, | 219 extension_sorting->SetPageOrdinal(extension_misc::kWebStoreAppId, |
| 216 initial_ordinal); | 220 initial_ordinal); |
| 217 extension_sorting->SetAppLaunchOrdinal(extension_misc::kWebStoreAppId, | 221 extension_sorting->SetAppLaunchOrdinal(extension_misc::kWebStoreAppId, |
| 218 initial_ordinal); | 222 initial_ordinal); |
| 219 | 223 |
| 220 extensions::ExtensionPrefs::ExtensionIds ids; | 224 extensions::ExtensionPrefs::ExtensionIds ids; |
| 221 extension_sorting->Initialize(ids); | 225 extension_sorting->Initialize(ids); |
| 222 } | 226 } |
| 223 virtual void Verify() OVERRIDE { | 227 virtual void Verify() OVERRIDE { |
| 224 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 228 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 225 | 229 |
| 226 StringOrdinal page = | 230 syncer::StringOrdinal page = |
| 227 extension_sorting->GetPageOrdinal(extension_misc::kWebStoreAppId); | 231 extension_sorting->GetPageOrdinal(extension_misc::kWebStoreAppId); |
| 228 EXPECT_TRUE(page.IsValid()); | 232 EXPECT_TRUE(page.IsValid()); |
| 229 | 233 |
| 230 ExtensionSorting::PageOrdinalMap::iterator page_it = | 234 ExtensionSorting::PageOrdinalMap::iterator page_it = |
| 231 extension_sorting->ntp_ordinal_map_.find(page); | 235 extension_sorting->ntp_ordinal_map_.find(page); |
| 232 EXPECT_TRUE(page_it != extension_sorting->ntp_ordinal_map_.end()); | 236 EXPECT_TRUE(page_it != extension_sorting->ntp_ordinal_map_.end()); |
| 233 | 237 |
| 234 StringOrdinal app_launch = | 238 syncer::StringOrdinal app_launch = |
| 235 extension_sorting->GetPageOrdinal(extension_misc::kWebStoreAppId); | 239 extension_sorting->GetPageOrdinal(extension_misc::kWebStoreAppId); |
| 236 EXPECT_TRUE(app_launch.IsValid()); | 240 EXPECT_TRUE(app_launch.IsValid()); |
| 237 | 241 |
| 238 ExtensionSorting::AppLaunchOrdinalMap::iterator app_launch_it = | 242 ExtensionSorting::AppLaunchOrdinalMap::iterator app_launch_it = |
| 239 page_it->second.find(app_launch); | 243 page_it->second.find(app_launch); |
| 240 EXPECT_TRUE(app_launch_it != page_it->second.end()); | 244 EXPECT_TRUE(app_launch_it != page_it->second.end()); |
| 241 } | 245 } |
| 242 }; | 246 }; |
| 243 TEST_F(ExtensionSortingInitializeWithNoApps, | 247 TEST_F(ExtensionSortingInitializeWithNoApps, |
| 244 ExtensionSortingInitializeWithNoApps) {} | 248 ExtensionSortingInitializeWithNoApps) {} |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 TEST_F(ExtensionSortingMigrateAppIndexInvalid, | 287 TEST_F(ExtensionSortingMigrateAppIndexInvalid, |
| 284 ExtensionSortingMigrateAppIndexInvalid) {} | 288 ExtensionSortingMigrateAppIndexInvalid) {} |
| 285 | 289 |
| 286 class ExtensionSortingFixNTPCollisionsAllCollide | 290 class ExtensionSortingFixNTPCollisionsAllCollide |
| 287 : public extensions::ExtensionPrefsPrepopulatedTest { | 291 : public extensions::ExtensionPrefsPrepopulatedTest { |
| 288 public: | 292 public: |
| 289 ExtensionSortingFixNTPCollisionsAllCollide() {} | 293 ExtensionSortingFixNTPCollisionsAllCollide() {} |
| 290 virtual ~ExtensionSortingFixNTPCollisionsAllCollide() {} | 294 virtual ~ExtensionSortingFixNTPCollisionsAllCollide() {} |
| 291 | 295 |
| 292 virtual void Initialize() OVERRIDE { | 296 virtual void Initialize() OVERRIDE { |
| 293 repeated_ordinal_ = StringOrdinal::CreateInitialOrdinal(); | 297 repeated_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 294 | 298 |
| 295 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 299 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 296 | 300 |
| 297 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), repeated_ordinal_); | 301 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), repeated_ordinal_); |
| 298 extension_sorting->SetPageOrdinal(ext1_->id(), repeated_ordinal_); | 302 extension_sorting->SetPageOrdinal(ext1_->id(), repeated_ordinal_); |
| 299 | 303 |
| 300 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), repeated_ordinal_); | 304 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), repeated_ordinal_); |
| 301 extension_sorting->SetPageOrdinal(ext2_->id(), repeated_ordinal_); | 305 extension_sorting->SetPageOrdinal(ext2_->id(), repeated_ordinal_); |
| 302 | 306 |
| 303 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), repeated_ordinal_); | 307 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), repeated_ordinal_); |
| 304 extension_sorting->SetPageOrdinal(ext3_->id(), repeated_ordinal_); | 308 extension_sorting->SetPageOrdinal(ext3_->id(), repeated_ordinal_); |
| 305 | 309 |
| 306 extension_sorting->FixNTPOrdinalCollisions(); | 310 extension_sorting->FixNTPOrdinalCollisions(); |
| 307 } | 311 } |
| 308 virtual void Verify() OVERRIDE { | 312 virtual void Verify() OVERRIDE { |
| 309 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 313 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 310 StringOrdinal ext1_app_launch = extension_sorting->GetAppLaunchOrdinal( | 314 syncer::StringOrdinal ext1_app_launch = |
| 311 ext1_->id()); | 315 extension_sorting->GetAppLaunchOrdinal(ext1_->id()); |
| 312 StringOrdinal ext2_app_launch = extension_sorting->GetAppLaunchOrdinal( | 316 syncer::StringOrdinal ext2_app_launch = |
| 313 ext2_->id()); | 317 extension_sorting->GetAppLaunchOrdinal(ext2_->id()); |
| 314 StringOrdinal ext3_app_launch = extension_sorting->GetAppLaunchOrdinal( | 318 syncer::StringOrdinal ext3_app_launch = |
| 315 ext3_->id()); | 319 extension_sorting->GetAppLaunchOrdinal(ext3_->id()); |
| 316 | 320 |
| 317 // The overlapping extensions should have be adjusted so that they are | 321 // The overlapping extensions should have be adjusted so that they are |
| 318 // sorted by their id. | 322 // sorted by their id. |
| 319 EXPECT_EQ(ext1_->id() < ext2_->id(), | 323 EXPECT_EQ(ext1_->id() < ext2_->id(), |
| 320 ext1_app_launch.LessThan(ext2_app_launch)); | 324 ext1_app_launch.LessThan(ext2_app_launch)); |
| 321 EXPECT_EQ(ext1_->id() < ext3_->id(), | 325 EXPECT_EQ(ext1_->id() < ext3_->id(), |
| 322 ext1_app_launch.LessThan(ext3_app_launch)); | 326 ext1_app_launch.LessThan(ext3_app_launch)); |
| 323 EXPECT_EQ(ext2_->id() < ext3_->id(), | 327 EXPECT_EQ(ext2_->id() < ext3_->id(), |
| 324 ext2_app_launch.LessThan(ext3_app_launch)); | 328 ext2_app_launch.LessThan(ext3_app_launch)); |
| 325 | 329 |
| 326 // The page ordinal should be unchanged. | 330 // The page ordinal should be unchanged. |
| 327 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equal( | 331 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equals( |
| 328 repeated_ordinal_)); | 332 repeated_ordinal_)); |
| 329 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equal( | 333 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equals( |
| 330 repeated_ordinal_)); | 334 repeated_ordinal_)); |
| 331 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equal( | 335 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equals( |
| 332 repeated_ordinal_)); | 336 repeated_ordinal_)); |
| 333 } | 337 } |
| 334 | 338 |
| 335 private: | 339 private: |
| 336 StringOrdinal repeated_ordinal_; | 340 syncer::StringOrdinal repeated_ordinal_; |
| 337 }; | 341 }; |
| 338 TEST_F(ExtensionSortingFixNTPCollisionsAllCollide, | 342 TEST_F(ExtensionSortingFixNTPCollisionsAllCollide, |
| 339 ExtensionSortingFixNTPCollisionsAllCollide) {} | 343 ExtensionSortingFixNTPCollisionsAllCollide) {} |
| 340 | 344 |
| 341 class ExtensionSortingFixNTPCollisionsSomeCollideAtStart | 345 class ExtensionSortingFixNTPCollisionsSomeCollideAtStart |
| 342 : public extensions::ExtensionPrefsPrepopulatedTest { | 346 : public extensions::ExtensionPrefsPrepopulatedTest { |
| 343 public: | 347 public: |
| 344 ExtensionSortingFixNTPCollisionsSomeCollideAtStart() {} | 348 ExtensionSortingFixNTPCollisionsSomeCollideAtStart() {} |
| 345 virtual ~ExtensionSortingFixNTPCollisionsSomeCollideAtStart() {} | 349 virtual ~ExtensionSortingFixNTPCollisionsSomeCollideAtStart() {} |
| 346 | 350 |
| 347 virtual void Initialize() OVERRIDE { | 351 virtual void Initialize() OVERRIDE { |
| 348 first_ordinal_ = StringOrdinal::CreateInitialOrdinal(); | 352 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 349 StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); | 353 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); |
| 350 | 354 |
| 351 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 355 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 352 | 356 |
| 353 // Have the first two extension in the same position, with a third | 357 // Have the first two extension in the same position, with a third |
| 354 // (non-colliding) extension after. | 358 // (non-colliding) extension after. |
| 355 | 359 |
| 356 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), first_ordinal_); | 360 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), first_ordinal_); |
| 357 extension_sorting->SetPageOrdinal(ext1_->id(), first_ordinal_); | 361 extension_sorting->SetPageOrdinal(ext1_->id(), first_ordinal_); |
| 358 | 362 |
| 359 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), first_ordinal_); | 363 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), first_ordinal_); |
| 360 extension_sorting->SetPageOrdinal(ext2_->id(), first_ordinal_); | 364 extension_sorting->SetPageOrdinal(ext2_->id(), first_ordinal_); |
| 361 | 365 |
| 362 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), second_ordinal); | 366 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), second_ordinal); |
| 363 extension_sorting->SetPageOrdinal(ext3_->id(), first_ordinal_); | 367 extension_sorting->SetPageOrdinal(ext3_->id(), first_ordinal_); |
| 364 | 368 |
| 365 extension_sorting->FixNTPOrdinalCollisions(); | 369 extension_sorting->FixNTPOrdinalCollisions(); |
| 366 } | 370 } |
| 367 virtual void Verify() OVERRIDE { | 371 virtual void Verify() OVERRIDE { |
| 368 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 372 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 369 StringOrdinal ext1_app_launch = extension_sorting->GetAppLaunchOrdinal( | 373 syncer::StringOrdinal ext1_app_launch = |
| 370 ext1_->id()); | 374 extension_sorting->GetAppLaunchOrdinal(ext1_->id()); |
| 371 StringOrdinal ext2_app_launch = extension_sorting->GetAppLaunchOrdinal( | 375 syncer::StringOrdinal ext2_app_launch = |
| 372 ext2_->id()); | 376 extension_sorting->GetAppLaunchOrdinal(ext2_->id()); |
| 373 StringOrdinal ext3_app_launch = extension_sorting->GetAppLaunchOrdinal( | 377 syncer::StringOrdinal ext3_app_launch = |
| 374 ext3_->id()); | 378 extension_sorting->GetAppLaunchOrdinal(ext3_->id()); |
| 375 | 379 |
| 376 // The overlapping extensions should have be adjusted so that they are | 380 // The overlapping extensions should have be adjusted so that they are |
| 377 // sorted by their id, but they both should be before ext3, which wasn't | 381 // sorted by their id, but they both should be before ext3, which wasn't |
| 378 // overlapping. | 382 // overlapping. |
| 379 EXPECT_EQ(ext1_->id() < ext2_->id(), | 383 EXPECT_EQ(ext1_->id() < ext2_->id(), |
| 380 ext1_app_launch.LessThan(ext2_app_launch)); | 384 ext1_app_launch.LessThan(ext2_app_launch)); |
| 381 EXPECT_TRUE(ext1_app_launch.LessThan(ext3_app_launch)); | 385 EXPECT_TRUE(ext1_app_launch.LessThan(ext3_app_launch)); |
| 382 EXPECT_TRUE(ext2_app_launch.LessThan(ext3_app_launch)); | 386 EXPECT_TRUE(ext2_app_launch.LessThan(ext3_app_launch)); |
| 383 | 387 |
| 384 // The page ordinal should be unchanged. | 388 // The page ordinal should be unchanged. |
| 385 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equal( | 389 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equals( |
| 386 first_ordinal_)); | 390 first_ordinal_)); |
| 387 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equal( | 391 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equals( |
| 388 first_ordinal_)); | 392 first_ordinal_)); |
| 389 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equal( | 393 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equals( |
| 390 first_ordinal_)); | 394 first_ordinal_)); |
| 391 } | 395 } |
| 392 | 396 |
| 393 private: | 397 private: |
| 394 StringOrdinal first_ordinal_; | 398 syncer::StringOrdinal first_ordinal_; |
| 395 }; | 399 }; |
| 396 TEST_F(ExtensionSortingFixNTPCollisionsSomeCollideAtStart, | 400 TEST_F(ExtensionSortingFixNTPCollisionsSomeCollideAtStart, |
| 397 ExtensionSortingFixNTPCollisionsSomeCollideAtStart) {} | 401 ExtensionSortingFixNTPCollisionsSomeCollideAtStart) {} |
| 398 | 402 |
| 399 class ExtensionSortingFixNTPCollisionsSomeCollideAtEnd | 403 class ExtensionSortingFixNTPCollisionsSomeCollideAtEnd |
| 400 : public extensions::ExtensionPrefsPrepopulatedTest { | 404 : public extensions::ExtensionPrefsPrepopulatedTest { |
| 401 public: | 405 public: |
| 402 ExtensionSortingFixNTPCollisionsSomeCollideAtEnd() {} | 406 ExtensionSortingFixNTPCollisionsSomeCollideAtEnd() {} |
| 403 virtual ~ExtensionSortingFixNTPCollisionsSomeCollideAtEnd() {} | 407 virtual ~ExtensionSortingFixNTPCollisionsSomeCollideAtEnd() {} |
| 404 | 408 |
| 405 virtual void Initialize() OVERRIDE { | 409 virtual void Initialize() OVERRIDE { |
| 406 first_ordinal_ = StringOrdinal::CreateInitialOrdinal(); | 410 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 407 StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); | 411 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); |
| 408 | 412 |
| 409 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 413 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 410 | 414 |
| 411 // Have the first extension in a non-colliding position, followed by two | 415 // Have the first extension in a non-colliding position, followed by two |
| 412 // two extension in the same position. | 416 // two extension in the same position. |
| 413 | 417 |
| 414 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), first_ordinal_); | 418 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), first_ordinal_); |
| 415 extension_sorting->SetPageOrdinal(ext1_->id(), first_ordinal_); | 419 extension_sorting->SetPageOrdinal(ext1_->id(), first_ordinal_); |
| 416 | 420 |
| 417 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), second_ordinal); | 421 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), second_ordinal); |
| 418 extension_sorting->SetPageOrdinal(ext2_->id(), first_ordinal_); | 422 extension_sorting->SetPageOrdinal(ext2_->id(), first_ordinal_); |
| 419 | 423 |
| 420 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), second_ordinal); | 424 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), second_ordinal); |
| 421 extension_sorting->SetPageOrdinal(ext3_->id(), first_ordinal_); | 425 extension_sorting->SetPageOrdinal(ext3_->id(), first_ordinal_); |
| 422 | 426 |
| 423 extension_sorting->FixNTPOrdinalCollisions(); | 427 extension_sorting->FixNTPOrdinalCollisions(); |
| 424 } | 428 } |
| 425 virtual void Verify() OVERRIDE { | 429 virtual void Verify() OVERRIDE { |
| 426 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 430 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 427 StringOrdinal ext1_app_launch = extension_sorting->GetAppLaunchOrdinal( | 431 syncer::StringOrdinal ext1_app_launch = |
| 428 ext1_->id()); | 432 extension_sorting->GetAppLaunchOrdinal(ext1_->id()); |
| 429 StringOrdinal ext2_app_launch = extension_sorting->GetAppLaunchOrdinal( | 433 syncer::StringOrdinal ext2_app_launch = |
| 430 ext2_->id()); | 434 extension_sorting->GetAppLaunchOrdinal(ext2_->id()); |
| 431 StringOrdinal ext3_app_launch = extension_sorting->GetAppLaunchOrdinal( | 435 syncer::StringOrdinal ext3_app_launch = |
| 432 ext3_->id()); | 436 extension_sorting->GetAppLaunchOrdinal(ext3_->id()); |
| 433 | 437 |
| 434 // The overlapping extensions should have be adjusted so that they are | 438 // The overlapping extensions should have be adjusted so that they are |
| 435 // sorted by their id, but they both should be after ext1, which wasn't | 439 // sorted by their id, but they both should be after ext1, which wasn't |
| 436 // overlapping. | 440 // overlapping. |
| 437 EXPECT_TRUE(ext1_app_launch.LessThan(ext2_app_launch)); | 441 EXPECT_TRUE(ext1_app_launch.LessThan(ext2_app_launch)); |
| 438 EXPECT_TRUE(ext1_app_launch.LessThan(ext3_app_launch)); | 442 EXPECT_TRUE(ext1_app_launch.LessThan(ext3_app_launch)); |
| 439 EXPECT_EQ(ext2_->id() < ext3_->id(), | 443 EXPECT_EQ(ext2_->id() < ext3_->id(), |
| 440 ext2_app_launch.LessThan(ext3_app_launch)); | 444 ext2_app_launch.LessThan(ext3_app_launch)); |
| 441 | 445 |
| 442 // The page ordinal should be unchanged. | 446 // The page ordinal should be unchanged. |
| 443 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equal( | 447 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equals( |
| 444 first_ordinal_)); | 448 first_ordinal_)); |
| 445 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equal( | 449 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equals( |
| 446 first_ordinal_)); | 450 first_ordinal_)); |
| 447 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equal( | 451 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equals( |
| 448 first_ordinal_)); | 452 first_ordinal_)); |
| 449 } | 453 } |
| 450 | 454 |
| 451 private: | 455 private: |
| 452 StringOrdinal first_ordinal_; | 456 syncer::StringOrdinal first_ordinal_; |
| 453 }; | 457 }; |
| 454 TEST_F(ExtensionSortingFixNTPCollisionsSomeCollideAtEnd, | 458 TEST_F(ExtensionSortingFixNTPCollisionsSomeCollideAtEnd, |
| 455 ExtensionSortingFixNTPCollisionsSomeCollideAtEnd) {} | 459 ExtensionSortingFixNTPCollisionsSomeCollideAtEnd) {} |
| 456 | 460 |
| 457 class ExtensionSortingFixNTPCollisionsTwoCollisions | 461 class ExtensionSortingFixNTPCollisionsTwoCollisions |
| 458 : public extensions::ExtensionPrefsPrepopulatedTest { | 462 : public extensions::ExtensionPrefsPrepopulatedTest { |
| 459 public: | 463 public: |
| 460 ExtensionSortingFixNTPCollisionsTwoCollisions() {} | 464 ExtensionSortingFixNTPCollisionsTwoCollisions() {} |
| 461 virtual ~ExtensionSortingFixNTPCollisionsTwoCollisions() {} | 465 virtual ~ExtensionSortingFixNTPCollisionsTwoCollisions() {} |
| 462 | 466 |
| 463 virtual void Initialize() OVERRIDE { | 467 virtual void Initialize() OVERRIDE { |
| 464 first_ordinal_ = StringOrdinal::CreateInitialOrdinal(); | 468 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 465 StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); | 469 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); |
| 466 | 470 |
| 467 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 471 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 468 | 472 |
| 469 // Have two extensions colliding, followed by two more colliding extensions. | 473 // Have two extensions colliding, followed by two more colliding extensions. |
| 470 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), first_ordinal_); | 474 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), first_ordinal_); |
| 471 extension_sorting->SetPageOrdinal(ext1_->id(), first_ordinal_); | 475 extension_sorting->SetPageOrdinal(ext1_->id(), first_ordinal_); |
| 472 | 476 |
| 473 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), first_ordinal_); | 477 extension_sorting->SetAppLaunchOrdinal(ext2_->id(), first_ordinal_); |
| 474 extension_sorting->SetPageOrdinal(ext2_->id(), first_ordinal_); | 478 extension_sorting->SetPageOrdinal(ext2_->id(), first_ordinal_); |
| 475 | 479 |
| 476 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), second_ordinal); | 480 extension_sorting->SetAppLaunchOrdinal(ext3_->id(), second_ordinal); |
| 477 extension_sorting->SetPageOrdinal(ext3_->id(), first_ordinal_); | 481 extension_sorting->SetPageOrdinal(ext3_->id(), first_ordinal_); |
| 478 | 482 |
| 479 extension_sorting->SetAppLaunchOrdinal(ext4_->id(), second_ordinal); | 483 extension_sorting->SetAppLaunchOrdinal(ext4_->id(), second_ordinal); |
| 480 extension_sorting->SetPageOrdinal(ext4_->id(), first_ordinal_); | 484 extension_sorting->SetPageOrdinal(ext4_->id(), first_ordinal_); |
| 481 | 485 |
| 482 extension_sorting->FixNTPOrdinalCollisions(); | 486 extension_sorting->FixNTPOrdinalCollisions(); |
| 483 } | 487 } |
| 484 virtual void Verify() OVERRIDE { | 488 virtual void Verify() OVERRIDE { |
| 485 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 489 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 486 StringOrdinal ext1_app_launch = extension_sorting->GetAppLaunchOrdinal( | 490 syncer::StringOrdinal ext1_app_launch = |
| 487 ext1_->id()); | 491 extension_sorting->GetAppLaunchOrdinal(ext1_->id()); |
| 488 StringOrdinal ext2_app_launch = extension_sorting->GetAppLaunchOrdinal( | 492 syncer::StringOrdinal ext2_app_launch = |
| 489 ext2_->id()); | 493 extension_sorting->GetAppLaunchOrdinal(ext2_->id()); |
| 490 StringOrdinal ext3_app_launch = extension_sorting->GetAppLaunchOrdinal( | 494 syncer::StringOrdinal ext3_app_launch = |
| 491 ext3_->id()); | 495 extension_sorting->GetAppLaunchOrdinal(ext3_->id()); |
| 492 StringOrdinal ext4_app_launch = extension_sorting->GetAppLaunchOrdinal( | 496 syncer::StringOrdinal ext4_app_launch = |
| 493 ext4_->id()); | 497 extension_sorting->GetAppLaunchOrdinal(ext4_->id()); |
| 494 | 498 |
| 495 // The overlapping extensions should have be adjusted so that they are | 499 // The overlapping extensions should have be adjusted so that they are |
| 496 // sorted by their id, with |ext1| and |ext2| appearing before |ext3| and | 500 // sorted by their id, with |ext1| and |ext2| appearing before |ext3| and |
| 497 // |ext4|. | 501 // |ext4|. |
| 498 EXPECT_TRUE(ext1_app_launch.LessThan(ext3_app_launch)); | 502 EXPECT_TRUE(ext1_app_launch.LessThan(ext3_app_launch)); |
| 499 EXPECT_TRUE(ext1_app_launch.LessThan(ext4_app_launch)); | 503 EXPECT_TRUE(ext1_app_launch.LessThan(ext4_app_launch)); |
| 500 EXPECT_TRUE(ext2_app_launch.LessThan(ext3_app_launch)); | 504 EXPECT_TRUE(ext2_app_launch.LessThan(ext3_app_launch)); |
| 501 EXPECT_TRUE(ext2_app_launch.LessThan(ext4_app_launch)); | 505 EXPECT_TRUE(ext2_app_launch.LessThan(ext4_app_launch)); |
| 502 | 506 |
| 503 EXPECT_EQ(ext1_->id() < ext2_->id(), | 507 EXPECT_EQ(ext1_->id() < ext2_->id(), |
| 504 ext1_app_launch.LessThan(ext2_app_launch)); | 508 ext1_app_launch.LessThan(ext2_app_launch)); |
| 505 EXPECT_EQ(ext3_->id() < ext4_->id(), | 509 EXPECT_EQ(ext3_->id() < ext4_->id(), |
| 506 ext3_app_launch.LessThan(ext4_app_launch)); | 510 ext3_app_launch.LessThan(ext4_app_launch)); |
| 507 | 511 |
| 508 // The page ordinal should be unchanged. | 512 // The page ordinal should be unchanged. |
| 509 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equal( | 513 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).Equals( |
| 510 first_ordinal_)); | 514 first_ordinal_)); |
| 511 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equal( | 515 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext2_->id()).Equals( |
| 512 first_ordinal_)); | 516 first_ordinal_)); |
| 513 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equal( | 517 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext3_->id()).Equals( |
| 514 first_ordinal_)); | 518 first_ordinal_)); |
| 515 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext4_->id()).Equal( | 519 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext4_->id()).Equals( |
| 516 first_ordinal_)); | 520 first_ordinal_)); |
| 517 } | 521 } |
| 518 | 522 |
| 519 private: | 523 private: |
| 520 StringOrdinal first_ordinal_; | 524 syncer::StringOrdinal first_ordinal_; |
| 521 }; | 525 }; |
| 522 TEST_F(ExtensionSortingFixNTPCollisionsTwoCollisions, | 526 TEST_F(ExtensionSortingFixNTPCollisionsTwoCollisions, |
| 523 ExtensionSortingFixNTPCollisionsTwoCollisions) {} | 527 ExtensionSortingFixNTPCollisionsTwoCollisions) {} |
| 524 | 528 |
| 525 class ExtensionSortingEnsureValidOrdinals : | 529 class ExtensionSortingEnsureValidOrdinals : |
| 526 public extensions::ExtensionPrefsPrepopulatedTest { | 530 public extensions::ExtensionPrefsPrepopulatedTest { |
| 527 public : | 531 public : |
| 528 ExtensionSortingEnsureValidOrdinals() {} | 532 ExtensionSortingEnsureValidOrdinals() {} |
| 529 ~ExtensionSortingEnsureValidOrdinals() {} | 533 ~ExtensionSortingEnsureValidOrdinals() {} |
| 530 | 534 |
| 531 virtual void Initialize() {} | 535 virtual void Initialize() {} |
| 532 virtual void Verify() { | 536 virtual void Verify() { |
| 533 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 537 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 534 | 538 |
| 535 // Give ext1 invalid ordinals and then check that EnsureValidOridnals fixes | 539 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes |
| 536 // them. | 540 // them. |
| 537 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), StringOrdinal()); | 541 extension_sorting->SetAppLaunchOrdinal(ext1_->id(), |
| 538 extension_sorting->SetPageOrdinal(ext1_->id(), StringOrdinal()); | 542 syncer::StringOrdinal()); |
| 543 extension_sorting->SetPageOrdinal(ext1_->id(), syncer::StringOrdinal()); |
| 539 | 544 |
| 540 extension_sorting->EnsureValidOrdinals(ext1_->id()); | 545 extension_sorting->EnsureValidOrdinals(ext1_->id()); |
| 541 | 546 |
| 542 EXPECT_TRUE(extension_sorting->GetAppLaunchOrdinal(ext1_->id()).IsValid()); | 547 EXPECT_TRUE(extension_sorting->GetAppLaunchOrdinal(ext1_->id()).IsValid()); |
| 543 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).IsValid()); | 548 EXPECT_TRUE(extension_sorting->GetPageOrdinal(ext1_->id()).IsValid()); |
| 544 } | 549 } |
| 545 }; | 550 }; |
| 546 TEST_F(ExtensionSortingEnsureValidOrdinals, | 551 TEST_F(ExtensionSortingEnsureValidOrdinals, |
| 547 ExtensionSortingEnsureValidOrdinals) {} | 552 ExtensionSortingEnsureValidOrdinals) {} |
| 548 | 553 |
| 549 class ExtensionSortingPageOrdinalMapping : | 554 class ExtensionSortingPageOrdinalMapping : |
| 550 public extensions::ExtensionPrefsPrepopulatedTest { | 555 public extensions::ExtensionPrefsPrepopulatedTest { |
| 551 public: | 556 public: |
| 552 ExtensionSortingPageOrdinalMapping() {} | 557 ExtensionSortingPageOrdinalMapping() {} |
| 553 virtual ~ExtensionSortingPageOrdinalMapping() {} | 558 virtual ~ExtensionSortingPageOrdinalMapping() {} |
| 554 | 559 |
| 555 virtual void Initialize() {} | 560 virtual void Initialize() {} |
| 556 virtual void Verify() { | 561 virtual void Verify() { |
| 557 std::string ext_1 = "ext_1"; | 562 std::string ext_1 = "ext_1"; |
| 558 std::string ext_2 = "ext_2"; | 563 std::string ext_2 = "ext_2"; |
| 559 | 564 |
| 560 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 565 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 561 StringOrdinal first_ordinal = StringOrdinal::CreateInitialOrdinal(); | 566 syncer::StringOrdinal first_ordinal = |
| 567 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 562 | 568 |
| 563 // Ensure attempting to removing a mapping with an invalid page doesn't | 569 // Ensure attempting to removing a mapping with an invalid page doesn't |
| 564 // modify the map. | 570 // modify the map. |
| 565 EXPECT_TRUE(extension_sorting->ntp_ordinal_map_.empty()); | 571 EXPECT_TRUE(extension_sorting->ntp_ordinal_map_.empty()); |
| 566 extension_sorting->RemoveOrdinalMapping( | 572 extension_sorting->RemoveOrdinalMapping( |
| 567 ext_1, first_ordinal, first_ordinal); | 573 ext_1, first_ordinal, first_ordinal); |
| 568 EXPECT_TRUE(extension_sorting->ntp_ordinal_map_.empty()); | 574 EXPECT_TRUE(extension_sorting->ntp_ordinal_map_.empty()); |
| 569 | 575 |
| 570 // Add new mappings. | 576 // Add new mappings. |
| 571 extension_sorting->AddOrdinalMapping(ext_1, first_ordinal, first_ordinal); | 577 extension_sorting->AddOrdinalMapping(ext_1, first_ordinal, first_ordinal); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 simple_dict.SetString(keys::kApp, "true"); | 621 simple_dict.SetString(keys::kApp, "true"); |
| 616 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); | 622 simple_dict.SetString(keys::kLaunchLocalPath, "fake.html"); |
| 617 | 623 |
| 618 std::string error; | 624 std::string error; |
| 619 app1_scoped_ = Extension::Create( | 625 app1_scoped_ = Extension::Create( |
| 620 prefs_.temp_dir().AppendASCII("app1_"), Extension::EXTERNAL_PREF, | 626 prefs_.temp_dir().AppendASCII("app1_"), Extension::EXTERNAL_PREF, |
| 621 simple_dict, Extension::NO_FLAGS, &error); | 627 simple_dict, Extension::NO_FLAGS, &error); |
| 622 prefs()->OnExtensionInstalled(app1_scoped_.get(), | 628 prefs()->OnExtensionInstalled(app1_scoped_.get(), |
| 623 Extension::ENABLED, | 629 Extension::ENABLED, |
| 624 false, | 630 false, |
| 625 StringOrdinal()); | 631 syncer::StringOrdinal()); |
| 626 | 632 |
| 627 app2_scoped_ = Extension::Create( | 633 app2_scoped_ = Extension::Create( |
| 628 prefs_.temp_dir().AppendASCII("app2_"), Extension::EXTERNAL_PREF, | 634 prefs_.temp_dir().AppendASCII("app2_"), Extension::EXTERNAL_PREF, |
| 629 simple_dict, Extension::NO_FLAGS, &error); | 635 simple_dict, Extension::NO_FLAGS, &error); |
| 630 prefs()->OnExtensionInstalled(app2_scoped_.get(), | 636 prefs()->OnExtensionInstalled(app2_scoped_.get(), |
| 631 Extension::ENABLED, | 637 Extension::ENABLED, |
| 632 false, | 638 false, |
| 633 StringOrdinal()); | 639 syncer::StringOrdinal()); |
| 634 | 640 |
| 635 app1_ = app1_scoped_.get(); | 641 app1_ = app1_scoped_.get(); |
| 636 app2_ = app2_scoped_.get(); | 642 app2_ = app2_scoped_.get(); |
| 637 } | 643 } |
| 638 virtual ~ExtensionSortingPreinstalledAppsBase() {} | 644 virtual ~ExtensionSortingPreinstalledAppsBase() {} |
| 639 | 645 |
| 640 protected: | 646 protected: |
| 641 // Weak references, for convenience. | 647 // Weak references, for convenience. |
| 642 Extension* app1_; | 648 Extension* app1_; |
| 643 Extension* app2_; | 649 Extension* app2_; |
| 644 | 650 |
| 645 private: | 651 private: |
| 646 scoped_refptr<Extension> app1_scoped_; | 652 scoped_refptr<Extension> app1_scoped_; |
| 647 scoped_refptr<Extension> app2_scoped_; | 653 scoped_refptr<Extension> app2_scoped_; |
| 648 }; | 654 }; |
| 649 | 655 |
| 650 class ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage : | 656 class ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage : |
| 651 public ExtensionSortingPreinstalledAppsBase { | 657 public ExtensionSortingPreinstalledAppsBase { |
| 652 public: | 658 public: |
| 653 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} | 659 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} |
| 654 virtual ~ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} | 660 virtual ~ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} |
| 655 | 661 |
| 656 virtual void Initialize() OVERRIDE {} | 662 virtual void Initialize() OVERRIDE {} |
| 657 virtual void Verify() OVERRIDE { | 663 virtual void Verify() OVERRIDE { |
| 658 StringOrdinal page = StringOrdinal::CreateInitialOrdinal(); | 664 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 659 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 665 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 660 | 666 |
| 661 StringOrdinal min = extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 667 syncer::StringOrdinal min = |
| 662 page, | 668 extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 663 ExtensionSorting::MIN_ORDINAL); | 669 page, |
| 664 StringOrdinal max = extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 670 ExtensionSorting::MIN_ORDINAL); |
| 665 page, | 671 syncer::StringOrdinal max = |
| 666 ExtensionSorting::MAX_ORDINAL); | 672 extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 673 page, |
| 674 ExtensionSorting::MAX_ORDINAL); |
| 667 EXPECT_TRUE(min.IsValid()); | 675 EXPECT_TRUE(min.IsValid()); |
| 668 EXPECT_TRUE(max.IsValid()); | 676 EXPECT_TRUE(max.IsValid()); |
| 669 EXPECT_TRUE(min.LessThan(max)); | 677 EXPECT_TRUE(min.LessThan(max)); |
| 670 | 678 |
| 671 // Ensure that the min and max values aren't set for empty pages. | 679 // Ensure that the min and max values aren't set for empty pages. |
| 672 min = StringOrdinal(); | 680 min = syncer::StringOrdinal(); |
| 673 max = StringOrdinal(); | 681 max = syncer::StringOrdinal(); |
| 674 StringOrdinal empty_page = page.CreateAfter(); | 682 syncer::StringOrdinal empty_page = page.CreateAfter(); |
| 675 EXPECT_FALSE(min.IsValid()); | 683 EXPECT_FALSE(min.IsValid()); |
| 676 EXPECT_FALSE(max.IsValid()); | 684 EXPECT_FALSE(max.IsValid()); |
| 677 min = extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 685 min = extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 678 empty_page, | 686 empty_page, |
| 679 ExtensionSorting::MIN_ORDINAL); | 687 ExtensionSorting::MIN_ORDINAL); |
| 680 max = extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 688 max = extension_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 681 empty_page, | 689 empty_page, |
| 682 ExtensionSorting::MAX_ORDINAL); | 690 ExtensionSorting::MAX_ORDINAL); |
| 683 EXPECT_FALSE(min.IsValid()); | 691 EXPECT_FALSE(min.IsValid()); |
| 684 EXPECT_FALSE(max.IsValid()); | 692 EXPECT_FALSE(max.IsValid()); |
| 685 } | 693 } |
| 686 }; | 694 }; |
| 687 TEST_F(ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage, | 695 TEST_F(ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage, |
| 688 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} | 696 ExtensionSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} |
| 689 | 697 |
| 690 // Make sure that empty pages aren't removed from the integer to ordinal | 698 // Make sure that empty pages aren't removed from the integer to ordinal |
| 691 // mapping. See http://www.crbug.com/109802 for details. | 699 // mapping. See http://www.crbug.com/109802 for details. |
| 692 class ExtensionSortingKeepEmptyStringOrdinalPages : | 700 class ExtensionSortingKeepEmptyStringOrdinalPages : |
| 693 public ExtensionSortingPreinstalledAppsBase { | 701 public ExtensionSortingPreinstalledAppsBase { |
| 694 public: | 702 public: |
| 695 ExtensionSortingKeepEmptyStringOrdinalPages() {} | 703 ExtensionSortingKeepEmptyStringOrdinalPages() {} |
| 696 virtual ~ExtensionSortingKeepEmptyStringOrdinalPages() {} | 704 virtual ~ExtensionSortingKeepEmptyStringOrdinalPages() {} |
| 697 | 705 |
| 698 virtual void Initialize() { | 706 virtual void Initialize() { |
| 699 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 707 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 700 | 708 |
| 701 StringOrdinal first_page = StringOrdinal::CreateInitialOrdinal(); | 709 syncer::StringOrdinal first_page = |
| 710 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 702 extension_sorting->SetPageOrdinal(app1_->id(), first_page); | 711 extension_sorting->SetPageOrdinal(app1_->id(), first_page); |
| 703 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); | 712 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); |
| 704 | 713 |
| 705 last_page_ = first_page.CreateAfter(); | 714 last_page_ = first_page.CreateAfter(); |
| 706 extension_sorting->SetPageOrdinal(app2_->id(), last_page_); | 715 extension_sorting->SetPageOrdinal(app2_->id(), last_page_); |
| 707 EXPECT_EQ(1, extension_sorting->PageStringOrdinalAsInteger(last_page_)); | 716 EXPECT_EQ(1, extension_sorting->PageStringOrdinalAsInteger(last_page_)); |
| 708 | 717 |
| 709 // Move the second app to create an empty page. | 718 // Move the second app to create an empty page. |
| 710 extension_sorting->SetPageOrdinal(app2_->id(), first_page); | 719 extension_sorting->SetPageOrdinal(app2_->id(), first_page); |
| 711 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); | 720 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); |
| 712 } | 721 } |
| 713 virtual void Verify() { | 722 virtual void Verify() { |
| 714 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 723 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 715 | 724 |
| 716 // Move the second app to a new empty page at the end, skipping over | 725 // Move the second app to a new empty page at the end, skipping over |
| 717 // the current empty page. | 726 // the current empty page. |
| 718 last_page_ = last_page_.CreateAfter(); | 727 last_page_ = last_page_.CreateAfter(); |
| 719 extension_sorting->SetPageOrdinal(app2_->id(), last_page_); | 728 extension_sorting->SetPageOrdinal(app2_->id(), last_page_); |
| 720 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(last_page_)); | 729 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(last_page_)); |
| 721 EXPECT_TRUE( | 730 EXPECT_TRUE( |
| 722 last_page_.Equal(extension_sorting->PageIntegerAsStringOrdinal(2))); | 731 last_page_.Equals(extension_sorting->PageIntegerAsStringOrdinal(2))); |
| 723 } | 732 } |
| 724 | 733 |
| 725 private: | 734 private: |
| 726 StringOrdinal last_page_; | 735 syncer::StringOrdinal last_page_; |
| 727 }; | 736 }; |
| 728 TEST_F(ExtensionSortingKeepEmptyStringOrdinalPages, | 737 TEST_F(ExtensionSortingKeepEmptyStringOrdinalPages, |
| 729 ExtensionSortingKeepEmptyStringOrdinalPages) {} | 738 ExtensionSortingKeepEmptyStringOrdinalPages) {} |
| 730 | 739 |
| 731 class ExtensionSortingMakesFillerOrdinals : | 740 class ExtensionSortingMakesFillerOrdinals : |
| 732 public ExtensionSortingPreinstalledAppsBase { | 741 public ExtensionSortingPreinstalledAppsBase { |
| 733 public: | 742 public: |
| 734 ExtensionSortingMakesFillerOrdinals() {} | 743 ExtensionSortingMakesFillerOrdinals() {} |
| 735 virtual ~ExtensionSortingMakesFillerOrdinals() {} | 744 virtual ~ExtensionSortingMakesFillerOrdinals() {} |
| 736 | 745 |
| 737 virtual void Initialize() { | 746 virtual void Initialize() { |
| 738 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 747 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 739 | 748 |
| 740 StringOrdinal first_page = StringOrdinal::CreateInitialOrdinal(); | 749 syncer::StringOrdinal first_page = |
| 750 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 741 extension_sorting->SetPageOrdinal(app1_->id(), first_page); | 751 extension_sorting->SetPageOrdinal(app1_->id(), first_page); |
| 742 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); | 752 EXPECT_EQ(0, extension_sorting->PageStringOrdinalAsInteger(first_page)); |
| 743 } | 753 } |
| 744 virtual void Verify() { | 754 virtual void Verify() { |
| 745 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); | 755 ExtensionSorting* extension_sorting = prefs()->extension_sorting(); |
| 746 | 756 |
| 747 // Because the UI can add an unlimited number of empty pages without an app | 757 // Because the UI can add an unlimited number of empty pages without an app |
| 748 // on them, this test simulates dropping of an app on the 1st and 4th empty | 758 // on them, this test simulates dropping of an app on the 1st and 4th empty |
| 749 // pages (3rd and 6th pages by index) to ensure we don't crash and that | 759 // pages (3rd and 6th pages by index) to ensure we don't crash and that |
| 750 // filler ordinals are created as needed. See: http://crbug.com/122214 | 760 // filler ordinals are created as needed. See: http://crbug.com/122214 |
| 751 StringOrdinal page_three = extension_sorting->PageIntegerAsStringOrdinal(2); | 761 syncer::StringOrdinal page_three = |
| 762 extension_sorting->PageIntegerAsStringOrdinal(2); |
| 752 extension_sorting->SetPageOrdinal(app1_->id(), page_three); | 763 extension_sorting->SetPageOrdinal(app1_->id(), page_three); |
| 753 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(page_three)); | 764 EXPECT_EQ(2, extension_sorting->PageStringOrdinalAsInteger(page_three)); |
| 754 | 765 |
| 755 StringOrdinal page_six = extension_sorting->PageIntegerAsStringOrdinal(5); | 766 syncer::StringOrdinal page_six = |
| 767 extension_sorting->PageIntegerAsStringOrdinal(5); |
| 756 extension_sorting->SetPageOrdinal(app1_->id(), page_six); | 768 extension_sorting->SetPageOrdinal(app1_->id(), page_six); |
| 757 EXPECT_EQ(5, extension_sorting->PageStringOrdinalAsInteger(page_six)); | 769 EXPECT_EQ(5, extension_sorting->PageStringOrdinalAsInteger(page_six)); |
| 758 } | 770 } |
| 759 }; | 771 }; |
| 760 TEST_F(ExtensionSortingMakesFillerOrdinals, | 772 TEST_F(ExtensionSortingMakesFillerOrdinals, |
| 761 ExtensionSortingMakesFillerOrdinals) {} | 773 ExtensionSortingMakesFillerOrdinals) {} |
| OLD | NEW |