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

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

Powered by Google App Engine
This is Rietveld 408576698