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

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

Powered by Google App Engine
This is Rietveld 408576698