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