| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/chrome_app_sorting.h" | 5 #include "chrome/browser/extensions/chrome_app_sorting.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "chrome/browser/extensions/extension_prefs_unittest.h" | 9 #include "chrome/browser/extensions/extension_prefs_unittest.h" |
| 10 #include "components/crx_file/id_util.h" | 10 #include "components/crx_file/id_util.h" |
| 11 #include "extensions/common/constants.h" | 11 #include "extensions/common/constants.h" |
| 12 #include "extensions/common/manifest_constants.h" | 12 #include "extensions/common/manifest_constants.h" |
| 13 #include "sync/api/string_ordinal.h" | 13 #include "sync/api/string_ordinal.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 15 |
| 16 namespace extensions { | 16 namespace extensions { |
| 17 | 17 |
| 18 namespace keys = manifest_keys; | 18 namespace keys = manifest_keys; |
| 19 | 19 |
| 20 class ChromeAppSortingTest : public ExtensionPrefsTest { | 20 class ChromeAppSortingAppLocation : public ExtensionPrefsTest { |
| 21 protected: | |
| 22 ChromeAppSorting* app_sorting() { | |
| 23 return static_cast<ChromeAppSorting*>(prefs()->app_sorting()); | |
| 24 } | |
| 25 }; | |
| 26 | |
| 27 class ChromeAppSortingAppLocation : public ChromeAppSortingTest { | |
| 28 public: | 21 public: |
| 29 void Initialize() override { | 22 void Initialize() override { |
| 30 extension_ = prefs_.AddExtension("not_an_app"); | 23 extension_ = prefs_.AddExtension("not_an_app"); |
| 31 // Non-apps should not have any app launch ordinal or page ordinal. | 24 // Non-apps should not have any app launch ordinal or page ordinal. |
| 32 prefs()->OnExtensionInstalled(extension_.get(), | 25 prefs()->OnExtensionInstalled(extension_.get(), |
| 33 Extension::ENABLED, | 26 Extension::ENABLED, |
| 34 syncer::StringOrdinal(), | 27 syncer::StringOrdinal(), |
| 35 std::string()); | 28 std::string()); |
| 36 } | 29 } |
| 37 | 30 |
| 38 void Verify() override { | 31 void Verify() override { |
| 39 EXPECT_FALSE( | 32 EXPECT_FALSE( |
| 40 app_sorting()->GetAppLaunchOrdinal(extension_->id()).IsValid()); | 33 app_sorting()->GetAppLaunchOrdinal(extension_->id()).IsValid()); |
| 41 EXPECT_FALSE( | 34 EXPECT_FALSE(app_sorting()->GetPageOrdinal(extension_->id()).IsValid()); |
| 42 app_sorting()->GetPageOrdinal(extension_->id()).IsValid()); | |
| 43 } | 35 } |
| 44 | 36 |
| 45 private: | 37 private: |
| 46 scoped_refptr<Extension> extension_; | 38 scoped_refptr<Extension> extension_; |
| 47 }; | 39 }; |
| 48 TEST_F(ChromeAppSortingAppLocation, ChromeAppSortingAppLocation) {} | 40 TEST_F(ChromeAppSortingAppLocation, ChromeAppSortingAppLocation) {} |
| 49 | 41 |
| 50 class ChromeAppSortingAppLaunchOrdinal : public ChromeAppSortingTest { | 42 class ChromeAppSortingAppLaunchOrdinal : public ExtensionPrefsTest { |
| 51 public: | 43 public: |
| 52 void Initialize() override { | 44 void Initialize() override { |
| 53 // No extensions yet. | 45 // No extensions yet. |
| 54 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); | 46 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 55 EXPECT_TRUE(syncer::StringOrdinal::CreateInitialOrdinal().Equals( | 47 EXPECT_TRUE(syncer::StringOrdinal::CreateInitialOrdinal().Equals( |
| 56 app_sorting()->CreateNextAppLaunchOrdinal(page))); | 48 app_sorting()->CreateNextAppLaunchOrdinal(page))); |
| 57 | 49 |
| 58 extension_ = prefs_.AddApp("on_extension_installed"); | 50 extension_ = prefs_.AddApp("on_extension_installed"); |
| 59 EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id())); | 51 EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id())); |
| 60 prefs()->OnExtensionInstalled(extension_.get(), | 52 prefs()->OnExtensionInstalled(extension_.get(), |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 app_sorting()->CreateNextAppLaunchOrdinal(next_page); | 88 app_sorting()->CreateNextAppLaunchOrdinal(next_page); |
| 97 EXPECT_TRUE(next_page_app_launch_ordinal.Equals( | 89 EXPECT_TRUE(next_page_app_launch_ordinal.Equals( |
| 98 app_sorting()->CreateFirstAppLaunchOrdinal(next_page))); | 90 app_sorting()->CreateFirstAppLaunchOrdinal(next_page))); |
| 99 } | 91 } |
| 100 | 92 |
| 101 private: | 93 private: |
| 102 scoped_refptr<Extension> extension_; | 94 scoped_refptr<Extension> extension_; |
| 103 }; | 95 }; |
| 104 TEST_F(ChromeAppSortingAppLaunchOrdinal, ChromeAppSortingAppLaunchOrdinal) {} | 96 TEST_F(ChromeAppSortingAppLaunchOrdinal, ChromeAppSortingAppLaunchOrdinal) {} |
| 105 | 97 |
| 106 class ChromeAppSortingPageOrdinal : public ChromeAppSortingTest { | 98 class ChromeAppSortingPageOrdinal : public ExtensionPrefsTest { |
| 107 public: | 99 public: |
| 108 void Initialize() override { | 100 void Initialize() override { |
| 109 extension_ = prefs_.AddApp("page_ordinal"); | 101 extension_ = prefs_.AddApp("page_ordinal"); |
| 110 // Install with a page preference. | 102 // Install with a page preference. |
| 111 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal(); | 103 first_page_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 112 prefs()->OnExtensionInstalled(extension_.get(), | 104 prefs()->OnExtensionInstalled(extension_.get(), |
| 113 Extension::ENABLED, | 105 Extension::ENABLED, |
| 114 first_page_, | 106 first_page_, |
| 115 std::string()); | 107 std::string()); |
| 116 EXPECT_TRUE(first_page_.Equals( | 108 EXPECT_TRUE(first_page_.Equals( |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 kPrefPageIndexDeprecated, | 168 kPrefPageIndexDeprecated, |
| 177 new base::FundamentalValue(0)); | 169 new base::FundamentalValue(0)); |
| 178 | 170 |
| 179 scoped_prefs->UpdateExtensionPref(extension3()->id(), | 171 scoped_prefs->UpdateExtensionPref(extension3()->id(), |
| 180 kPrefAppLaunchIndexDeprecated, | 172 kPrefAppLaunchIndexDeprecated, |
| 181 new base::FundamentalValue(0)); | 173 new base::FundamentalValue(0)); |
| 182 scoped_prefs->UpdateExtensionPref(extension3()->id(), | 174 scoped_prefs->UpdateExtensionPref(extension3()->id(), |
| 183 kPrefPageIndexDeprecated, | 175 kPrefPageIndexDeprecated, |
| 184 new base::FundamentalValue(1)); | 176 new base::FundamentalValue(1)); |
| 185 | 177 |
| 186 // We insert the ids in reserve order so that we have to deal with the | 178 // We insert the ids in reverse order so that we have to deal with the |
| 187 // element on the 2nd page before the 1st page is seen. | 179 // element on the 2nd page before the 1st page is seen. |
| 188 ExtensionIdList ids; | 180 ExtensionIdList ids; |
| 189 ids.push_back(extension3()->id()); | 181 ids.push_back(extension3()->id()); |
| 190 ids.push_back(extension2()->id()); | 182 ids.push_back(extension2()->id()); |
| 191 ids.push_back(extension1()->id()); | 183 ids.push_back(extension1()->id()); |
| 192 | 184 |
| 193 prefs()->app_sorting()->Initialize(ids); | 185 app_sorting()->MigrateAppIndex(ids); |
| 194 } | 186 } |
| 195 void Verify() override { | 187 void Verify() override { |
| 196 syncer::StringOrdinal first_ordinal = | 188 syncer::StringOrdinal first_ordinal = |
| 197 syncer::StringOrdinal::CreateInitialOrdinal(); | 189 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 198 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 199 | 190 |
| 200 EXPECT_TRUE(first_ordinal.Equals( | 191 EXPECT_TRUE(first_ordinal.Equals( |
| 201 app_sorting->GetAppLaunchOrdinal(extension1()->id()))); | 192 app_sorting()->GetAppLaunchOrdinal(extension1()->id()))); |
| 202 EXPECT_TRUE(first_ordinal.LessThan( | 193 EXPECT_TRUE(first_ordinal.LessThan( |
| 203 app_sorting->GetAppLaunchOrdinal(extension2()->id()))); | 194 app_sorting()->GetAppLaunchOrdinal(extension2()->id()))); |
| 204 EXPECT_TRUE(first_ordinal.Equals( | 195 EXPECT_TRUE(first_ordinal.Equals( |
| 205 app_sorting->GetAppLaunchOrdinal(extension3()->id()))); | 196 app_sorting()->GetAppLaunchOrdinal(extension3()->id()))); |
| 206 | 197 |
| 207 EXPECT_TRUE(first_ordinal.Equals( | 198 EXPECT_TRUE(first_ordinal.Equals( |
| 208 app_sorting->GetPageOrdinal(extension1()->id()))); | 199 app_sorting()->GetPageOrdinal(extension1()->id()))); |
| 209 EXPECT_TRUE(first_ordinal.Equals( | 200 EXPECT_TRUE(first_ordinal.Equals( |
| 210 app_sorting->GetPageOrdinal(extension2()->id()))); | 201 app_sorting()->GetPageOrdinal(extension2()->id()))); |
| 211 EXPECT_TRUE(first_ordinal.LessThan( | 202 EXPECT_TRUE(first_ordinal.LessThan( |
| 212 app_sorting->GetPageOrdinal(extension3()->id()))); | 203 app_sorting()->GetPageOrdinal(extension3()->id()))); |
| 213 } | 204 } |
| 214 }; | 205 }; |
| 215 TEST_F(ChromeAppSortingInitialize, ChromeAppSortingInitialize) {} | 206 TEST_F(ChromeAppSortingInitialize, ChromeAppSortingInitialize) {} |
| 216 | 207 |
| 217 // Make sure that initialization still works when no extensions are present | 208 // Make sure that initialization still works when no extensions are present |
| 218 // (i.e. make sure that the web store icon is still loaded into the map). | 209 // (i.e. make sure that the web store icon is still loaded into the map). |
| 219 class ChromeAppSortingInitializeWithNoApps : public PrefsPrepopulatedTestBase { | 210 class ChromeAppSortingInitializeWithNoApps : public PrefsPrepopulatedTestBase { |
| 220 public: | 211 public: |
| 221 ChromeAppSortingInitializeWithNoApps() {} | 212 ChromeAppSortingInitializeWithNoApps() {} |
| 222 ~ChromeAppSortingInitializeWithNoApps() override {} | 213 ~ChromeAppSortingInitializeWithNoApps() override {} |
| 223 | 214 |
| 224 void Initialize() override { | 215 void Initialize() override { |
| 225 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 226 | |
| 227 // Make sure that the web store has valid ordinals. | 216 // Make sure that the web store has valid ordinals. |
| 228 syncer::StringOrdinal initial_ordinal = | 217 syncer::StringOrdinal initial_ordinal = |
| 229 syncer::StringOrdinal::CreateInitialOrdinal(); | 218 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 230 app_sorting->SetPageOrdinal(extensions::kWebStoreAppId, | 219 app_sorting()->SetPageOrdinal(extensions::kWebStoreAppId, |
| 231 initial_ordinal); | 220 initial_ordinal); |
| 232 app_sorting->SetAppLaunchOrdinal(extensions::kWebStoreAppId, | 221 app_sorting()->SetAppLaunchOrdinal(extensions::kWebStoreAppId, |
| 233 initial_ordinal); | 222 initial_ordinal); |
| 234 | |
| 235 ExtensionIdList ids; | |
| 236 app_sorting->Initialize(ids); | |
| 237 } | 223 } |
| 238 void Verify() override { | 224 void Verify() override { |
| 239 ChromeAppSorting* app_sorting = | |
| 240 static_cast<ChromeAppSorting*>(prefs()->app_sorting()); | |
| 241 | |
| 242 syncer::StringOrdinal page = | 225 syncer::StringOrdinal page = |
| 243 app_sorting->GetPageOrdinal(extensions::kWebStoreAppId); | 226 app_sorting()->GetPageOrdinal(extensions::kWebStoreAppId); |
| 244 EXPECT_TRUE(page.IsValid()); | 227 EXPECT_TRUE(page.IsValid()); |
| 245 | 228 |
| 246 ChromeAppSorting::PageOrdinalMap::iterator page_it = | 229 ChromeAppSorting::PageOrdinalMap::iterator page_it = |
| 247 app_sorting->ntp_ordinal_map_.find(page); | 230 app_sorting()->ntp_ordinal_map_.find(page); |
| 248 EXPECT_TRUE(page_it != app_sorting->ntp_ordinal_map_.end()); | 231 EXPECT_TRUE(page_it != app_sorting()->ntp_ordinal_map_.end()); |
| 249 | 232 |
| 250 syncer::StringOrdinal app_launch = | 233 syncer::StringOrdinal app_launch = |
| 251 app_sorting->GetPageOrdinal(extensions::kWebStoreAppId); | 234 app_sorting()->GetPageOrdinal(extensions::kWebStoreAppId); |
| 252 EXPECT_TRUE(app_launch.IsValid()); | 235 EXPECT_TRUE(app_launch.IsValid()); |
| 253 | 236 |
| 254 ChromeAppSorting::AppLaunchOrdinalMap::iterator app_launch_it = | 237 ChromeAppSorting::AppLaunchOrdinalMap::iterator app_launch_it = |
| 255 page_it->second.find(app_launch); | 238 page_it->second.find(app_launch); |
| 256 EXPECT_TRUE(app_launch_it != page_it->second.end()); | 239 EXPECT_TRUE(app_launch_it != page_it->second.end()); |
| 257 } | 240 } |
| 258 }; | 241 }; |
| 259 TEST_F(ChromeAppSortingInitializeWithNoApps, | 242 TEST_F(ChromeAppSortingInitializeWithNoApps, |
| 260 ChromeAppSortingInitializeWithNoApps) {} | 243 ChromeAppSortingInitializeWithNoApps) {} |
| 261 | 244 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 277 | 260 |
| 278 // Setup the deprecated preference. | 261 // Setup the deprecated preference. |
| 279 ExtensionScopedPrefs* scoped_prefs = | 262 ExtensionScopedPrefs* scoped_prefs = |
| 280 static_cast<ExtensionScopedPrefs*>(prefs()); | 263 static_cast<ExtensionScopedPrefs*>(prefs()); |
| 281 scoped_prefs->UpdateExtensionPref(extension1()->id(), | 264 scoped_prefs->UpdateExtensionPref(extension1()->id(), |
| 282 kPrefAppLaunchIndexDeprecated, | 265 kPrefAppLaunchIndexDeprecated, |
| 283 new base::FundamentalValue(0)); | 266 new base::FundamentalValue(0)); |
| 284 scoped_prefs->UpdateExtensionPref(extension1()->id(), | 267 scoped_prefs->UpdateExtensionPref(extension1()->id(), |
| 285 kPrefPageIndexDeprecated, | 268 kPrefPageIndexDeprecated, |
| 286 new base::FundamentalValue(-1)); | 269 new base::FundamentalValue(-1)); |
| 287 | |
| 288 ExtensionIdList ids; | |
| 289 ids.push_back(extension1()->id()); | |
| 290 | |
| 291 prefs()->app_sorting()->Initialize(ids); | |
| 292 } | 270 } |
| 293 void Verify() override { | 271 void Verify() override { |
| 294 // Make sure that the invalid page_index wasn't converted over. | 272 // Make sure that the invalid page_index wasn't converted over. |
| 295 EXPECT_FALSE(prefs()->app_sorting()->GetAppLaunchOrdinal( | 273 EXPECT_FALSE(app_sorting()->GetAppLaunchOrdinal( |
| 296 extension1()->id()).IsValid()); | 274 extension1()->id()).IsValid()); |
| 297 } | 275 } |
| 298 }; | 276 }; |
| 299 TEST_F(ChromeAppSortingMigrateAppIndexInvalid, | 277 TEST_F(ChromeAppSortingMigrateAppIndexInvalid, |
| 300 ChromeAppSortingMigrateAppIndexInvalid) {} | 278 ChromeAppSortingMigrateAppIndexInvalid) {} |
| 301 | 279 |
| 302 class ChromeAppSortingFixNTPCollisionsAllCollide | 280 class ChromeAppSortingFixNTPCollisionsAllCollide |
| 303 : public PrefsPrepopulatedTestBase { | 281 : public PrefsPrepopulatedTestBase { |
| 304 public: | 282 public: |
| 305 ChromeAppSortingFixNTPCollisionsAllCollide() {} | 283 ChromeAppSortingFixNTPCollisionsAllCollide() {} |
| 306 ~ChromeAppSortingFixNTPCollisionsAllCollide() override {} | 284 ~ChromeAppSortingFixNTPCollisionsAllCollide() override {} |
| 307 | 285 |
| 308 void Initialize() override { | 286 void Initialize() override { |
| 309 repeated_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); | 287 repeated_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 310 | 288 |
| 311 AppSorting* app_sorting = prefs()->app_sorting(); | 289 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), |
| 290 repeated_ordinal_); |
| 291 app_sorting()->SetPageOrdinal(extension1()->id(), repeated_ordinal_); |
| 312 | 292 |
| 313 app_sorting->SetAppLaunchOrdinal(extension1()->id(), | 293 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), repeated_ordinal_); |
| 314 repeated_ordinal_); | 294 app_sorting()->SetPageOrdinal(extension2()->id(), repeated_ordinal_); |
| 315 app_sorting->SetPageOrdinal(extension1()->id(), repeated_ordinal_); | |
| 316 | 295 |
| 317 app_sorting->SetAppLaunchOrdinal(extension2()->id(), repeated_ordinal_); | 296 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), repeated_ordinal_); |
| 318 app_sorting->SetPageOrdinal(extension2()->id(), repeated_ordinal_); | 297 app_sorting()->SetPageOrdinal(extension3()->id(), repeated_ordinal_); |
| 319 | 298 |
| 320 app_sorting->SetAppLaunchOrdinal(extension3()->id(), repeated_ordinal_); | 299 app_sorting()->FixNTPOrdinalCollisions(); |
| 321 app_sorting->SetPageOrdinal(extension3()->id(), repeated_ordinal_); | |
| 322 | |
| 323 app_sorting->FixNTPOrdinalCollisions(); | |
| 324 } | 300 } |
| 325 void Verify() override { | 301 void Verify() override { |
| 326 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 327 syncer::StringOrdinal extension1_app_launch = | 302 syncer::StringOrdinal extension1_app_launch = |
| 328 app_sorting->GetAppLaunchOrdinal(extension1()->id()); | 303 app_sorting()->GetAppLaunchOrdinal(extension1()->id()); |
| 329 syncer::StringOrdinal extension2_app_launch = | 304 syncer::StringOrdinal extension2_app_launch = |
| 330 app_sorting->GetAppLaunchOrdinal(extension2()->id()); | 305 app_sorting()->GetAppLaunchOrdinal(extension2()->id()); |
| 331 syncer::StringOrdinal extension3_app_launch = | 306 syncer::StringOrdinal extension3_app_launch = |
| 332 app_sorting->GetAppLaunchOrdinal(extension3()->id()); | 307 app_sorting()->GetAppLaunchOrdinal(extension3()->id()); |
| 333 | 308 |
| 334 // The overlapping extensions should have be adjusted so that they are | 309 // The overlapping extensions should have be adjusted so that they are |
| 335 // sorted by their id. | 310 // sorted by their id. |
| 336 EXPECT_EQ(extension1()->id() < extension2()->id(), | 311 EXPECT_EQ(extension1()->id() < extension2()->id(), |
| 337 extension1_app_launch.LessThan(extension2_app_launch)); | 312 extension1_app_launch.LessThan(extension2_app_launch)); |
| 338 EXPECT_EQ(extension1()->id() < extension3()->id(), | 313 EXPECT_EQ(extension1()->id() < extension3()->id(), |
| 339 extension1_app_launch.LessThan(extension3_app_launch)); | 314 extension1_app_launch.LessThan(extension3_app_launch)); |
| 340 EXPECT_EQ(extension2()->id() < extension3()->id(), | 315 EXPECT_EQ(extension2()->id() < extension3()->id(), |
| 341 extension2_app_launch.LessThan(extension3_app_launch)); | 316 extension2_app_launch.LessThan(extension3_app_launch)); |
| 342 | 317 |
| 343 // The page ordinal should be unchanged. | 318 // The page ordinal should be unchanged. |
| 344 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( | 319 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals( |
| 345 repeated_ordinal_)); | 320 repeated_ordinal_)); |
| 346 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( | 321 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals( |
| 347 repeated_ordinal_)); | 322 repeated_ordinal_)); |
| 348 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( | 323 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals( |
| 349 repeated_ordinal_)); | 324 repeated_ordinal_)); |
| 350 } | 325 } |
| 351 | 326 |
| 352 private: | 327 private: |
| 353 syncer::StringOrdinal repeated_ordinal_; | 328 syncer::StringOrdinal repeated_ordinal_; |
| 354 }; | 329 }; |
| 355 TEST_F(ChromeAppSortingFixNTPCollisionsAllCollide, | 330 TEST_F(ChromeAppSortingFixNTPCollisionsAllCollide, |
| 356 ChromeAppSortingFixNTPCollisionsAllCollide) {} | 331 ChromeAppSortingFixNTPCollisionsAllCollide) {} |
| 357 | 332 |
| 358 class ChromeAppSortingFixNTPCollisionsSomeCollideAtStart | 333 class ChromeAppSortingFixNTPCollisionsSomeCollideAtStart |
| 359 : public PrefsPrepopulatedTestBase { | 334 : public PrefsPrepopulatedTestBase { |
| 360 public: | 335 public: |
| 361 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() {} | 336 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() {} |
| 362 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() override {} | 337 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() override {} |
| 363 | 338 |
| 364 void Initialize() override { | 339 void Initialize() override { |
| 365 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); | 340 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 366 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); | 341 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); |
| 367 | 342 |
| 368 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 369 | |
| 370 // Have the first two extension in the same position, with a third | 343 // Have the first two extension in the same position, with a third |
| 371 // (non-colliding) extension after. | 344 // (non-colliding) extension after. |
| 372 | 345 |
| 373 app_sorting->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); | 346 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); |
| 374 app_sorting->SetPageOrdinal(extension1()->id(), first_ordinal_); | 347 app_sorting()->SetPageOrdinal(extension1()->id(), first_ordinal_); |
| 375 | 348 |
| 376 app_sorting->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_); | 349 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_); |
| 377 app_sorting->SetPageOrdinal(extension2()->id(), first_ordinal_); | 350 app_sorting()->SetPageOrdinal(extension2()->id(), first_ordinal_); |
| 378 | 351 |
| 379 app_sorting->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); | 352 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); |
| 380 app_sorting->SetPageOrdinal(extension3()->id(), first_ordinal_); | 353 app_sorting()->SetPageOrdinal(extension3()->id(), first_ordinal_); |
| 381 | 354 |
| 382 app_sorting->FixNTPOrdinalCollisions(); | 355 app_sorting()->FixNTPOrdinalCollisions(); |
| 383 } | 356 } |
| 384 void Verify() override { | 357 void Verify() override { |
| 385 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 386 syncer::StringOrdinal extension1_app_launch = | 358 syncer::StringOrdinal extension1_app_launch = |
| 387 app_sorting->GetAppLaunchOrdinal(extension1()->id()); | 359 app_sorting()->GetAppLaunchOrdinal(extension1()->id()); |
| 388 syncer::StringOrdinal extension2_app_launch = | 360 syncer::StringOrdinal extension2_app_launch = |
| 389 app_sorting->GetAppLaunchOrdinal(extension2()->id()); | 361 app_sorting()->GetAppLaunchOrdinal(extension2()->id()); |
| 390 syncer::StringOrdinal extension3_app_launch = | 362 syncer::StringOrdinal extension3_app_launch = |
| 391 app_sorting->GetAppLaunchOrdinal(extension3()->id()); | 363 app_sorting()->GetAppLaunchOrdinal(extension3()->id()); |
| 392 | 364 |
| 393 // The overlapping extensions should have be adjusted so that they are | 365 // The overlapping extensions should have be adjusted so that they are |
| 394 // sorted by their id, but they both should be before ext3, which wasn't | 366 // sorted by their id, but they both should be before ext3, which wasn't |
| 395 // overlapping. | 367 // overlapping. |
| 396 EXPECT_EQ(extension1()->id() < extension2()->id(), | 368 EXPECT_EQ(extension1()->id() < extension2()->id(), |
| 397 extension1_app_launch.LessThan(extension2_app_launch)); | 369 extension1_app_launch.LessThan(extension2_app_launch)); |
| 398 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); | 370 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); |
| 399 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch)); | 371 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch)); |
| 400 | 372 |
| 401 // The page ordinal should be unchanged. | 373 // The page ordinal should be unchanged. |
| 402 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( | 374 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals( |
| 403 first_ordinal_)); | 375 first_ordinal_)); |
| 404 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( | 376 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals( |
| 405 first_ordinal_)); | 377 first_ordinal_)); |
| 406 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( | 378 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals( |
| 407 first_ordinal_)); | 379 first_ordinal_)); |
| 408 } | 380 } |
| 409 | 381 |
| 410 private: | 382 private: |
| 411 syncer::StringOrdinal first_ordinal_; | 383 syncer::StringOrdinal first_ordinal_; |
| 412 }; | 384 }; |
| 413 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtStart, | 385 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtStart, |
| 414 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart) {} | 386 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart) {} |
| 415 | 387 |
| 416 class ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd | 388 class ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd |
| 417 : public PrefsPrepopulatedTestBase { | 389 : public PrefsPrepopulatedTestBase { |
| 418 public: | 390 public: |
| 419 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() {} | 391 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() {} |
| 420 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() override {} | 392 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() override {} |
| 421 | 393 |
| 422 void Initialize() override { | 394 void Initialize() override { |
| 423 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); | 395 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 424 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); | 396 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); |
| 425 | 397 |
| 426 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 427 | |
| 428 // Have the first extension in a non-colliding position, followed by two | 398 // Have the first extension in a non-colliding position, followed by two |
| 429 // two extension in the same position. | 399 // two extension in the same position. |
| 430 | 400 |
| 431 app_sorting->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); | 401 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); |
| 432 app_sorting->SetPageOrdinal(extension1()->id(), first_ordinal_); | 402 app_sorting()->SetPageOrdinal(extension1()->id(), first_ordinal_); |
| 433 | 403 |
| 434 app_sorting->SetAppLaunchOrdinal(extension2()->id(), second_ordinal); | 404 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), second_ordinal); |
| 435 app_sorting->SetPageOrdinal(extension2()->id(), first_ordinal_); | 405 app_sorting()->SetPageOrdinal(extension2()->id(), first_ordinal_); |
| 436 | 406 |
| 437 app_sorting->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); | 407 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); |
| 438 app_sorting->SetPageOrdinal(extension3()->id(), first_ordinal_); | 408 app_sorting()->SetPageOrdinal(extension3()->id(), first_ordinal_); |
| 439 | 409 |
| 440 app_sorting->FixNTPOrdinalCollisions(); | 410 app_sorting()->FixNTPOrdinalCollisions(); |
| 441 } | 411 } |
| 442 void Verify() override { | 412 void Verify() override { |
| 443 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 444 syncer::StringOrdinal extension1_app_launch = | 413 syncer::StringOrdinal extension1_app_launch = |
| 445 app_sorting->GetAppLaunchOrdinal(extension1()->id()); | 414 app_sorting()->GetAppLaunchOrdinal(extension1()->id()); |
| 446 syncer::StringOrdinal extension2_app_launch = | 415 syncer::StringOrdinal extension2_app_launch = |
| 447 app_sorting->GetAppLaunchOrdinal(extension2()->id()); | 416 app_sorting()->GetAppLaunchOrdinal(extension2()->id()); |
| 448 syncer::StringOrdinal extension3_app_launch = | 417 syncer::StringOrdinal extension3_app_launch = |
| 449 app_sorting->GetAppLaunchOrdinal(extension3()->id()); | 418 app_sorting()->GetAppLaunchOrdinal(extension3()->id()); |
| 450 | 419 |
| 451 // The overlapping extensions should have be adjusted so that they are | 420 // The overlapping extensions should have be adjusted so that they are |
| 452 // sorted by their id, but they both should be after ext1, which wasn't | 421 // sorted by their id, but they both should be after ext1, which wasn't |
| 453 // overlapping. | 422 // overlapping. |
| 454 EXPECT_TRUE(extension1_app_launch.LessThan(extension2_app_launch)); | 423 EXPECT_TRUE(extension1_app_launch.LessThan(extension2_app_launch)); |
| 455 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); | 424 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); |
| 456 EXPECT_EQ(extension2()->id() < extension3()->id(), | 425 EXPECT_EQ(extension2()->id() < extension3()->id(), |
| 457 extension2_app_launch.LessThan(extension3_app_launch)); | 426 extension2_app_launch.LessThan(extension3_app_launch)); |
| 458 | 427 |
| 459 // The page ordinal should be unchanged. | 428 // The page ordinal should be unchanged. |
| 460 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( | 429 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals( |
| 461 first_ordinal_)); | 430 first_ordinal_)); |
| 462 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( | 431 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals( |
| 463 first_ordinal_)); | 432 first_ordinal_)); |
| 464 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( | 433 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals( |
| 465 first_ordinal_)); | 434 first_ordinal_)); |
| 466 } | 435 } |
| 467 | 436 |
| 468 private: | 437 private: |
| 469 syncer::StringOrdinal first_ordinal_; | 438 syncer::StringOrdinal first_ordinal_; |
| 470 }; | 439 }; |
| 471 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd, | 440 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd, |
| 472 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd) {} | 441 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd) {} |
| 473 | 442 |
| 474 class ChromeAppSortingFixNTPCollisionsTwoCollisions | 443 class ChromeAppSortingFixNTPCollisionsTwoCollisions |
| 475 : public PrefsPrepopulatedTestBase { | 444 : public PrefsPrepopulatedTestBase { |
| 476 public: | 445 public: |
| 477 ChromeAppSortingFixNTPCollisionsTwoCollisions() {} | 446 ChromeAppSortingFixNTPCollisionsTwoCollisions() {} |
| 478 ~ChromeAppSortingFixNTPCollisionsTwoCollisions() override {} | 447 ~ChromeAppSortingFixNTPCollisionsTwoCollisions() override {} |
| 479 | 448 |
| 480 void Initialize() override { | 449 void Initialize() override { |
| 481 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); | 450 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 482 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); | 451 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); |
| 483 | 452 |
| 484 AppSorting* app_sorting = prefs()->app_sorting(); | 453 // Have two extensions colliding, followed by two more colliding extensions. |
| 454 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); |
| 455 app_sorting()->SetPageOrdinal(extension1()->id(), first_ordinal_); |
| 485 | 456 |
| 486 // Have two extensions colliding, followed by two more colliding extensions. | 457 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_); |
| 487 app_sorting->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); | 458 app_sorting()->SetPageOrdinal(extension2()->id(), first_ordinal_); |
| 488 app_sorting->SetPageOrdinal(extension1()->id(), first_ordinal_); | |
| 489 | 459 |
| 490 app_sorting->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_); | 460 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); |
| 491 app_sorting->SetPageOrdinal(extension2()->id(), first_ordinal_); | 461 app_sorting()->SetPageOrdinal(extension3()->id(), first_ordinal_); |
| 492 | 462 |
| 493 app_sorting->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); | 463 app_sorting()->SetAppLaunchOrdinal(extension4()->id(), second_ordinal); |
| 494 app_sorting->SetPageOrdinal(extension3()->id(), first_ordinal_); | 464 app_sorting()->SetPageOrdinal(extension4()->id(), first_ordinal_); |
| 495 | 465 |
| 496 app_sorting->SetAppLaunchOrdinal(extension4()->id(), second_ordinal); | 466 app_sorting()->FixNTPOrdinalCollisions(); |
| 497 app_sorting->SetPageOrdinal(extension4()->id(), first_ordinal_); | |
| 498 | |
| 499 app_sorting->FixNTPOrdinalCollisions(); | |
| 500 } | 467 } |
| 501 void Verify() override { | 468 void Verify() override { |
| 502 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 503 syncer::StringOrdinal extension1_app_launch = | 469 syncer::StringOrdinal extension1_app_launch = |
| 504 app_sorting->GetAppLaunchOrdinal(extension1()->id()); | 470 app_sorting()->GetAppLaunchOrdinal(extension1()->id()); |
| 505 syncer::StringOrdinal extension2_app_launch = | 471 syncer::StringOrdinal extension2_app_launch = |
| 506 app_sorting->GetAppLaunchOrdinal(extension2()->id()); | 472 app_sorting()->GetAppLaunchOrdinal(extension2()->id()); |
| 507 syncer::StringOrdinal extension3_app_launch = | 473 syncer::StringOrdinal extension3_app_launch = |
| 508 app_sorting->GetAppLaunchOrdinal(extension3()->id()); | 474 app_sorting()->GetAppLaunchOrdinal(extension3()->id()); |
| 509 syncer::StringOrdinal extension4_app_launch = | 475 syncer::StringOrdinal extension4_app_launch = |
| 510 app_sorting->GetAppLaunchOrdinal(extension4()->id()); | 476 app_sorting()->GetAppLaunchOrdinal(extension4()->id()); |
| 511 | 477 |
| 512 // The overlapping extensions should have be adjusted so that they are | 478 // The overlapping extensions should have be adjusted so that they are |
| 513 // sorted by their id, with |ext1| and |ext2| appearing before |ext3| and | 479 // sorted by their id, with |ext1| and |ext2| appearing before |ext3| and |
| 514 // |ext4|. | 480 // |ext4|. |
| 515 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); | 481 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); |
| 516 EXPECT_TRUE(extension1_app_launch.LessThan(extension4_app_launch)); | 482 EXPECT_TRUE(extension1_app_launch.LessThan(extension4_app_launch)); |
| 517 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch)); | 483 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch)); |
| 518 EXPECT_TRUE(extension2_app_launch.LessThan(extension4_app_launch)); | 484 EXPECT_TRUE(extension2_app_launch.LessThan(extension4_app_launch)); |
| 519 | 485 |
| 520 EXPECT_EQ(extension1()->id() < extension2()->id(), | 486 EXPECT_EQ(extension1()->id() < extension2()->id(), |
| 521 extension1_app_launch.LessThan(extension2_app_launch)); | 487 extension1_app_launch.LessThan(extension2_app_launch)); |
| 522 EXPECT_EQ(extension3()->id() < extension4()->id(), | 488 EXPECT_EQ(extension3()->id() < extension4()->id(), |
| 523 extension3_app_launch.LessThan(extension4_app_launch)); | 489 extension3_app_launch.LessThan(extension4_app_launch)); |
| 524 | 490 |
| 525 // The page ordinal should be unchanged. | 491 // The page ordinal should be unchanged. |
| 526 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( | 492 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals( |
| 527 first_ordinal_)); | 493 first_ordinal_)); |
| 528 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( | 494 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals( |
| 529 first_ordinal_)); | 495 first_ordinal_)); |
| 530 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( | 496 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals( |
| 531 first_ordinal_)); | 497 first_ordinal_)); |
| 532 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension4()->id()).Equals( | 498 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension4()->id()).Equals( |
| 533 first_ordinal_)); | 499 first_ordinal_)); |
| 534 } | 500 } |
| 535 | 501 |
| 536 private: | 502 private: |
| 537 syncer::StringOrdinal first_ordinal_; | 503 syncer::StringOrdinal first_ordinal_; |
| 538 }; | 504 }; |
| 539 TEST_F(ChromeAppSortingFixNTPCollisionsTwoCollisions, | 505 TEST_F(ChromeAppSortingFixNTPCollisionsTwoCollisions, |
| 540 ChromeAppSortingFixNTPCollisionsTwoCollisions) {} | 506 ChromeAppSortingFixNTPCollisionsTwoCollisions) {} |
| 541 | 507 |
| 542 class ChromeAppSortingEnsureValidOrdinals | 508 class ChromeAppSortingEnsureValidOrdinals |
| 543 : public PrefsPrepopulatedTestBase { | 509 : public PrefsPrepopulatedTestBase { |
| 544 public : | 510 public : |
| 545 ChromeAppSortingEnsureValidOrdinals() {} | 511 ChromeAppSortingEnsureValidOrdinals() {} |
| 546 ~ChromeAppSortingEnsureValidOrdinals() override {} | 512 ~ChromeAppSortingEnsureValidOrdinals() override {} |
| 547 | 513 |
| 548 void Initialize() override {} | 514 void Initialize() override {} |
| 549 void Verify() override { | 515 void Verify() override { |
| 550 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 551 | |
| 552 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes | 516 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes |
| 553 // them. | 517 // them. |
| 554 app_sorting->SetAppLaunchOrdinal(extension1()->id(), | 518 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), |
| 555 syncer::StringOrdinal()); | 519 syncer::StringOrdinal()); |
| 556 app_sorting->SetPageOrdinal(extension1()->id(), syncer::StringOrdinal()); | 520 app_sorting()->SetPageOrdinal(extension1()->id(), syncer::StringOrdinal()); |
| 557 | 521 |
| 558 app_sorting->EnsureValidOrdinals(extension1()->id(), | 522 app_sorting()->EnsureValidOrdinals(extension1()->id(), |
| 559 syncer::StringOrdinal()); | 523 syncer::StringOrdinal()); |
| 560 | 524 |
| 561 EXPECT_TRUE(app_sorting->GetAppLaunchOrdinal(extension1()->id()).IsValid()); | 525 EXPECT_TRUE( |
| 562 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).IsValid()); | 526 app_sorting()->GetAppLaunchOrdinal(extension1()->id()).IsValid()); |
| 527 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).IsValid()); |
| 563 } | 528 } |
| 564 }; | 529 }; |
| 565 TEST_F(ChromeAppSortingEnsureValidOrdinals, | 530 TEST_F(ChromeAppSortingEnsureValidOrdinals, |
| 566 ChromeAppSortingEnsureValidOrdinals) {} | 531 ChromeAppSortingEnsureValidOrdinals) {} |
| 567 | 532 |
| 568 class ChromeAppSortingPageOrdinalMapping : public PrefsPrepopulatedTestBase { | 533 class ChromeAppSortingPageOrdinalMapping : public PrefsPrepopulatedTestBase { |
| 569 public: | 534 public: |
| 570 ChromeAppSortingPageOrdinalMapping() {} | 535 ChromeAppSortingPageOrdinalMapping() {} |
| 571 ~ChromeAppSortingPageOrdinalMapping() override {} | 536 ~ChromeAppSortingPageOrdinalMapping() override {} |
| 572 | 537 |
| 573 void Initialize() override {} | 538 void Initialize() override {} |
| 574 void Verify() override { | 539 void Verify() override { |
| 575 std::string ext_1 = "ext_1"; | 540 std::string ext_1 = "ext_1"; |
| 576 std::string ext_2 = "ext_2"; | 541 std::string ext_2 = "ext_2"; |
| 577 | 542 |
| 578 ChromeAppSorting* app_sorting = | |
| 579 static_cast<ChromeAppSorting*>(prefs()->app_sorting()); | |
| 580 syncer::StringOrdinal first_ordinal = | 543 syncer::StringOrdinal first_ordinal = |
| 581 syncer::StringOrdinal::CreateInitialOrdinal(); | 544 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 582 | 545 |
| 583 // Ensure attempting to removing a mapping with an invalid page doesn't | 546 // Ensure attempting to removing a mapping with an invalid page doesn't |
| 584 // modify the map. | 547 // modify the map. |
| 585 EXPECT_TRUE(app_sorting->ntp_ordinal_map_.empty()); | 548 EXPECT_TRUE(app_sorting()->ntp_ordinal_map_.empty()); |
| 586 app_sorting->RemoveOrdinalMapping( | 549 app_sorting()->RemoveOrdinalMapping( |
| 587 ext_1, first_ordinal, first_ordinal); | 550 ext_1, first_ordinal, first_ordinal); |
| 588 EXPECT_TRUE(app_sorting->ntp_ordinal_map_.empty()); | 551 EXPECT_TRUE(app_sorting()->ntp_ordinal_map_.empty()); |
| 589 | 552 |
| 590 // Add new mappings. | 553 // Add new mappings. |
| 591 app_sorting->AddOrdinalMapping(ext_1, first_ordinal, first_ordinal); | 554 app_sorting()->AddOrdinalMapping(ext_1, first_ordinal, first_ordinal); |
| 592 app_sorting->AddOrdinalMapping(ext_2, first_ordinal, first_ordinal); | 555 app_sorting()->AddOrdinalMapping(ext_2, first_ordinal, first_ordinal); |
| 593 | 556 |
| 594 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_.size()); | 557 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_.size()); |
| 595 EXPECT_EQ(2U, app_sorting->ntp_ordinal_map_[first_ordinal].size()); | 558 EXPECT_EQ(2U, app_sorting()->ntp_ordinal_map_[first_ordinal].size()); |
| 596 | 559 |
| 597 ChromeAppSorting::AppLaunchOrdinalMap::iterator it = | 560 ChromeAppSorting::AppLaunchOrdinalMap::iterator it = |
| 598 app_sorting->ntp_ordinal_map_[first_ordinal].find(first_ordinal); | 561 app_sorting()->ntp_ordinal_map_[first_ordinal].find(first_ordinal); |
| 599 EXPECT_EQ(ext_1, it->second); | 562 EXPECT_EQ(ext_1, it->second); |
| 600 ++it; | 563 ++it; |
| 601 EXPECT_EQ(ext_2, it->second); | 564 EXPECT_EQ(ext_2, it->second); |
| 602 | 565 |
| 603 app_sorting->RemoveOrdinalMapping(ext_1, first_ordinal, first_ordinal); | 566 app_sorting()->RemoveOrdinalMapping(ext_1, first_ordinal, first_ordinal); |
| 604 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_.size()); | 567 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_.size()); |
| 605 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_[first_ordinal].size()); | 568 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_[first_ordinal].size()); |
| 606 | 569 |
| 607 it = app_sorting->ntp_ordinal_map_[first_ordinal].find(first_ordinal); | 570 it = app_sorting()->ntp_ordinal_map_[first_ordinal].find(first_ordinal); |
| 608 EXPECT_EQ(ext_2, it->second); | 571 EXPECT_EQ(ext_2, it->second); |
| 609 | 572 |
| 610 // Ensure that attempting to remove an extension with a valid page and app | 573 // Ensure that attempting to remove an extension with a valid page and app |
| 611 // launch ordinals, but a unused id has no effect. | 574 // launch ordinals, but a unused id has no effect. |
| 612 app_sorting->RemoveOrdinalMapping( | 575 app_sorting()->RemoveOrdinalMapping( |
| 613 "invalid_ext", first_ordinal, first_ordinal); | 576 "invalid_ext", first_ordinal, first_ordinal); |
| 614 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_.size()); | 577 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_.size()); |
| 615 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_[first_ordinal].size()); | 578 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_[first_ordinal].size()); |
| 616 | 579 |
| 617 it = app_sorting->ntp_ordinal_map_[first_ordinal].find(first_ordinal); | 580 it = app_sorting()->ntp_ordinal_map_[first_ordinal].find(first_ordinal); |
| 618 EXPECT_EQ(ext_2, it->second); | 581 EXPECT_EQ(ext_2, it->second); |
| 619 } | 582 } |
| 620 }; | 583 }; |
| 621 TEST_F(ChromeAppSortingPageOrdinalMapping, | 584 TEST_F(ChromeAppSortingPageOrdinalMapping, |
| 622 ChromeAppSortingPageOrdinalMapping) {} | 585 ChromeAppSortingPageOrdinalMapping) {} |
| 623 | 586 |
| 624 class ChromeAppSortingPreinstalledAppsBase : public PrefsPrepopulatedTestBase { | 587 class ChromeAppSortingPreinstalledAppsBase : public PrefsPrepopulatedTestBase { |
| 625 public: | 588 public: |
| 626 ChromeAppSortingPreinstalledAppsBase() { | 589 ChromeAppSortingPreinstalledAppsBase() { |
| 627 base::DictionaryValue simple_dict; | 590 base::DictionaryValue simple_dict; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 | 627 |
| 665 class ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage | 628 class ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage |
| 666 : public ChromeAppSortingPreinstalledAppsBase { | 629 : public ChromeAppSortingPreinstalledAppsBase { |
| 667 public: | 630 public: |
| 668 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} | 631 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} |
| 669 ~ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() override {} | 632 ~ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() override {} |
| 670 | 633 |
| 671 void Initialize() override {} | 634 void Initialize() override {} |
| 672 void Verify() override { | 635 void Verify() override { |
| 673 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); | 636 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); |
| 674 ChromeAppSorting* app_sorting = | |
| 675 static_cast<ChromeAppSorting*>(prefs()->app_sorting()); | |
| 676 | 637 |
| 677 syncer::StringOrdinal min = | 638 syncer::StringOrdinal min = |
| 678 app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 639 app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 679 page, | 640 page, |
| 680 ChromeAppSorting::MIN_ORDINAL); | 641 ChromeAppSorting::MIN_ORDINAL); |
| 681 syncer::StringOrdinal max = | 642 syncer::StringOrdinal max = |
| 682 app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 643 app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 683 page, | 644 page, |
| 684 ChromeAppSorting::MAX_ORDINAL); | 645 ChromeAppSorting::MAX_ORDINAL); |
| 685 EXPECT_TRUE(min.IsValid()); | 646 EXPECT_TRUE(min.IsValid()); |
| 686 EXPECT_TRUE(max.IsValid()); | 647 EXPECT_TRUE(max.IsValid()); |
| 687 EXPECT_TRUE(min.LessThan(max)); | 648 EXPECT_TRUE(min.LessThan(max)); |
| 688 | 649 |
| 689 // Ensure that the min and max values aren't set for empty pages. | 650 // Ensure that the min and max values aren't set for empty pages. |
| 690 min = syncer::StringOrdinal(); | 651 min = syncer::StringOrdinal(); |
| 691 max = syncer::StringOrdinal(); | 652 max = syncer::StringOrdinal(); |
| 692 syncer::StringOrdinal empty_page = page.CreateAfter(); | 653 syncer::StringOrdinal empty_page = page.CreateAfter(); |
| 693 EXPECT_FALSE(min.IsValid()); | 654 EXPECT_FALSE(min.IsValid()); |
| 694 EXPECT_FALSE(max.IsValid()); | 655 EXPECT_FALSE(max.IsValid()); |
| 695 min = app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 656 min = app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 696 empty_page, | 657 empty_page, |
| 697 ChromeAppSorting::MIN_ORDINAL); | 658 ChromeAppSorting::MIN_ORDINAL); |
| 698 max = app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( | 659 max = app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage( |
| 699 empty_page, | 660 empty_page, |
| 700 ChromeAppSorting::MAX_ORDINAL); | 661 ChromeAppSorting::MAX_ORDINAL); |
| 701 EXPECT_FALSE(min.IsValid()); | 662 EXPECT_FALSE(min.IsValid()); |
| 702 EXPECT_FALSE(max.IsValid()); | 663 EXPECT_FALSE(max.IsValid()); |
| 703 } | 664 } |
| 704 }; | 665 }; |
| 705 TEST_F(ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage, | 666 TEST_F(ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage, |
| 706 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} | 667 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} |
| 707 | 668 |
| 708 // Make sure that empty pages aren't removed from the integer to ordinal | 669 // Make sure that empty pages aren't removed from the integer to ordinal |
| 709 // mapping. See http://crbug.com/109802 for details. | 670 // mapping. See http://crbug.com/109802 for details. |
| 710 class ChromeAppSortingKeepEmptyStringOrdinalPages | 671 class ChromeAppSortingKeepEmptyStringOrdinalPages |
| 711 : public ChromeAppSortingPreinstalledAppsBase { | 672 : public ChromeAppSortingPreinstalledAppsBase { |
| 712 public: | 673 public: |
| 713 ChromeAppSortingKeepEmptyStringOrdinalPages() {} | 674 ChromeAppSortingKeepEmptyStringOrdinalPages() {} |
| 714 ~ChromeAppSortingKeepEmptyStringOrdinalPages() override {} | 675 ~ChromeAppSortingKeepEmptyStringOrdinalPages() override {} |
| 715 | 676 |
| 716 void Initialize() override { | 677 void Initialize() override { |
| 717 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 718 | |
| 719 syncer::StringOrdinal first_page = | 678 syncer::StringOrdinal first_page = |
| 720 syncer::StringOrdinal::CreateInitialOrdinal(); | 679 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 721 app_sorting->SetPageOrdinal(app1_->id(), first_page); | 680 app_sorting()->SetPageOrdinal(app1_->id(), first_page); |
| 722 EXPECT_EQ(0, app_sorting->PageStringOrdinalAsInteger(first_page)); | 681 EXPECT_EQ(0, app_sorting()->PageStringOrdinalAsInteger(first_page)); |
| 723 | 682 |
| 724 last_page_ = first_page.CreateAfter(); | 683 last_page_ = first_page.CreateAfter(); |
| 725 app_sorting->SetPageOrdinal(app2_->id(), last_page_); | 684 app_sorting()->SetPageOrdinal(app2_->id(), last_page_); |
| 726 EXPECT_EQ(1, app_sorting->PageStringOrdinalAsInteger(last_page_)); | 685 EXPECT_EQ(1, app_sorting()->PageStringOrdinalAsInteger(last_page_)); |
| 727 | 686 |
| 728 // Move the second app to create an empty page. | 687 // Move the second app to create an empty page. |
| 729 app_sorting->SetPageOrdinal(app2_->id(), first_page); | 688 app_sorting()->SetPageOrdinal(app2_->id(), first_page); |
| 730 EXPECT_EQ(0, app_sorting->PageStringOrdinalAsInteger(first_page)); | 689 EXPECT_EQ(0, app_sorting()->PageStringOrdinalAsInteger(first_page)); |
| 731 } | 690 } |
| 732 void Verify() override { | 691 void Verify() override { |
| 733 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 734 | |
| 735 // Move the second app to a new empty page at the end, skipping over | 692 // Move the second app to a new empty page at the end, skipping over |
| 736 // the current empty page. | 693 // the current empty page. |
| 737 last_page_ = last_page_.CreateAfter(); | 694 last_page_ = last_page_.CreateAfter(); |
| 738 app_sorting->SetPageOrdinal(app2_->id(), last_page_); | 695 app_sorting()->SetPageOrdinal(app2_->id(), last_page_); |
| 739 EXPECT_EQ(2, app_sorting->PageStringOrdinalAsInteger(last_page_)); | 696 EXPECT_EQ(2, app_sorting()->PageStringOrdinalAsInteger(last_page_)); |
| 740 EXPECT_TRUE(last_page_.Equals(app_sorting->PageIntegerAsStringOrdinal(2))); | 697 EXPECT_TRUE( |
| 698 last_page_.Equals(app_sorting()->PageIntegerAsStringOrdinal(2))); |
| 741 } | 699 } |
| 742 | 700 |
| 743 private: | 701 private: |
| 744 syncer::StringOrdinal last_page_; | 702 syncer::StringOrdinal last_page_; |
| 745 }; | 703 }; |
| 746 TEST_F(ChromeAppSortingKeepEmptyStringOrdinalPages, | 704 TEST_F(ChromeAppSortingKeepEmptyStringOrdinalPages, |
| 747 ChromeAppSortingKeepEmptyStringOrdinalPages) {} | 705 ChromeAppSortingKeepEmptyStringOrdinalPages) {} |
| 748 | 706 |
| 749 class ChromeAppSortingMakesFillerOrdinals | 707 class ChromeAppSortingMakesFillerOrdinals |
| 750 : public ChromeAppSortingPreinstalledAppsBase { | 708 : public ChromeAppSortingPreinstalledAppsBase { |
| 751 public: | 709 public: |
| 752 ChromeAppSortingMakesFillerOrdinals() {} | 710 ChromeAppSortingMakesFillerOrdinals() {} |
| 753 ~ChromeAppSortingMakesFillerOrdinals() override {} | 711 ~ChromeAppSortingMakesFillerOrdinals() override {} |
| 754 | 712 |
| 755 void Initialize() override { | 713 void Initialize() override { |
| 756 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 757 | |
| 758 syncer::StringOrdinal first_page = | 714 syncer::StringOrdinal first_page = |
| 759 syncer::StringOrdinal::CreateInitialOrdinal(); | 715 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 760 app_sorting->SetPageOrdinal(app1_->id(), first_page); | 716 app_sorting()->SetPageOrdinal(app1_->id(), first_page); |
| 761 EXPECT_EQ(0, app_sorting->PageStringOrdinalAsInteger(first_page)); | 717 EXPECT_EQ(0, app_sorting()->PageStringOrdinalAsInteger(first_page)); |
| 762 } | 718 } |
| 763 void Verify() override { | 719 void Verify() override { |
| 764 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 765 | |
| 766 // Because the UI can add an unlimited number of empty pages without an app | 720 // Because the UI can add an unlimited number of empty pages without an app |
| 767 // on them, this test simulates dropping of an app on the 1st and 4th empty | 721 // on them, this test simulates dropping of an app on the 1st and 4th empty |
| 768 // pages (3rd and 6th pages by index) to ensure we don't crash and that | 722 // pages (3rd and 6th pages by index) to ensure we don't crash and that |
| 769 // filler ordinals are created as needed. See: http://crbug.com/122214 | 723 // filler ordinals are created as needed. See: http://crbug.com/122214 |
| 770 syncer::StringOrdinal page_three = | 724 syncer::StringOrdinal page_three = |
| 771 app_sorting->PageIntegerAsStringOrdinal(2); | 725 app_sorting()->PageIntegerAsStringOrdinal(2); |
| 772 app_sorting->SetPageOrdinal(app1_->id(), page_three); | 726 app_sorting()->SetPageOrdinal(app1_->id(), page_three); |
| 773 EXPECT_EQ(2, app_sorting->PageStringOrdinalAsInteger(page_three)); | 727 EXPECT_EQ(2, app_sorting()->PageStringOrdinalAsInteger(page_three)); |
| 774 | 728 |
| 775 syncer::StringOrdinal page_six = app_sorting->PageIntegerAsStringOrdinal(5); | 729 syncer::StringOrdinal page_six = |
| 776 app_sorting->SetPageOrdinal(app1_->id(), page_six); | 730 app_sorting()->PageIntegerAsStringOrdinal(5); |
| 777 EXPECT_EQ(5, app_sorting->PageStringOrdinalAsInteger(page_six)); | 731 app_sorting()->SetPageOrdinal(app1_->id(), page_six); |
| 732 EXPECT_EQ(5, app_sorting()->PageStringOrdinalAsInteger(page_six)); |
| 778 } | 733 } |
| 779 }; | 734 }; |
| 780 TEST_F(ChromeAppSortingMakesFillerOrdinals, | 735 TEST_F(ChromeAppSortingMakesFillerOrdinals, |
| 781 ChromeAppSortingMakesFillerOrdinals) {} | 736 ChromeAppSortingMakesFillerOrdinals) {} |
| 782 | 737 |
| 783 class ChromeAppSortingDefaultOrdinalsBase : public ChromeAppSortingTest { | 738 class ChromeAppSortingDefaultOrdinalsBase : public ExtensionPrefsTest { |
| 784 public: | 739 public: |
| 785 ChromeAppSortingDefaultOrdinalsBase() {} | 740 ChromeAppSortingDefaultOrdinalsBase() {} |
| 786 ~ChromeAppSortingDefaultOrdinalsBase() override {} | 741 ~ChromeAppSortingDefaultOrdinalsBase() override {} |
| 787 | 742 |
| 788 void Initialize() override { | 743 void Initialize() override { |
| 789 app_ = CreateApp("app"); | 744 app_ = CreateApp("app"); |
| 790 | 745 |
| 791 InitDefaultOrdinals(); | 746 InitDefaultOrdinals(); |
| 792 ChromeAppSorting* app_sorting = | |
| 793 static_cast<ChromeAppSorting*>(prefs()->app_sorting()); | |
| 794 ChromeAppSorting::AppOrdinalsMap& sorting_defaults = | 747 ChromeAppSorting::AppOrdinalsMap& sorting_defaults = |
| 795 app_sorting->default_ordinals_; | 748 app_sorting()->default_ordinals_; |
| 796 sorting_defaults[app_->id()].page_ordinal = default_page_ordinal_; | 749 sorting_defaults[app_->id()].page_ordinal = default_page_ordinal_; |
| 797 sorting_defaults[app_->id()].app_launch_ordinal = | 750 sorting_defaults[app_->id()].app_launch_ordinal = |
| 798 default_app_launch_ordinal_; | 751 default_app_launch_ordinal_; |
| 799 | 752 |
| 800 SetupUserOrdinals(); | 753 SetupUserOrdinals(); |
| 801 InstallApps(); | 754 InstallApps(); |
| 802 } | 755 } |
| 803 | 756 |
| 804 protected: | 757 protected: |
| 805 scoped_refptr<Extension> CreateApp(const std::string& name) { | 758 scoped_refptr<Extension> CreateApp(const std::string& name) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 }; | 793 }; |
| 841 | 794 |
| 842 // Tests that the app gets its default ordinals. | 795 // Tests that the app gets its default ordinals. |
| 843 class ChromeAppSortingDefaultOrdinals | 796 class ChromeAppSortingDefaultOrdinals |
| 844 : public ChromeAppSortingDefaultOrdinalsBase { | 797 : public ChromeAppSortingDefaultOrdinalsBase { |
| 845 public: | 798 public: |
| 846 ChromeAppSortingDefaultOrdinals() {} | 799 ChromeAppSortingDefaultOrdinals() {} |
| 847 ~ChromeAppSortingDefaultOrdinals() override {} | 800 ~ChromeAppSortingDefaultOrdinals() override {} |
| 848 | 801 |
| 849 void Verify() override { | 802 void Verify() override { |
| 850 AppSorting* app_sorting = prefs()->app_sorting(); | 803 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals( |
| 851 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals( | |
| 852 default_page_ordinal_)); | 804 default_page_ordinal_)); |
| 853 EXPECT_TRUE(app_sorting->GetAppLaunchOrdinal(app_->id()).Equals( | 805 EXPECT_TRUE(app_sorting()->GetAppLaunchOrdinal(app_->id()).Equals( |
| 854 default_app_launch_ordinal_)); | 806 default_app_launch_ordinal_)); |
| 855 } | 807 } |
| 856 }; | 808 }; |
| 857 TEST_F(ChromeAppSortingDefaultOrdinals, | 809 TEST_F(ChromeAppSortingDefaultOrdinals, |
| 858 ChromeAppSortingDefaultOrdinals) {} | 810 ChromeAppSortingDefaultOrdinals) {} |
| 859 | 811 |
| 860 // Tests that the default page ordinal is overridden by install page ordinal. | 812 // Tests that the default page ordinal is overridden by install page ordinal. |
| 861 class ChromeAppSortingDefaultOrdinalOverriddenByInstallPage | 813 class ChromeAppSortingDefaultOrdinalOverriddenByInstallPage |
| 862 : public ChromeAppSortingDefaultOrdinalsBase { | 814 : public ChromeAppSortingDefaultOrdinalsBase { |
| 863 public: | 815 public: |
| 864 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() {} | 816 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() {} |
| 865 ~ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() override {} | 817 ~ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() override {} |
| 866 | 818 |
| 867 void Verify() override { | 819 void Verify() override { |
| 868 AppSorting* app_sorting = prefs()->app_sorting(); | 820 EXPECT_FALSE(app_sorting()->GetPageOrdinal(app_->id()).Equals( |
| 869 | |
| 870 EXPECT_FALSE(app_sorting->GetPageOrdinal(app_->id()).Equals( | |
| 871 default_page_ordinal_)); | 821 default_page_ordinal_)); |
| 872 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals(install_page_)); | 822 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals( |
| 823 install_page_)); |
| 873 } | 824 } |
| 874 | 825 |
| 875 protected: | 826 protected: |
| 876 void InstallApps() override { | 827 void InstallApps() override { |
| 877 install_page_ = default_page_ordinal_.CreateAfter(); | 828 install_page_ = default_page_ordinal_.CreateAfter(); |
| 878 prefs()->OnExtensionInstalled(app_.get(), | 829 prefs()->OnExtensionInstalled(app_.get(), |
| 879 Extension::ENABLED, | 830 Extension::ENABLED, |
| 880 install_page_, | 831 install_page_, |
| 881 std::string()); | 832 std::string()); |
| 882 } | 833 } |
| 883 | 834 |
| 884 private: | 835 private: |
| 885 syncer::StringOrdinal install_page_; | 836 syncer::StringOrdinal install_page_; |
| 886 }; | 837 }; |
| 887 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByInstallPage, | 838 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByInstallPage, |
| 888 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage) {} | 839 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage) {} |
| 889 | 840 |
| 890 // Tests that the default ordinals are overridden by user values. | 841 // Tests that the default ordinals are overridden by user values. |
| 891 class ChromeAppSortingDefaultOrdinalOverriddenByUserValue | 842 class ChromeAppSortingDefaultOrdinalOverriddenByUserValue |
| 892 : public ChromeAppSortingDefaultOrdinalsBase { | 843 : public ChromeAppSortingDefaultOrdinalsBase { |
| 893 public: | 844 public: |
| 894 ChromeAppSortingDefaultOrdinalOverriddenByUserValue() {} | 845 ChromeAppSortingDefaultOrdinalOverriddenByUserValue() {} |
| 895 ~ChromeAppSortingDefaultOrdinalOverriddenByUserValue() override {} | 846 ~ChromeAppSortingDefaultOrdinalOverriddenByUserValue() override {} |
| 896 | 847 |
| 897 void Verify() override { | 848 void Verify() override { |
| 898 AppSorting* app_sorting = prefs()->app_sorting(); | 849 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals( |
| 899 | |
| 900 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals( | |
| 901 user_page_ordinal_)); | 850 user_page_ordinal_)); |
| 902 EXPECT_TRUE(app_sorting->GetAppLaunchOrdinal(app_->id()).Equals( | 851 EXPECT_TRUE(app_sorting()->GetAppLaunchOrdinal(app_->id()).Equals( |
| 903 user_app_launch_ordinal_)); | 852 user_app_launch_ordinal_)); |
| 904 } | 853 } |
| 905 | 854 |
| 906 protected: | 855 protected: |
| 907 void SetupUserOrdinals() override { | 856 void SetupUserOrdinals() override { |
| 908 user_page_ordinal_ = default_page_ordinal_.CreateAfter(); | 857 user_page_ordinal_ = default_page_ordinal_.CreateAfter(); |
| 909 user_app_launch_ordinal_ = default_app_launch_ordinal_.CreateBefore(); | 858 user_app_launch_ordinal_ = default_app_launch_ordinal_.CreateBefore(); |
| 910 | 859 |
| 911 AppSorting* app_sorting = prefs()->app_sorting(); | 860 app_sorting()->SetPageOrdinal(app_->id(), user_page_ordinal_); |
| 912 app_sorting->SetPageOrdinal(app_->id(), user_page_ordinal_); | 861 app_sorting()->SetAppLaunchOrdinal(app_->id(), user_app_launch_ordinal_); |
| 913 app_sorting->SetAppLaunchOrdinal(app_->id(), user_app_launch_ordinal_); | |
| 914 } | 862 } |
| 915 | 863 |
| 916 private: | 864 private: |
| 917 syncer::StringOrdinal user_page_ordinal_; | 865 syncer::StringOrdinal user_page_ordinal_; |
| 918 syncer::StringOrdinal user_app_launch_ordinal_; | 866 syncer::StringOrdinal user_app_launch_ordinal_; |
| 919 }; | 867 }; |
| 920 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByUserValue, | 868 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByUserValue, |
| 921 ChromeAppSortingDefaultOrdinalOverriddenByUserValue) {} | 869 ChromeAppSortingDefaultOrdinalOverriddenByUserValue) {} |
| 922 | 870 |
| 923 // Tests that the default app launch ordinal is changed to avoid collision. | 871 // Tests that the default app launch ordinal is changed to avoid collision. |
| 924 class ChromeAppSortingDefaultOrdinalNoCollision | 872 class ChromeAppSortingDefaultOrdinalNoCollision |
| 925 : public ChromeAppSortingDefaultOrdinalsBase { | 873 : public ChromeAppSortingDefaultOrdinalsBase { |
| 926 public: | 874 public: |
| 927 ChromeAppSortingDefaultOrdinalNoCollision() {} | 875 ChromeAppSortingDefaultOrdinalNoCollision() {} |
| 928 ~ChromeAppSortingDefaultOrdinalNoCollision() override {} | 876 ~ChromeAppSortingDefaultOrdinalNoCollision() override {} |
| 929 | 877 |
| 930 void Verify() override { | 878 void Verify() override { |
| 931 AppSorting* app_sorting = prefs()->app_sorting(); | |
| 932 | |
| 933 // Use the default page. | 879 // Use the default page. |
| 934 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals( | 880 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals( |
| 935 default_page_ordinal_)); | 881 default_page_ordinal_)); |
| 936 // Not using the default app launch ordinal because of the collision. | 882 // Not using the default app launch ordinal because of the collision. |
| 937 EXPECT_FALSE(app_sorting->GetAppLaunchOrdinal(app_->id()).Equals( | 883 EXPECT_FALSE(app_sorting()->GetAppLaunchOrdinal(app_->id()).Equals( |
| 938 default_app_launch_ordinal_)); | 884 default_app_launch_ordinal_)); |
| 939 } | 885 } |
| 940 | 886 |
| 941 protected: | 887 protected: |
| 942 void SetupUserOrdinals() override { | 888 void SetupUserOrdinals() override { |
| 943 other_app_ = prefs_.AddApp("other_app"); | 889 other_app_ = prefs_.AddApp("other_app"); |
| 944 // Creates a collision. | 890 // Creates a collision. |
| 945 AppSorting* app_sorting = prefs()->app_sorting(); | 891 app_sorting()->SetPageOrdinal(other_app_->id(), default_page_ordinal_); |
| 946 app_sorting->SetPageOrdinal(other_app_->id(), default_page_ordinal_); | 892 app_sorting()->SetAppLaunchOrdinal(other_app_->id(), |
| 947 app_sorting->SetAppLaunchOrdinal(other_app_->id(), | 893 default_app_launch_ordinal_); |
| 948 default_app_launch_ordinal_); | |
| 949 | 894 |
| 950 yet_another_app_ = prefs_.AddApp("yet_aother_app"); | 895 yet_another_app_ = prefs_.AddApp("yet_aother_app"); |
| 951 app_sorting->SetPageOrdinal(yet_another_app_->id(), default_page_ordinal_); | 896 app_sorting()->SetPageOrdinal(yet_another_app_->id(), |
| 952 app_sorting->SetAppLaunchOrdinal(yet_another_app_->id(), | 897 default_page_ordinal_); |
| 953 default_app_launch_ordinal_); | 898 app_sorting()->SetAppLaunchOrdinal(yet_another_app_->id(), |
| 899 default_app_launch_ordinal_); |
| 954 } | 900 } |
| 955 | 901 |
| 956 private: | 902 private: |
| 957 scoped_refptr<Extension> other_app_; | 903 scoped_refptr<Extension> other_app_; |
| 958 scoped_refptr<Extension> yet_another_app_; | 904 scoped_refptr<Extension> yet_another_app_; |
| 959 }; | 905 }; |
| 960 TEST_F(ChromeAppSortingDefaultOrdinalNoCollision, | 906 TEST_F(ChromeAppSortingDefaultOrdinalNoCollision, |
| 961 ChromeAppSortingDefaultOrdinalNoCollision) {} | 907 ChromeAppSortingDefaultOrdinalNoCollision) {} |
| 962 | 908 |
| 963 // Tests that SetExtensionVisible() correctly hides and unhides extensions. | 909 // Tests that SetExtensionVisible() correctly hides and unhides extensions. |
| 964 class ChromeAppSortingSetExtensionVisible : public ChromeAppSortingTest { | 910 class ChromeAppSortingSetExtensionVisible : public ExtensionPrefsTest { |
| 965 public: | 911 public: |
| 966 ChromeAppSortingSetExtensionVisible() {} | 912 ChromeAppSortingSetExtensionVisible() {} |
| 967 ~ChromeAppSortingSetExtensionVisible() override {} | 913 ~ChromeAppSortingSetExtensionVisible() override {} |
| 968 | 914 |
| 969 void Initialize() override { | 915 void Initialize() override { |
| 970 first_app_ = prefs_.AddApp("first_app"); | 916 first_app_ = prefs_.AddApp("first_app"); |
| 971 second_app_ = prefs_.AddApp("second_app"); | 917 second_app_ = prefs_.AddApp("second_app"); |
| 972 } | 918 } |
| 973 | 919 |
| 974 void Verify() override { | 920 void Verify() override { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 992 | 938 |
| 993 private: | 939 private: |
| 994 scoped_refptr<Extension> first_app_; | 940 scoped_refptr<Extension> first_app_; |
| 995 scoped_refptr<Extension> second_app_; | 941 scoped_refptr<Extension> second_app_; |
| 996 }; | 942 }; |
| 997 TEST_F(ChromeAppSortingSetExtensionVisible, | 943 TEST_F(ChromeAppSortingSetExtensionVisible, |
| 998 ChromeAppSortingSetExtensionVisible) { | 944 ChromeAppSortingSetExtensionVisible) { |
| 999 } | 945 } |
| 1000 | 946 |
| 1001 } // namespace extensions | 947 } // namespace extensions |
| OLD | NEW |