Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1546)

Side by Side Diff: chrome/browser/extensions/chrome_app_sorting_unittest.cc

Issue 1254363004: Move ownership of AppSorting from ExtensionPrefs to ExtensionSystem (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review1 Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 reserve 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()->Initialize(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 223
235 ExtensionIdList ids; 224 ExtensionIdList ids;
236 app_sorting->Initialize(ids); 225 app_sorting()->Initialize(ids);
237 } 226 }
238 void Verify() override { 227 void Verify() override {
239 ChromeAppSorting* app_sorting =
240 static_cast<ChromeAppSorting*>(prefs()->app_sorting());
241
242 syncer::StringOrdinal page = 228 syncer::StringOrdinal page =
243 app_sorting->GetPageOrdinal(extensions::kWebStoreAppId); 229 app_sorting()->GetPageOrdinal(extensions::kWebStoreAppId);
244 EXPECT_TRUE(page.IsValid()); 230 EXPECT_TRUE(page.IsValid());
245 231
246 ChromeAppSorting::PageOrdinalMap::iterator page_it = 232 ChromeAppSorting::PageOrdinalMap::iterator page_it =
247 app_sorting->ntp_ordinal_map_.find(page); 233 app_sorting()->ntp_ordinal_map_.find(page);
248 EXPECT_TRUE(page_it != app_sorting->ntp_ordinal_map_.end()); 234 EXPECT_TRUE(page_it != app_sorting()->ntp_ordinal_map_.end());
249 235
250 syncer::StringOrdinal app_launch = 236 syncer::StringOrdinal app_launch =
251 app_sorting->GetPageOrdinal(extensions::kWebStoreAppId); 237 app_sorting()->GetPageOrdinal(extensions::kWebStoreAppId);
252 EXPECT_TRUE(app_launch.IsValid()); 238 EXPECT_TRUE(app_launch.IsValid());
253 239
254 ChromeAppSorting::AppLaunchOrdinalMap::iterator app_launch_it = 240 ChromeAppSorting::AppLaunchOrdinalMap::iterator app_launch_it =
255 page_it->second.find(app_launch); 241 page_it->second.find(app_launch);
256 EXPECT_TRUE(app_launch_it != page_it->second.end()); 242 EXPECT_TRUE(app_launch_it != page_it->second.end());
257 } 243 }
258 }; 244 };
259 TEST_F(ChromeAppSortingInitializeWithNoApps, 245 TEST_F(ChromeAppSortingInitializeWithNoApps,
260 ChromeAppSortingInitializeWithNoApps) {} 246 ChromeAppSortingInitializeWithNoApps) {}
261 247
(...skipping 19 matching lines...) Expand all
281 scoped_prefs->UpdateExtensionPref(extension1()->id(), 267 scoped_prefs->UpdateExtensionPref(extension1()->id(),
282 kPrefAppLaunchIndexDeprecated, 268 kPrefAppLaunchIndexDeprecated,
283 new base::FundamentalValue(0)); 269 new base::FundamentalValue(0));
284 scoped_prefs->UpdateExtensionPref(extension1()->id(), 270 scoped_prefs->UpdateExtensionPref(extension1()->id(),
285 kPrefPageIndexDeprecated, 271 kPrefPageIndexDeprecated,
286 new base::FundamentalValue(-1)); 272 new base::FundamentalValue(-1));
287 273
288 ExtensionIdList ids; 274 ExtensionIdList ids;
289 ids.push_back(extension1()->id()); 275 ids.push_back(extension1()->id());
290 276
291 prefs()->app_sorting()->Initialize(ids); 277 app_sorting()->Initialize(ids);
292 } 278 }
293 void Verify() override { 279 void Verify() override {
294 // Make sure that the invalid page_index wasn't converted over. 280 // Make sure that the invalid page_index wasn't converted over.
295 EXPECT_FALSE(prefs()->app_sorting()->GetAppLaunchOrdinal( 281 EXPECT_FALSE(app_sorting()->GetAppLaunchOrdinal(
296 extension1()->id()).IsValid()); 282 extension1()->id()).IsValid());
297 } 283 }
298 }; 284 };
299 TEST_F(ChromeAppSortingMigrateAppIndexInvalid, 285 TEST_F(ChromeAppSortingMigrateAppIndexInvalid,
300 ChromeAppSortingMigrateAppIndexInvalid) {} 286 ChromeAppSortingMigrateAppIndexInvalid) {}
301 287
302 class ChromeAppSortingFixNTPCollisionsAllCollide 288 class ChromeAppSortingFixNTPCollisionsAllCollide
303 : public PrefsPrepopulatedTestBase { 289 : public PrefsPrepopulatedTestBase {
304 public: 290 public:
305 ChromeAppSortingFixNTPCollisionsAllCollide() {} 291 ChromeAppSortingFixNTPCollisionsAllCollide() {}
306 ~ChromeAppSortingFixNTPCollisionsAllCollide() override {} 292 ~ChromeAppSortingFixNTPCollisionsAllCollide() override {}
307 293
308 void Initialize() override { 294 void Initialize() override {
309 repeated_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); 295 repeated_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal();
310 296
311 AppSorting* app_sorting = prefs()->app_sorting(); 297 app_sorting()->SetAppLaunchOrdinal(extension1()->id(),
298 repeated_ordinal_);
299 app_sorting()->SetPageOrdinal(extension1()->id(), repeated_ordinal_);
312 300
313 app_sorting->SetAppLaunchOrdinal(extension1()->id(), 301 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), repeated_ordinal_);
314 repeated_ordinal_); 302 app_sorting()->SetPageOrdinal(extension2()->id(), repeated_ordinal_);
315 app_sorting->SetPageOrdinal(extension1()->id(), repeated_ordinal_);
316 303
317 app_sorting->SetAppLaunchOrdinal(extension2()->id(), repeated_ordinal_); 304 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), repeated_ordinal_);
318 app_sorting->SetPageOrdinal(extension2()->id(), repeated_ordinal_); 305 app_sorting()->SetPageOrdinal(extension3()->id(), repeated_ordinal_);
319 306
320 app_sorting->SetAppLaunchOrdinal(extension3()->id(), repeated_ordinal_); 307 app_sorting()->FixNTPOrdinalCollisions();
321 app_sorting->SetPageOrdinal(extension3()->id(), repeated_ordinal_);
322
323 app_sorting->FixNTPOrdinalCollisions();
324 } 308 }
325 void Verify() override { 309 void Verify() override {
326 AppSorting* app_sorting = prefs()->app_sorting();
327 syncer::StringOrdinal extension1_app_launch = 310 syncer::StringOrdinal extension1_app_launch =
328 app_sorting->GetAppLaunchOrdinal(extension1()->id()); 311 app_sorting()->GetAppLaunchOrdinal(extension1()->id());
329 syncer::StringOrdinal extension2_app_launch = 312 syncer::StringOrdinal extension2_app_launch =
330 app_sorting->GetAppLaunchOrdinal(extension2()->id()); 313 app_sorting()->GetAppLaunchOrdinal(extension2()->id());
331 syncer::StringOrdinal extension3_app_launch = 314 syncer::StringOrdinal extension3_app_launch =
332 app_sorting->GetAppLaunchOrdinal(extension3()->id()); 315 app_sorting()->GetAppLaunchOrdinal(extension3()->id());
333 316
334 // The overlapping extensions should have be adjusted so that they are 317 // The overlapping extensions should have be adjusted so that they are
335 // sorted by their id. 318 // sorted by their id.
336 EXPECT_EQ(extension1()->id() < extension2()->id(), 319 EXPECT_EQ(extension1()->id() < extension2()->id(),
337 extension1_app_launch.LessThan(extension2_app_launch)); 320 extension1_app_launch.LessThan(extension2_app_launch));
338 EXPECT_EQ(extension1()->id() < extension3()->id(), 321 EXPECT_EQ(extension1()->id() < extension3()->id(),
339 extension1_app_launch.LessThan(extension3_app_launch)); 322 extension1_app_launch.LessThan(extension3_app_launch));
340 EXPECT_EQ(extension2()->id() < extension3()->id(), 323 EXPECT_EQ(extension2()->id() < extension3()->id(),
341 extension2_app_launch.LessThan(extension3_app_launch)); 324 extension2_app_launch.LessThan(extension3_app_launch));
342 325
343 // The page ordinal should be unchanged. 326 // The page ordinal should be unchanged.
344 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( 327 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals(
345 repeated_ordinal_)); 328 repeated_ordinal_));
346 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( 329 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals(
347 repeated_ordinal_)); 330 repeated_ordinal_));
348 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( 331 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals(
349 repeated_ordinal_)); 332 repeated_ordinal_));
350 } 333 }
351 334
352 private: 335 private:
353 syncer::StringOrdinal repeated_ordinal_; 336 syncer::StringOrdinal repeated_ordinal_;
354 }; 337 };
355 TEST_F(ChromeAppSortingFixNTPCollisionsAllCollide, 338 TEST_F(ChromeAppSortingFixNTPCollisionsAllCollide,
356 ChromeAppSortingFixNTPCollisionsAllCollide) {} 339 ChromeAppSortingFixNTPCollisionsAllCollide) {}
357 340
358 class ChromeAppSortingFixNTPCollisionsSomeCollideAtStart 341 class ChromeAppSortingFixNTPCollisionsSomeCollideAtStart
359 : public PrefsPrepopulatedTestBase { 342 : public PrefsPrepopulatedTestBase {
360 public: 343 public:
361 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() {} 344 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() {}
362 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() override {} 345 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtStart() override {}
363 346
364 void Initialize() override { 347 void Initialize() override {
365 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); 348 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal();
366 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); 349 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter();
367 350
368 AppSorting* app_sorting = prefs()->app_sorting();
369
370 // Have the first two extension in the same position, with a third 351 // Have the first two extension in the same position, with a third
371 // (non-colliding) extension after. 352 // (non-colliding) extension after.
372 353
373 app_sorting->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); 354 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_);
374 app_sorting->SetPageOrdinal(extension1()->id(), first_ordinal_); 355 app_sorting()->SetPageOrdinal(extension1()->id(), first_ordinal_);
375 356
376 app_sorting->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_); 357 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_);
377 app_sorting->SetPageOrdinal(extension2()->id(), first_ordinal_); 358 app_sorting()->SetPageOrdinal(extension2()->id(), first_ordinal_);
378 359
379 app_sorting->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); 360 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), second_ordinal);
380 app_sorting->SetPageOrdinal(extension3()->id(), first_ordinal_); 361 app_sorting()->SetPageOrdinal(extension3()->id(), first_ordinal_);
381 362
382 app_sorting->FixNTPOrdinalCollisions(); 363 app_sorting()->FixNTPOrdinalCollisions();
383 } 364 }
384 void Verify() override { 365 void Verify() override {
385 AppSorting* app_sorting = prefs()->app_sorting();
386 syncer::StringOrdinal extension1_app_launch = 366 syncer::StringOrdinal extension1_app_launch =
387 app_sorting->GetAppLaunchOrdinal(extension1()->id()); 367 app_sorting()->GetAppLaunchOrdinal(extension1()->id());
388 syncer::StringOrdinal extension2_app_launch = 368 syncer::StringOrdinal extension2_app_launch =
389 app_sorting->GetAppLaunchOrdinal(extension2()->id()); 369 app_sorting()->GetAppLaunchOrdinal(extension2()->id());
390 syncer::StringOrdinal extension3_app_launch = 370 syncer::StringOrdinal extension3_app_launch =
391 app_sorting->GetAppLaunchOrdinal(extension3()->id()); 371 app_sorting()->GetAppLaunchOrdinal(extension3()->id());
392 372
393 // The overlapping extensions should have be adjusted so that they are 373 // 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 374 // sorted by their id, but they both should be before ext3, which wasn't
395 // overlapping. 375 // overlapping.
396 EXPECT_EQ(extension1()->id() < extension2()->id(), 376 EXPECT_EQ(extension1()->id() < extension2()->id(),
397 extension1_app_launch.LessThan(extension2_app_launch)); 377 extension1_app_launch.LessThan(extension2_app_launch));
398 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); 378 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch));
399 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch)); 379 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch));
400 380
401 // The page ordinal should be unchanged. 381 // The page ordinal should be unchanged.
402 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( 382 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals(
403 first_ordinal_)); 383 first_ordinal_));
404 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( 384 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals(
405 first_ordinal_)); 385 first_ordinal_));
406 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( 386 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals(
407 first_ordinal_)); 387 first_ordinal_));
408 } 388 }
409 389
410 private: 390 private:
411 syncer::StringOrdinal first_ordinal_; 391 syncer::StringOrdinal first_ordinal_;
412 }; 392 };
413 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtStart, 393 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtStart,
414 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart) {} 394 ChromeAppSortingFixNTPCollisionsSomeCollideAtStart) {}
415 395
416 class ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd 396 class ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd
417 : public PrefsPrepopulatedTestBase { 397 : public PrefsPrepopulatedTestBase {
418 public: 398 public:
419 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() {} 399 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() {}
420 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() override {} 400 ~ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd() override {}
421 401
422 void Initialize() override { 402 void Initialize() override {
423 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); 403 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal();
424 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); 404 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter();
425 405
426 AppSorting* app_sorting = prefs()->app_sorting();
427
428 // Have the first extension in a non-colliding position, followed by two 406 // Have the first extension in a non-colliding position, followed by two
429 // two extension in the same position. 407 // two extension in the same position.
430 408
431 app_sorting->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); 409 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_);
432 app_sorting->SetPageOrdinal(extension1()->id(), first_ordinal_); 410 app_sorting()->SetPageOrdinal(extension1()->id(), first_ordinal_);
433 411
434 app_sorting->SetAppLaunchOrdinal(extension2()->id(), second_ordinal); 412 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), second_ordinal);
435 app_sorting->SetPageOrdinal(extension2()->id(), first_ordinal_); 413 app_sorting()->SetPageOrdinal(extension2()->id(), first_ordinal_);
436 414
437 app_sorting->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); 415 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), second_ordinal);
438 app_sorting->SetPageOrdinal(extension3()->id(), first_ordinal_); 416 app_sorting()->SetPageOrdinal(extension3()->id(), first_ordinal_);
439 417
440 app_sorting->FixNTPOrdinalCollisions(); 418 app_sorting()->FixNTPOrdinalCollisions();
441 } 419 }
442 void Verify() override { 420 void Verify() override {
443 AppSorting* app_sorting = prefs()->app_sorting();
444 syncer::StringOrdinal extension1_app_launch = 421 syncer::StringOrdinal extension1_app_launch =
445 app_sorting->GetAppLaunchOrdinal(extension1()->id()); 422 app_sorting()->GetAppLaunchOrdinal(extension1()->id());
446 syncer::StringOrdinal extension2_app_launch = 423 syncer::StringOrdinal extension2_app_launch =
447 app_sorting->GetAppLaunchOrdinal(extension2()->id()); 424 app_sorting()->GetAppLaunchOrdinal(extension2()->id());
448 syncer::StringOrdinal extension3_app_launch = 425 syncer::StringOrdinal extension3_app_launch =
449 app_sorting->GetAppLaunchOrdinal(extension3()->id()); 426 app_sorting()->GetAppLaunchOrdinal(extension3()->id());
450 427
451 // The overlapping extensions should have be adjusted so that they are 428 // 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 429 // sorted by their id, but they both should be after ext1, which wasn't
453 // overlapping. 430 // overlapping.
454 EXPECT_TRUE(extension1_app_launch.LessThan(extension2_app_launch)); 431 EXPECT_TRUE(extension1_app_launch.LessThan(extension2_app_launch));
455 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); 432 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch));
456 EXPECT_EQ(extension2()->id() < extension3()->id(), 433 EXPECT_EQ(extension2()->id() < extension3()->id(),
457 extension2_app_launch.LessThan(extension3_app_launch)); 434 extension2_app_launch.LessThan(extension3_app_launch));
458 435
459 // The page ordinal should be unchanged. 436 // The page ordinal should be unchanged.
460 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( 437 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals(
461 first_ordinal_)); 438 first_ordinal_));
462 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( 439 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals(
463 first_ordinal_)); 440 first_ordinal_));
464 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( 441 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals(
465 first_ordinal_)); 442 first_ordinal_));
466 } 443 }
467 444
468 private: 445 private:
469 syncer::StringOrdinal first_ordinal_; 446 syncer::StringOrdinal first_ordinal_;
470 }; 447 };
471 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd, 448 TEST_F(ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd,
472 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd) {} 449 ChromeAppSortingFixNTPCollisionsSomeCollideAtEnd) {}
473 450
474 class ChromeAppSortingFixNTPCollisionsTwoCollisions 451 class ChromeAppSortingFixNTPCollisionsTwoCollisions
475 : public PrefsPrepopulatedTestBase { 452 : public PrefsPrepopulatedTestBase {
476 public: 453 public:
477 ChromeAppSortingFixNTPCollisionsTwoCollisions() {} 454 ChromeAppSortingFixNTPCollisionsTwoCollisions() {}
478 ~ChromeAppSortingFixNTPCollisionsTwoCollisions() override {} 455 ~ChromeAppSortingFixNTPCollisionsTwoCollisions() override {}
479 456
480 void Initialize() override { 457 void Initialize() override {
481 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal(); 458 first_ordinal_ = syncer::StringOrdinal::CreateInitialOrdinal();
482 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter(); 459 syncer::StringOrdinal second_ordinal = first_ordinal_.CreateAfter();
483 460
484 AppSorting* app_sorting = prefs()->app_sorting(); 461 // Have two extensions colliding, followed by two more colliding extensions.
462 app_sorting()->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_);
463 app_sorting()->SetPageOrdinal(extension1()->id(), first_ordinal_);
485 464
486 // Have two extensions colliding, followed by two more colliding extensions. 465 app_sorting()->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_);
487 app_sorting->SetAppLaunchOrdinal(extension1()->id(), first_ordinal_); 466 app_sorting()->SetPageOrdinal(extension2()->id(), first_ordinal_);
488 app_sorting->SetPageOrdinal(extension1()->id(), first_ordinal_);
489 467
490 app_sorting->SetAppLaunchOrdinal(extension2()->id(), first_ordinal_); 468 app_sorting()->SetAppLaunchOrdinal(extension3()->id(), second_ordinal);
491 app_sorting->SetPageOrdinal(extension2()->id(), first_ordinal_); 469 app_sorting()->SetPageOrdinal(extension3()->id(), first_ordinal_);
492 470
493 app_sorting->SetAppLaunchOrdinal(extension3()->id(), second_ordinal); 471 app_sorting()->SetAppLaunchOrdinal(extension4()->id(), second_ordinal);
494 app_sorting->SetPageOrdinal(extension3()->id(), first_ordinal_); 472 app_sorting()->SetPageOrdinal(extension4()->id(), first_ordinal_);
495 473
496 app_sorting->SetAppLaunchOrdinal(extension4()->id(), second_ordinal); 474 app_sorting()->FixNTPOrdinalCollisions();
497 app_sorting->SetPageOrdinal(extension4()->id(), first_ordinal_);
498
499 app_sorting->FixNTPOrdinalCollisions();
500 } 475 }
501 void Verify() override { 476 void Verify() override {
502 AppSorting* app_sorting = prefs()->app_sorting();
503 syncer::StringOrdinal extension1_app_launch = 477 syncer::StringOrdinal extension1_app_launch =
504 app_sorting->GetAppLaunchOrdinal(extension1()->id()); 478 app_sorting()->GetAppLaunchOrdinal(extension1()->id());
505 syncer::StringOrdinal extension2_app_launch = 479 syncer::StringOrdinal extension2_app_launch =
506 app_sorting->GetAppLaunchOrdinal(extension2()->id()); 480 app_sorting()->GetAppLaunchOrdinal(extension2()->id());
507 syncer::StringOrdinal extension3_app_launch = 481 syncer::StringOrdinal extension3_app_launch =
508 app_sorting->GetAppLaunchOrdinal(extension3()->id()); 482 app_sorting()->GetAppLaunchOrdinal(extension3()->id());
509 syncer::StringOrdinal extension4_app_launch = 483 syncer::StringOrdinal extension4_app_launch =
510 app_sorting->GetAppLaunchOrdinal(extension4()->id()); 484 app_sorting()->GetAppLaunchOrdinal(extension4()->id());
511 485
512 // The overlapping extensions should have be adjusted so that they are 486 // The overlapping extensions should have be adjusted so that they are
513 // sorted by their id, with |ext1| and |ext2| appearing before |ext3| and 487 // sorted by their id, with |ext1| and |ext2| appearing before |ext3| and
514 // |ext4|. 488 // |ext4|.
515 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch)); 489 EXPECT_TRUE(extension1_app_launch.LessThan(extension3_app_launch));
516 EXPECT_TRUE(extension1_app_launch.LessThan(extension4_app_launch)); 490 EXPECT_TRUE(extension1_app_launch.LessThan(extension4_app_launch));
517 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch)); 491 EXPECT_TRUE(extension2_app_launch.LessThan(extension3_app_launch));
518 EXPECT_TRUE(extension2_app_launch.LessThan(extension4_app_launch)); 492 EXPECT_TRUE(extension2_app_launch.LessThan(extension4_app_launch));
519 493
520 EXPECT_EQ(extension1()->id() < extension2()->id(), 494 EXPECT_EQ(extension1()->id() < extension2()->id(),
521 extension1_app_launch.LessThan(extension2_app_launch)); 495 extension1_app_launch.LessThan(extension2_app_launch));
522 EXPECT_EQ(extension3()->id() < extension4()->id(), 496 EXPECT_EQ(extension3()->id() < extension4()->id(),
523 extension3_app_launch.LessThan(extension4_app_launch)); 497 extension3_app_launch.LessThan(extension4_app_launch));
524 498
525 // The page ordinal should be unchanged. 499 // The page ordinal should be unchanged.
526 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).Equals( 500 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).Equals(
527 first_ordinal_)); 501 first_ordinal_));
528 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension2()->id()).Equals( 502 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension2()->id()).Equals(
529 first_ordinal_)); 503 first_ordinal_));
530 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension3()->id()).Equals( 504 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension3()->id()).Equals(
531 first_ordinal_)); 505 first_ordinal_));
532 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension4()->id()).Equals( 506 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension4()->id()).Equals(
533 first_ordinal_)); 507 first_ordinal_));
534 } 508 }
535 509
536 private: 510 private:
537 syncer::StringOrdinal first_ordinal_; 511 syncer::StringOrdinal first_ordinal_;
538 }; 512 };
539 TEST_F(ChromeAppSortingFixNTPCollisionsTwoCollisions, 513 TEST_F(ChromeAppSortingFixNTPCollisionsTwoCollisions,
540 ChromeAppSortingFixNTPCollisionsTwoCollisions) {} 514 ChromeAppSortingFixNTPCollisionsTwoCollisions) {}
541 515
542 class ChromeAppSortingEnsureValidOrdinals 516 class ChromeAppSortingEnsureValidOrdinals
543 : public PrefsPrepopulatedTestBase { 517 : public PrefsPrepopulatedTestBase {
544 public : 518 public :
545 ChromeAppSortingEnsureValidOrdinals() {} 519 ChromeAppSortingEnsureValidOrdinals() {}
546 ~ChromeAppSortingEnsureValidOrdinals() override {} 520 ~ChromeAppSortingEnsureValidOrdinals() override {}
547 521
548 void Initialize() override {} 522 void Initialize() override {}
549 void Verify() override { 523 void Verify() override {
550 AppSorting* app_sorting = prefs()->app_sorting();
551
552 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes 524 // Give ext1 invalid ordinals and then check that EnsureValidOrdinals fixes
553 // them. 525 // them.
554 app_sorting->SetAppLaunchOrdinal(extension1()->id(), 526 app_sorting()->SetAppLaunchOrdinal(extension1()->id(),
555 syncer::StringOrdinal()); 527 syncer::StringOrdinal());
556 app_sorting->SetPageOrdinal(extension1()->id(), syncer::StringOrdinal()); 528 app_sorting()->SetPageOrdinal(extension1()->id(), syncer::StringOrdinal());
557 529
558 app_sorting->EnsureValidOrdinals(extension1()->id(), 530 app_sorting()->EnsureValidOrdinals(extension1()->id(),
559 syncer::StringOrdinal()); 531 syncer::StringOrdinal());
560 532
561 EXPECT_TRUE(app_sorting->GetAppLaunchOrdinal(extension1()->id()).IsValid()); 533 EXPECT_TRUE(
562 EXPECT_TRUE(app_sorting->GetPageOrdinal(extension1()->id()).IsValid()); 534 app_sorting()->GetAppLaunchOrdinal(extension1()->id()).IsValid());
535 EXPECT_TRUE(app_sorting()->GetPageOrdinal(extension1()->id()).IsValid());
563 } 536 }
564 }; 537 };
565 TEST_F(ChromeAppSortingEnsureValidOrdinals, 538 TEST_F(ChromeAppSortingEnsureValidOrdinals,
566 ChromeAppSortingEnsureValidOrdinals) {} 539 ChromeAppSortingEnsureValidOrdinals) {}
567 540
568 class ChromeAppSortingPageOrdinalMapping : public PrefsPrepopulatedTestBase { 541 class ChromeAppSortingPageOrdinalMapping : public PrefsPrepopulatedTestBase {
569 public: 542 public:
570 ChromeAppSortingPageOrdinalMapping() {} 543 ChromeAppSortingPageOrdinalMapping() {}
571 ~ChromeAppSortingPageOrdinalMapping() override {} 544 ~ChromeAppSortingPageOrdinalMapping() override {}
572 545
573 void Initialize() override {} 546 void Initialize() override {}
574 void Verify() override { 547 void Verify() override {
575 std::string ext_1 = "ext_1"; 548 std::string ext_1 = "ext_1";
576 std::string ext_2 = "ext_2"; 549 std::string ext_2 = "ext_2";
577 550
578 ChromeAppSorting* app_sorting =
579 static_cast<ChromeAppSorting*>(prefs()->app_sorting());
580 syncer::StringOrdinal first_ordinal = 551 syncer::StringOrdinal first_ordinal =
581 syncer::StringOrdinal::CreateInitialOrdinal(); 552 syncer::StringOrdinal::CreateInitialOrdinal();
582 553
583 // Ensure attempting to removing a mapping with an invalid page doesn't 554 // Ensure attempting to removing a mapping with an invalid page doesn't
584 // modify the map. 555 // modify the map.
585 EXPECT_TRUE(app_sorting->ntp_ordinal_map_.empty()); 556 EXPECT_TRUE(app_sorting()->ntp_ordinal_map_.empty());
586 app_sorting->RemoveOrdinalMapping( 557 app_sorting()->RemoveOrdinalMapping(
587 ext_1, first_ordinal, first_ordinal); 558 ext_1, first_ordinal, first_ordinal);
588 EXPECT_TRUE(app_sorting->ntp_ordinal_map_.empty()); 559 EXPECT_TRUE(app_sorting()->ntp_ordinal_map_.empty());
589 560
590 // Add new mappings. 561 // Add new mappings.
591 app_sorting->AddOrdinalMapping(ext_1, first_ordinal, first_ordinal); 562 app_sorting()->AddOrdinalMapping(ext_1, first_ordinal, first_ordinal);
592 app_sorting->AddOrdinalMapping(ext_2, first_ordinal, first_ordinal); 563 app_sorting()->AddOrdinalMapping(ext_2, first_ordinal, first_ordinal);
593 564
594 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_.size()); 565 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_.size());
595 EXPECT_EQ(2U, app_sorting->ntp_ordinal_map_[first_ordinal].size()); 566 EXPECT_EQ(2U, app_sorting()->ntp_ordinal_map_[first_ordinal].size());
596 567
597 ChromeAppSorting::AppLaunchOrdinalMap::iterator it = 568 ChromeAppSorting::AppLaunchOrdinalMap::iterator it =
598 app_sorting->ntp_ordinal_map_[first_ordinal].find(first_ordinal); 569 app_sorting()->ntp_ordinal_map_[first_ordinal].find(first_ordinal);
599 EXPECT_EQ(ext_1, it->second); 570 EXPECT_EQ(ext_1, it->second);
600 ++it; 571 ++it;
601 EXPECT_EQ(ext_2, it->second); 572 EXPECT_EQ(ext_2, it->second);
602 573
603 app_sorting->RemoveOrdinalMapping(ext_1, first_ordinal, first_ordinal); 574 app_sorting()->RemoveOrdinalMapping(ext_1, first_ordinal, first_ordinal);
604 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_.size()); 575 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_.size());
605 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_[first_ordinal].size()); 576 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_[first_ordinal].size());
606 577
607 it = app_sorting->ntp_ordinal_map_[first_ordinal].find(first_ordinal); 578 it = app_sorting()->ntp_ordinal_map_[first_ordinal].find(first_ordinal);
608 EXPECT_EQ(ext_2, it->second); 579 EXPECT_EQ(ext_2, it->second);
609 580
610 // Ensure that attempting to remove an extension with a valid page and app 581 // Ensure that attempting to remove an extension with a valid page and app
611 // launch ordinals, but a unused id has no effect. 582 // launch ordinals, but a unused id has no effect.
612 app_sorting->RemoveOrdinalMapping( 583 app_sorting()->RemoveOrdinalMapping(
613 "invalid_ext", first_ordinal, first_ordinal); 584 "invalid_ext", first_ordinal, first_ordinal);
614 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_.size()); 585 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_.size());
615 EXPECT_EQ(1U, app_sorting->ntp_ordinal_map_[first_ordinal].size()); 586 EXPECT_EQ(1U, app_sorting()->ntp_ordinal_map_[first_ordinal].size());
616 587
617 it = app_sorting->ntp_ordinal_map_[first_ordinal].find(first_ordinal); 588 it = app_sorting()->ntp_ordinal_map_[first_ordinal].find(first_ordinal);
618 EXPECT_EQ(ext_2, it->second); 589 EXPECT_EQ(ext_2, it->second);
619 } 590 }
620 }; 591 };
621 TEST_F(ChromeAppSortingPageOrdinalMapping, 592 TEST_F(ChromeAppSortingPageOrdinalMapping,
622 ChromeAppSortingPageOrdinalMapping) {} 593 ChromeAppSortingPageOrdinalMapping) {}
623 594
624 class ChromeAppSortingPreinstalledAppsBase : public PrefsPrepopulatedTestBase { 595 class ChromeAppSortingPreinstalledAppsBase : public PrefsPrepopulatedTestBase {
625 public: 596 public:
626 ChromeAppSortingPreinstalledAppsBase() { 597 ChromeAppSortingPreinstalledAppsBase() {
627 base::DictionaryValue simple_dict; 598 base::DictionaryValue simple_dict;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 635
665 class ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage 636 class ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage
666 : public ChromeAppSortingPreinstalledAppsBase { 637 : public ChromeAppSortingPreinstalledAppsBase {
667 public: 638 public:
668 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {} 639 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() {}
669 ~ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() override {} 640 ~ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage() override {}
670 641
671 void Initialize() override {} 642 void Initialize() override {}
672 void Verify() override { 643 void Verify() override {
673 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal(); 644 syncer::StringOrdinal page = syncer::StringOrdinal::CreateInitialOrdinal();
674 ChromeAppSorting* app_sorting =
675 static_cast<ChromeAppSorting*>(prefs()->app_sorting());
676 645
677 syncer::StringOrdinal min = 646 syncer::StringOrdinal min =
678 app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( 647 app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage(
679 page, 648 page,
680 ChromeAppSorting::MIN_ORDINAL); 649 ChromeAppSorting::MIN_ORDINAL);
681 syncer::StringOrdinal max = 650 syncer::StringOrdinal max =
682 app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( 651 app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage(
683 page, 652 page,
684 ChromeAppSorting::MAX_ORDINAL); 653 ChromeAppSorting::MAX_ORDINAL);
685 EXPECT_TRUE(min.IsValid()); 654 EXPECT_TRUE(min.IsValid());
686 EXPECT_TRUE(max.IsValid()); 655 EXPECT_TRUE(max.IsValid());
687 EXPECT_TRUE(min.LessThan(max)); 656 EXPECT_TRUE(min.LessThan(max));
688 657
689 // Ensure that the min and max values aren't set for empty pages. 658 // Ensure that the min and max values aren't set for empty pages.
690 min = syncer::StringOrdinal(); 659 min = syncer::StringOrdinal();
691 max = syncer::StringOrdinal(); 660 max = syncer::StringOrdinal();
692 syncer::StringOrdinal empty_page = page.CreateAfter(); 661 syncer::StringOrdinal empty_page = page.CreateAfter();
693 EXPECT_FALSE(min.IsValid()); 662 EXPECT_FALSE(min.IsValid());
694 EXPECT_FALSE(max.IsValid()); 663 EXPECT_FALSE(max.IsValid());
695 min = app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( 664 min = app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage(
696 empty_page, 665 empty_page,
697 ChromeAppSorting::MIN_ORDINAL); 666 ChromeAppSorting::MIN_ORDINAL);
698 max = app_sorting->GetMinOrMaxAppLaunchOrdinalsOnPage( 667 max = app_sorting()->GetMinOrMaxAppLaunchOrdinalsOnPage(
699 empty_page, 668 empty_page,
700 ChromeAppSorting::MAX_ORDINAL); 669 ChromeAppSorting::MAX_ORDINAL);
701 EXPECT_FALSE(min.IsValid()); 670 EXPECT_FALSE(min.IsValid());
702 EXPECT_FALSE(max.IsValid()); 671 EXPECT_FALSE(max.IsValid());
703 } 672 }
704 }; 673 };
705 TEST_F(ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage, 674 TEST_F(ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage,
706 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {} 675 ChromeAppSortingGetMinOrMaxAppLaunchOrdinalsOnPage) {}
707 676
708 // Make sure that empty pages aren't removed from the integer to ordinal 677 // Make sure that empty pages aren't removed from the integer to ordinal
709 // mapping. See http://crbug.com/109802 for details. 678 // mapping. See http://crbug.com/109802 for details.
710 class ChromeAppSortingKeepEmptyStringOrdinalPages 679 class ChromeAppSortingKeepEmptyStringOrdinalPages
711 : public ChromeAppSortingPreinstalledAppsBase { 680 : public ChromeAppSortingPreinstalledAppsBase {
712 public: 681 public:
713 ChromeAppSortingKeepEmptyStringOrdinalPages() {} 682 ChromeAppSortingKeepEmptyStringOrdinalPages() {}
714 ~ChromeAppSortingKeepEmptyStringOrdinalPages() override {} 683 ~ChromeAppSortingKeepEmptyStringOrdinalPages() override {}
715 684
716 void Initialize() override { 685 void Initialize() override {
717 AppSorting* app_sorting = prefs()->app_sorting();
718
719 syncer::StringOrdinal first_page = 686 syncer::StringOrdinal first_page =
720 syncer::StringOrdinal::CreateInitialOrdinal(); 687 syncer::StringOrdinal::CreateInitialOrdinal();
721 app_sorting->SetPageOrdinal(app1_->id(), first_page); 688 app_sorting()->SetPageOrdinal(app1_->id(), first_page);
722 EXPECT_EQ(0, app_sorting->PageStringOrdinalAsInteger(first_page)); 689 EXPECT_EQ(0, app_sorting()->PageStringOrdinalAsInteger(first_page));
723 690
724 last_page_ = first_page.CreateAfter(); 691 last_page_ = first_page.CreateAfter();
725 app_sorting->SetPageOrdinal(app2_->id(), last_page_); 692 app_sorting()->SetPageOrdinal(app2_->id(), last_page_);
726 EXPECT_EQ(1, app_sorting->PageStringOrdinalAsInteger(last_page_)); 693 EXPECT_EQ(1, app_sorting()->PageStringOrdinalAsInteger(last_page_));
727 694
728 // Move the second app to create an empty page. 695 // Move the second app to create an empty page.
729 app_sorting->SetPageOrdinal(app2_->id(), first_page); 696 app_sorting()->SetPageOrdinal(app2_->id(), first_page);
730 EXPECT_EQ(0, app_sorting->PageStringOrdinalAsInteger(first_page)); 697 EXPECT_EQ(0, app_sorting()->PageStringOrdinalAsInteger(first_page));
731 } 698 }
732 void Verify() override { 699 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 700 // Move the second app to a new empty page at the end, skipping over
736 // the current empty page. 701 // the current empty page.
737 last_page_ = last_page_.CreateAfter(); 702 last_page_ = last_page_.CreateAfter();
738 app_sorting->SetPageOrdinal(app2_->id(), last_page_); 703 app_sorting()->SetPageOrdinal(app2_->id(), last_page_);
739 EXPECT_EQ(2, app_sorting->PageStringOrdinalAsInteger(last_page_)); 704 EXPECT_EQ(2, app_sorting()->PageStringOrdinalAsInteger(last_page_));
740 EXPECT_TRUE(last_page_.Equals(app_sorting->PageIntegerAsStringOrdinal(2))); 705 EXPECT_TRUE(
706 last_page_.Equals(app_sorting()->PageIntegerAsStringOrdinal(2)));
741 } 707 }
742 708
743 private: 709 private:
744 syncer::StringOrdinal last_page_; 710 syncer::StringOrdinal last_page_;
745 }; 711 };
746 TEST_F(ChromeAppSortingKeepEmptyStringOrdinalPages, 712 TEST_F(ChromeAppSortingKeepEmptyStringOrdinalPages,
747 ChromeAppSortingKeepEmptyStringOrdinalPages) {} 713 ChromeAppSortingKeepEmptyStringOrdinalPages) {}
748 714
749 class ChromeAppSortingMakesFillerOrdinals 715 class ChromeAppSortingMakesFillerOrdinals
750 : public ChromeAppSortingPreinstalledAppsBase { 716 : public ChromeAppSortingPreinstalledAppsBase {
751 public: 717 public:
752 ChromeAppSortingMakesFillerOrdinals() {} 718 ChromeAppSortingMakesFillerOrdinals() {}
753 ~ChromeAppSortingMakesFillerOrdinals() override {} 719 ~ChromeAppSortingMakesFillerOrdinals() override {}
754 720
755 void Initialize() override { 721 void Initialize() override {
756 AppSorting* app_sorting = prefs()->app_sorting();
757
758 syncer::StringOrdinal first_page = 722 syncer::StringOrdinal first_page =
759 syncer::StringOrdinal::CreateInitialOrdinal(); 723 syncer::StringOrdinal::CreateInitialOrdinal();
760 app_sorting->SetPageOrdinal(app1_->id(), first_page); 724 app_sorting()->SetPageOrdinal(app1_->id(), first_page);
761 EXPECT_EQ(0, app_sorting->PageStringOrdinalAsInteger(first_page)); 725 EXPECT_EQ(0, app_sorting()->PageStringOrdinalAsInteger(first_page));
762 } 726 }
763 void Verify() override { 727 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 728 // 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 729 // 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 730 // 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 731 // filler ordinals are created as needed. See: http://crbug.com/122214
770 syncer::StringOrdinal page_three = 732 syncer::StringOrdinal page_three =
771 app_sorting->PageIntegerAsStringOrdinal(2); 733 app_sorting()->PageIntegerAsStringOrdinal(2);
772 app_sorting->SetPageOrdinal(app1_->id(), page_three); 734 app_sorting()->SetPageOrdinal(app1_->id(), page_three);
773 EXPECT_EQ(2, app_sorting->PageStringOrdinalAsInteger(page_three)); 735 EXPECT_EQ(2, app_sorting()->PageStringOrdinalAsInteger(page_three));
774 736
775 syncer::StringOrdinal page_six = app_sorting->PageIntegerAsStringOrdinal(5); 737 syncer::StringOrdinal page_six =
776 app_sorting->SetPageOrdinal(app1_->id(), page_six); 738 app_sorting()->PageIntegerAsStringOrdinal(5);
777 EXPECT_EQ(5, app_sorting->PageStringOrdinalAsInteger(page_six)); 739 app_sorting()->SetPageOrdinal(app1_->id(), page_six);
740 EXPECT_EQ(5, app_sorting()->PageStringOrdinalAsInteger(page_six));
778 } 741 }
779 }; 742 };
780 TEST_F(ChromeAppSortingMakesFillerOrdinals, 743 TEST_F(ChromeAppSortingMakesFillerOrdinals,
781 ChromeAppSortingMakesFillerOrdinals) {} 744 ChromeAppSortingMakesFillerOrdinals) {}
782 745
783 class ChromeAppSortingDefaultOrdinalsBase : public ChromeAppSortingTest { 746 class ChromeAppSortingDefaultOrdinalsBase : public ExtensionPrefsTest {
784 public: 747 public:
785 ChromeAppSortingDefaultOrdinalsBase() {} 748 ChromeAppSortingDefaultOrdinalsBase() {}
786 ~ChromeAppSortingDefaultOrdinalsBase() override {} 749 ~ChromeAppSortingDefaultOrdinalsBase() override {}
787 750
788 void Initialize() override { 751 void Initialize() override {
789 app_ = CreateApp("app"); 752 app_ = CreateApp("app");
790 753
791 InitDefaultOrdinals(); 754 InitDefaultOrdinals();
792 ChromeAppSorting* app_sorting =
793 static_cast<ChromeAppSorting*>(prefs()->app_sorting());
794 ChromeAppSorting::AppOrdinalsMap& sorting_defaults = 755 ChromeAppSorting::AppOrdinalsMap& sorting_defaults =
795 app_sorting->default_ordinals_; 756 app_sorting()->default_ordinals_;
796 sorting_defaults[app_->id()].page_ordinal = default_page_ordinal_; 757 sorting_defaults[app_->id()].page_ordinal = default_page_ordinal_;
797 sorting_defaults[app_->id()].app_launch_ordinal = 758 sorting_defaults[app_->id()].app_launch_ordinal =
798 default_app_launch_ordinal_; 759 default_app_launch_ordinal_;
799 760
800 SetupUserOrdinals(); 761 SetupUserOrdinals();
801 InstallApps(); 762 InstallApps();
802 } 763 }
803 764
804 protected: 765 protected:
805 scoped_refptr<Extension> CreateApp(const std::string& name) { 766 scoped_refptr<Extension> CreateApp(const std::string& name) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 }; 801 };
841 802
842 // Tests that the app gets its default ordinals. 803 // Tests that the app gets its default ordinals.
843 class ChromeAppSortingDefaultOrdinals 804 class ChromeAppSortingDefaultOrdinals
844 : public ChromeAppSortingDefaultOrdinalsBase { 805 : public ChromeAppSortingDefaultOrdinalsBase {
845 public: 806 public:
846 ChromeAppSortingDefaultOrdinals() {} 807 ChromeAppSortingDefaultOrdinals() {}
847 ~ChromeAppSortingDefaultOrdinals() override {} 808 ~ChromeAppSortingDefaultOrdinals() override {}
848 809
849 void Verify() override { 810 void Verify() override {
850 AppSorting* app_sorting = prefs()->app_sorting(); 811 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals(
851 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals(
852 default_page_ordinal_)); 812 default_page_ordinal_));
853 EXPECT_TRUE(app_sorting->GetAppLaunchOrdinal(app_->id()).Equals( 813 EXPECT_TRUE(app_sorting()->GetAppLaunchOrdinal(app_->id()).Equals(
854 default_app_launch_ordinal_)); 814 default_app_launch_ordinal_));
855 } 815 }
856 }; 816 };
857 TEST_F(ChromeAppSortingDefaultOrdinals, 817 TEST_F(ChromeAppSortingDefaultOrdinals,
858 ChromeAppSortingDefaultOrdinals) {} 818 ChromeAppSortingDefaultOrdinals) {}
859 819
860 // Tests that the default page ordinal is overridden by install page ordinal. 820 // Tests that the default page ordinal is overridden by install page ordinal.
861 class ChromeAppSortingDefaultOrdinalOverriddenByInstallPage 821 class ChromeAppSortingDefaultOrdinalOverriddenByInstallPage
862 : public ChromeAppSortingDefaultOrdinalsBase { 822 : public ChromeAppSortingDefaultOrdinalsBase {
863 public: 823 public:
864 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() {} 824 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() {}
865 ~ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() override {} 825 ~ChromeAppSortingDefaultOrdinalOverriddenByInstallPage() override {}
866 826
867 void Verify() override { 827 void Verify() override {
868 AppSorting* app_sorting = prefs()->app_sorting(); 828 EXPECT_FALSE(app_sorting()->GetPageOrdinal(app_->id()).Equals(
869
870 EXPECT_FALSE(app_sorting->GetPageOrdinal(app_->id()).Equals(
871 default_page_ordinal_)); 829 default_page_ordinal_));
872 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals(install_page_)); 830 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals(
831 install_page_));
873 } 832 }
874 833
875 protected: 834 protected:
876 void InstallApps() override { 835 void InstallApps() override {
877 install_page_ = default_page_ordinal_.CreateAfter(); 836 install_page_ = default_page_ordinal_.CreateAfter();
878 prefs()->OnExtensionInstalled(app_.get(), 837 prefs()->OnExtensionInstalled(app_.get(),
879 Extension::ENABLED, 838 Extension::ENABLED,
880 install_page_, 839 install_page_,
881 std::string()); 840 std::string());
882 } 841 }
883 842
884 private: 843 private:
885 syncer::StringOrdinal install_page_; 844 syncer::StringOrdinal install_page_;
886 }; 845 };
887 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByInstallPage, 846 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByInstallPage,
888 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage) {} 847 ChromeAppSortingDefaultOrdinalOverriddenByInstallPage) {}
889 848
890 // Tests that the default ordinals are overridden by user values. 849 // Tests that the default ordinals are overridden by user values.
891 class ChromeAppSortingDefaultOrdinalOverriddenByUserValue 850 class ChromeAppSortingDefaultOrdinalOverriddenByUserValue
892 : public ChromeAppSortingDefaultOrdinalsBase { 851 : public ChromeAppSortingDefaultOrdinalsBase {
893 public: 852 public:
894 ChromeAppSortingDefaultOrdinalOverriddenByUserValue() {} 853 ChromeAppSortingDefaultOrdinalOverriddenByUserValue() {}
895 ~ChromeAppSortingDefaultOrdinalOverriddenByUserValue() override {} 854 ~ChromeAppSortingDefaultOrdinalOverriddenByUserValue() override {}
896 855
897 void Verify() override { 856 void Verify() override {
898 AppSorting* app_sorting = prefs()->app_sorting(); 857 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals(
899
900 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals(
901 user_page_ordinal_)); 858 user_page_ordinal_));
902 EXPECT_TRUE(app_sorting->GetAppLaunchOrdinal(app_->id()).Equals( 859 EXPECT_TRUE(app_sorting()->GetAppLaunchOrdinal(app_->id()).Equals(
903 user_app_launch_ordinal_)); 860 user_app_launch_ordinal_));
904 } 861 }
905 862
906 protected: 863 protected:
907 void SetupUserOrdinals() override { 864 void SetupUserOrdinals() override {
908 user_page_ordinal_ = default_page_ordinal_.CreateAfter(); 865 user_page_ordinal_ = default_page_ordinal_.CreateAfter();
909 user_app_launch_ordinal_ = default_app_launch_ordinal_.CreateBefore(); 866 user_app_launch_ordinal_ = default_app_launch_ordinal_.CreateBefore();
910 867
911 AppSorting* app_sorting = prefs()->app_sorting(); 868 app_sorting()->SetPageOrdinal(app_->id(), user_page_ordinal_);
912 app_sorting->SetPageOrdinal(app_->id(), user_page_ordinal_); 869 app_sorting()->SetAppLaunchOrdinal(app_->id(), user_app_launch_ordinal_);
913 app_sorting->SetAppLaunchOrdinal(app_->id(), user_app_launch_ordinal_);
914 } 870 }
915 871
916 private: 872 private:
917 syncer::StringOrdinal user_page_ordinal_; 873 syncer::StringOrdinal user_page_ordinal_;
918 syncer::StringOrdinal user_app_launch_ordinal_; 874 syncer::StringOrdinal user_app_launch_ordinal_;
919 }; 875 };
920 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByUserValue, 876 TEST_F(ChromeAppSortingDefaultOrdinalOverriddenByUserValue,
921 ChromeAppSortingDefaultOrdinalOverriddenByUserValue) {} 877 ChromeAppSortingDefaultOrdinalOverriddenByUserValue) {}
922 878
923 // Tests that the default app launch ordinal is changed to avoid collision. 879 // Tests that the default app launch ordinal is changed to avoid collision.
924 class ChromeAppSortingDefaultOrdinalNoCollision 880 class ChromeAppSortingDefaultOrdinalNoCollision
925 : public ChromeAppSortingDefaultOrdinalsBase { 881 : public ChromeAppSortingDefaultOrdinalsBase {
926 public: 882 public:
927 ChromeAppSortingDefaultOrdinalNoCollision() {} 883 ChromeAppSortingDefaultOrdinalNoCollision() {}
928 ~ChromeAppSortingDefaultOrdinalNoCollision() override {} 884 ~ChromeAppSortingDefaultOrdinalNoCollision() override {}
929 885
930 void Verify() override { 886 void Verify() override {
931 AppSorting* app_sorting = prefs()->app_sorting();
932
933 // Use the default page. 887 // Use the default page.
934 EXPECT_TRUE(app_sorting->GetPageOrdinal(app_->id()).Equals( 888 EXPECT_TRUE(app_sorting()->GetPageOrdinal(app_->id()).Equals(
935 default_page_ordinal_)); 889 default_page_ordinal_));
936 // Not using the default app launch ordinal because of the collision. 890 // Not using the default app launch ordinal because of the collision.
937 EXPECT_FALSE(app_sorting->GetAppLaunchOrdinal(app_->id()).Equals( 891 EXPECT_FALSE(app_sorting()->GetAppLaunchOrdinal(app_->id()).Equals(
938 default_app_launch_ordinal_)); 892 default_app_launch_ordinal_));
939 } 893 }
940 894
941 protected: 895 protected:
942 void SetupUserOrdinals() override { 896 void SetupUserOrdinals() override {
943 other_app_ = prefs_.AddApp("other_app"); 897 other_app_ = prefs_.AddApp("other_app");
944 // Creates a collision. 898 // Creates a collision.
945 AppSorting* app_sorting = prefs()->app_sorting(); 899 app_sorting()->SetPageOrdinal(other_app_->id(), default_page_ordinal_);
946 app_sorting->SetPageOrdinal(other_app_->id(), default_page_ordinal_); 900 app_sorting()->SetAppLaunchOrdinal(other_app_->id(),
947 app_sorting->SetAppLaunchOrdinal(other_app_->id(), 901 default_app_launch_ordinal_);
948 default_app_launch_ordinal_);
949 902
950 yet_another_app_ = prefs_.AddApp("yet_aother_app"); 903 yet_another_app_ = prefs_.AddApp("yet_aother_app");
951 app_sorting->SetPageOrdinal(yet_another_app_->id(), default_page_ordinal_); 904 app_sorting()->SetPageOrdinal(yet_another_app_->id(),
952 app_sorting->SetAppLaunchOrdinal(yet_another_app_->id(), 905 default_page_ordinal_);
953 default_app_launch_ordinal_); 906 app_sorting()->SetAppLaunchOrdinal(yet_another_app_->id(),
907 default_app_launch_ordinal_);
954 } 908 }
955 909
956 private: 910 private:
957 scoped_refptr<Extension> other_app_; 911 scoped_refptr<Extension> other_app_;
958 scoped_refptr<Extension> yet_another_app_; 912 scoped_refptr<Extension> yet_another_app_;
959 }; 913 };
960 TEST_F(ChromeAppSortingDefaultOrdinalNoCollision, 914 TEST_F(ChromeAppSortingDefaultOrdinalNoCollision,
961 ChromeAppSortingDefaultOrdinalNoCollision) {} 915 ChromeAppSortingDefaultOrdinalNoCollision) {}
962 916
963 // Tests that SetExtensionVisible() correctly hides and unhides extensions. 917 // Tests that SetExtensionVisible() correctly hides and unhides extensions.
964 class ChromeAppSortingSetExtensionVisible : public ChromeAppSortingTest { 918 class ChromeAppSortingSetExtensionVisible : public ExtensionPrefsTest {
965 public: 919 public:
966 ChromeAppSortingSetExtensionVisible() {} 920 ChromeAppSortingSetExtensionVisible() {}
967 ~ChromeAppSortingSetExtensionVisible() override {} 921 ~ChromeAppSortingSetExtensionVisible() override {}
968 922
969 void Initialize() override { 923 void Initialize() override {
970 first_app_ = prefs_.AddApp("first_app"); 924 first_app_ = prefs_.AddApp("first_app");
971 second_app_ = prefs_.AddApp("second_app"); 925 second_app_ = prefs_.AddApp("second_app");
972 } 926 }
973 927
974 void Verify() override { 928 void Verify() override {
(...skipping 17 matching lines...) Expand all
992 946
993 private: 947 private:
994 scoped_refptr<Extension> first_app_; 948 scoped_refptr<Extension> first_app_;
995 scoped_refptr<Extension> second_app_; 949 scoped_refptr<Extension> second_app_;
996 }; 950 };
997 TEST_F(ChromeAppSortingSetExtensionVisible, 951 TEST_F(ChromeAppSortingSetExtensionVisible,
998 ChromeAppSortingSetExtensionVisible) { 952 ChromeAppSortingSetExtensionVisible) {
999 } 953 }
1000 954
1001 } // namespace extensions 955 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698