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

Side by Side Diff: chrome/browser/profiles/profile_shortcut_manager_unittest_win.cc

Issue 2211473003: Remove calls to deprecated MessageLoop methods on Windows and Linux. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 3 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/base_paths.h" 7 #include "base/base_paths.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 69
70 // Delete all profiles and ensure their shortcuts got removed. 70 // Delete all profiles and ensure their shortcuts got removed.
71 const size_t num_profiles = 71 const size_t num_profiles =
72 profile_attributes_storage_->GetNumberOfProfiles(); 72 profile_attributes_storage_->GetNumberOfProfiles();
73 for (size_t i = 0; i < num_profiles; ++i) { 73 for (size_t i = 0; i < num_profiles; ++i) {
74 ProfileAttributesEntry* entry = 74 ProfileAttributesEntry* entry =
75 profile_attributes_storage_->GetAllProfilesAttributes().front(); 75 profile_attributes_storage_->GetAllProfilesAttributes().front();
76 const base::FilePath profile_path = entry->GetPath(); 76 const base::FilePath profile_path = entry->GetPath();
77 base::string16 profile_name = entry->GetName(); 77 base::string16 profile_name = entry->GetName();
78 profile_attributes_storage_->RemoveProfile(profile_path); 78 profile_attributes_storage_->RemoveProfile(profile_path);
79 RunPendingTasks(); 79 base::RunLoop().RunUntilIdle();
80 ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_name)); 80 ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_name));
81 // The icon file is not deleted until the profile directory is deleted. 81 // The icon file is not deleted until the profile directory is deleted.
82 const base::FilePath icon_path = 82 const base::FilePath icon_path =
83 profiles::internal::GetProfileIconPath(profile_path); 83 profiles::internal::GetProfileIconPath(profile_path);
84 ASSERT_TRUE(base::PathExists(icon_path)); 84 ASSERT_TRUE(base::PathExists(icon_path));
85 } 85 }
86 scoped_com_.reset(); 86 scoped_com_.reset();
87 } 87 }
88 88
89 base::FilePath CreateProfileDirectory(const base::string16& profile_name) { 89 base::FilePath CreateProfileDirectory(const base::string16& profile_name) {
90 const base::FilePath profile_path = 90 const base::FilePath profile_path =
91 profile_manager_->profiles_dir().Append(profile_name); 91 profile_manager_->profiles_dir().Append(profile_name);
92 base::CreateDirectory(profile_path); 92 base::CreateDirectory(profile_path);
93 return profile_path; 93 return profile_path;
94 } 94 }
95 95
96 void RunPendingTasks() {
97 base::ThreadTaskRunnerHandle::Get()->PostTask(
98 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
99 base::MessageLoop::current()->Run();
100 }
101
102 void SetupDefaultProfileShortcut(const tracked_objects::Location& location) { 96 void SetupDefaultProfileShortcut(const tracked_objects::Location& location) {
103 ASSERT_EQ(0u, profile_attributes_storage_->GetNumberOfProfiles()) 97 ASSERT_EQ(0u, profile_attributes_storage_->GetNumberOfProfiles())
104 << location.ToString(); 98 << location.ToString();
105 ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_)) 99 ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_))
106 << location.ToString(); 100 << location.ToString();
107 profile_attributes_storage_->AddProfile(profile_1_path_, profile_1_name_, 101 profile_attributes_storage_->AddProfile(profile_1_path_, profile_1_name_,
108 std::string(), base::string16(), 0, 102 std::string(), base::string16(), 0,
109 std::string()); 103 std::string());
110 // Also create a non-badged shortcut for Chrome, which is conveniently done 104 // Also create a non-badged shortcut for Chrome, which is conveniently done
111 // by |CreateProfileShortcut()| since there is only one profile. 105 // by |CreateProfileShortcut()| since there is only one profile.
112 profile_shortcut_manager_->CreateProfileShortcut(profile_1_path_); 106 profile_shortcut_manager_->CreateProfileShortcut(profile_1_path_);
113 RunPendingTasks(); 107 base::RunLoop().RunUntilIdle();
114 // Verify that there's now a shortcut with no profile information. 108 // Verify that there's now a shortcut with no profile information.
115 ValidateNonProfileShortcut(location); 109 ValidateNonProfileShortcut(location);
116 } 110 }
117 111
118 void SetupAndCreateTwoShortcuts(const tracked_objects::Location& location) { 112 void SetupAndCreateTwoShortcuts(const tracked_objects::Location& location) {
119 SetupDefaultProfileShortcut(location); 113 SetupDefaultProfileShortcut(location);
120 CreateProfileWithShortcut(location, profile_2_name_, profile_2_path_); 114 CreateProfileWithShortcut(location, profile_2_name_, profile_2_path_);
121 ValidateProfileShortcut(location, profile_1_name_, profile_1_path_); 115 ValidateProfileShortcut(location, profile_1_name_, profile_1_path_);
122 } 116 }
123 117
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 184
191 void CreateProfileWithShortcut(const tracked_objects::Location& location, 185 void CreateProfileWithShortcut(const tracked_objects::Location& location,
192 const base::string16& profile_name, 186 const base::string16& profile_name,
193 const base::FilePath& profile_path) { 187 const base::FilePath& profile_path) {
194 ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_name)) 188 ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_name))
195 << location.ToString(); 189 << location.ToString();
196 profile_attributes_storage_->AddProfile(profile_path, profile_name, 190 profile_attributes_storage_->AddProfile(profile_path, profile_name,
197 std::string(), base::string16(), 0, 191 std::string(), base::string16(), 0,
198 std::string()); 192 std::string());
199 profile_shortcut_manager_->CreateProfileShortcut(profile_path); 193 profile_shortcut_manager_->CreateProfileShortcut(profile_path);
200 RunPendingTasks(); 194 base::RunLoop().RunUntilIdle();
201 ValidateProfileShortcut(location, profile_name, profile_path); 195 ValidateProfileShortcut(location, profile_name, profile_path);
202 } 196 }
203 197
204 // Creates a regular (non-profile) desktop shortcut with the given name and 198 // Creates a regular (non-profile) desktop shortcut with the given name and
205 // returns its path. Fails the test if an error occurs. 199 // returns its path. Fails the test if an error occurs.
206 base::FilePath CreateRegularShortcutWithName( 200 base::FilePath CreateRegularShortcutWithName(
207 const tracked_objects::Location& location, 201 const tracked_objects::Location& location,
208 const base::string16& shortcut_name) { 202 const base::string16& shortcut_name) {
209 const base::FilePath shortcut_path = 203 const base::FilePath shortcut_path =
210 GetUserShortcutsDirectory().Append(shortcut_name + installer::kLnkExt); 204 GetUserShortcutsDirectory().Append(shortcut_name + installer::kLnkExt);
(...skipping 29 matching lines...) Expand all
240 } 234 }
241 235
242 void RenameProfile(const tracked_objects::Location& location, 236 void RenameProfile(const tracked_objects::Location& location,
243 const base::FilePath& profile_path, 237 const base::FilePath& profile_path,
244 const base::string16& new_profile_name) { 238 const base::string16& new_profile_name) {
245 ProfileAttributesEntry* entry; 239 ProfileAttributesEntry* entry;
246 ASSERT_TRUE(profile_attributes_storage_-> 240 ASSERT_TRUE(profile_attributes_storage_->
247 GetProfileAttributesWithPath(profile_path, &entry)); 241 GetProfileAttributesWithPath(profile_path, &entry));
248 ASSERT_NE(entry->GetName(), new_profile_name); 242 ASSERT_NE(entry->GetName(), new_profile_name);
249 entry->SetName(new_profile_name); 243 entry->SetName(new_profile_name);
250 RunPendingTasks(); 244 base::RunLoop().RunUntilIdle();
251 } 245 }
252 246
253 BrowserDistribution* GetDistribution() { 247 BrowserDistribution* GetDistribution() {
254 return BrowserDistribution::GetDistribution(); 248 return BrowserDistribution::GetDistribution();
255 } 249 }
256 250
257 base::FilePath GetExePath() { 251 base::FilePath GetExePath() {
258 base::FilePath exe_path; 252 base::FilePath exe_path;
259 EXPECT_TRUE(PathService::Get(base::FILE_EXE, &exe_path)); 253 EXPECT_TRUE(PathService::Get(base::FILE_EXE, &exe_path));
260 return exe_path; 254 return exe_path;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 355
362 TEST_F(ProfileShortcutManagerTest, CreateSecondProfileBadgesFirstShortcut) { 356 TEST_F(ProfileShortcutManagerTest, CreateSecondProfileBadgesFirstShortcut) {
363 SetupDefaultProfileShortcut(FROM_HERE); 357 SetupDefaultProfileShortcut(FROM_HERE);
364 // Assert that a shortcut without a profile name exists. 358 // Assert that a shortcut without a profile name exists.
365 ASSERT_TRUE(ProfileShortcutExistsAtDefaultPath(base::string16())); 359 ASSERT_TRUE(ProfileShortcutExistsAtDefaultPath(base::string16()));
366 360
367 // Create a second profile without a shortcut. 361 // Create a second profile without a shortcut.
368 profile_attributes_storage_->AddProfile(profile_2_path_, profile_2_name_, 362 profile_attributes_storage_->AddProfile(profile_2_path_, profile_2_name_,
369 std::string(), base::string16(), 0, 363 std::string(), base::string16(), 0,
370 std::string()); 364 std::string());
371 RunPendingTasks(); 365 base::RunLoop().RunUntilIdle();
372 366
373 // Ensure that the second profile doesn't have a shortcut and that the first 367 // Ensure that the second profile doesn't have a shortcut and that the first
374 // profile's shortcut got renamed and badged. 368 // profile's shortcut got renamed and badged.
375 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_)); 369 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
376 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16())); 370 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16()));
377 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_); 371 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_);
378 } 372 }
379 373
380 TEST_F(ProfileShortcutManagerTest, DesktopShortcutsDeleteSecondToLast) { 374 TEST_F(ProfileShortcutManagerTest, DesktopShortcutsDeleteSecondToLast) {
381 SetupAndCreateTwoShortcuts(FROM_HERE); 375 SetupAndCreateTwoShortcuts(FROM_HERE);
382 376
383 // Delete one shortcut. 377 // Delete one shortcut.
384 profile_attributes_storage_->RemoveProfile(profile_2_path_); 378 profile_attributes_storage_->RemoveProfile(profile_2_path_);
385 RunPendingTasks(); 379 base::RunLoop().RunUntilIdle();
386 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_)); 380 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
387 381
388 // Verify that the profile name has been removed from the remaining shortcut. 382 // Verify that the profile name has been removed from the remaining shortcut.
389 ValidateNonProfileShortcut(FROM_HERE); 383 ValidateNonProfileShortcut(FROM_HERE);
390 // Verify that an additional shortcut, with the default profile's name does 384 // Verify that an additional shortcut, with the default profile's name does
391 // not exist. 385 // not exist.
392 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_)); 386 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_));
393 } 387 }
394 388
395 TEST_F(ProfileShortcutManagerTest, DeleteSecondToLastProfileWithoutShortcut) { 389 TEST_F(ProfileShortcutManagerTest, DeleteSecondToLastProfileWithoutShortcut) {
396 SetupAndCreateTwoShortcuts(FROM_HERE); 390 SetupAndCreateTwoShortcuts(FROM_HERE);
397 391
398 const base::FilePath profile_1_shortcut_path = 392 const base::FilePath profile_1_shortcut_path =
399 GetDefaultShortcutPathForProfile(profile_1_name_); 393 GetDefaultShortcutPathForProfile(profile_1_name_);
400 const base::FilePath profile_2_shortcut_path = 394 const base::FilePath profile_2_shortcut_path =
401 GetDefaultShortcutPathForProfile(profile_2_name_); 395 GetDefaultShortcutPathForProfile(profile_2_name_);
402 396
403 // Delete the shortcut for the first profile, but keep the one for the 2nd. 397 // Delete the shortcut for the first profile, but keep the one for the 2nd.
404 ASSERT_TRUE(base::DeleteFile(profile_1_shortcut_path, false)); 398 ASSERT_TRUE(base::DeleteFile(profile_1_shortcut_path, false));
405 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path)); 399 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
406 ASSERT_TRUE(base::PathExists(profile_2_shortcut_path)); 400 ASSERT_TRUE(base::PathExists(profile_2_shortcut_path));
407 401
408 // Delete the profile that doesn't have a shortcut. 402 // Delete the profile that doesn't have a shortcut.
409 profile_attributes_storage_->RemoveProfile(profile_1_path_); 403 profile_attributes_storage_->RemoveProfile(profile_1_path_);
410 RunPendingTasks(); 404 base::RunLoop().RunUntilIdle();
411 405
412 // Verify that the remaining shortcut does not have a profile name. 406 // Verify that the remaining shortcut does not have a profile name.
413 ValidateNonProfileShortcut(FROM_HERE); 407 ValidateNonProfileShortcut(FROM_HERE);
414 // Verify that shortcuts with profile names do not exist. 408 // Verify that shortcuts with profile names do not exist.
415 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path)); 409 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path));
416 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path)); 410 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path));
417 } 411 }
418 412
419 TEST_F(ProfileShortcutManagerTest, DeleteSecondToLastProfileWithShortcut) { 413 TEST_F(ProfileShortcutManagerTest, DeleteSecondToLastProfileWithShortcut) {
420 SetupAndCreateTwoShortcuts(FROM_HERE); 414 SetupAndCreateTwoShortcuts(FROM_HERE);
421 415
422 const base::FilePath profile_1_shortcut_path = 416 const base::FilePath profile_1_shortcut_path =
423 GetDefaultShortcutPathForProfile(profile_1_name_); 417 GetDefaultShortcutPathForProfile(profile_1_name_);
424 const base::FilePath profile_2_shortcut_path = 418 const base::FilePath profile_2_shortcut_path =
425 GetDefaultShortcutPathForProfile(profile_2_name_); 419 GetDefaultShortcutPathForProfile(profile_2_name_);
426 420
427 // Delete the shortcut for the first profile, but keep the one for the 2nd. 421 // Delete the shortcut for the first profile, but keep the one for the 2nd.
428 ASSERT_TRUE(base::DeleteFile(profile_1_shortcut_path, false)); 422 ASSERT_TRUE(base::DeleteFile(profile_1_shortcut_path, false));
429 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path)); 423 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
430 ASSERT_TRUE(base::PathExists(profile_2_shortcut_path)); 424 ASSERT_TRUE(base::PathExists(profile_2_shortcut_path));
431 425
432 // Delete the profile that has a shortcut. 426 // Delete the profile that has a shortcut.
433 profile_attributes_storage_->RemoveProfile(profile_2_path_); 427 profile_attributes_storage_->RemoveProfile(profile_2_path_);
434 RunPendingTasks(); 428 base::RunLoop().RunUntilIdle();
435 429
436 // Verify that the remaining shortcut does not have a profile name. 430 // Verify that the remaining shortcut does not have a profile name.
437 ValidateNonProfileShortcut(FROM_HERE); 431 ValidateNonProfileShortcut(FROM_HERE);
438 // Verify that shortcuts with profile names do not exist. 432 // Verify that shortcuts with profile names do not exist.
439 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path)); 433 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path));
440 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path)); 434 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path));
441 } 435 }
442 436
443 TEST_F(ProfileShortcutManagerTest, DeleteOnlyProfileWithShortcuts) { 437 TEST_F(ProfileShortcutManagerTest, DeleteOnlyProfileWithShortcuts) {
444 SetupAndCreateTwoShortcuts(FROM_HERE); 438 SetupAndCreateTwoShortcuts(FROM_HERE);
(...skipping 14 matching lines...) Expand all
459 453
460 // Only the shortcut to the third profile should exist. 454 // Only the shortcut to the third profile should exist.
461 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path)); 455 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
462 ASSERT_FALSE(base::PathExists(profile_2_shortcut_path)); 456 ASSERT_FALSE(base::PathExists(profile_2_shortcut_path));
463 ASSERT_FALSE(base::PathExists(non_profile_shortcut_path)); 457 ASSERT_FALSE(base::PathExists(non_profile_shortcut_path));
464 ASSERT_TRUE(base::PathExists(profile_3_shortcut_path)); 458 ASSERT_TRUE(base::PathExists(profile_3_shortcut_path));
465 459
466 // Delete the third profile and check that its shortcut is gone and no 460 // Delete the third profile and check that its shortcut is gone and no
467 // shortcuts have been re-created. 461 // shortcuts have been re-created.
468 profile_attributes_storage_->RemoveProfile(profile_3_path_); 462 profile_attributes_storage_->RemoveProfile(profile_3_path_);
469 RunPendingTasks(); 463 base::RunLoop().RunUntilIdle();
470 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path)); 464 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
471 ASSERT_FALSE(base::PathExists(profile_2_shortcut_path)); 465 ASSERT_FALSE(base::PathExists(profile_2_shortcut_path));
472 ASSERT_FALSE(base::PathExists(profile_3_shortcut_path)); 466 ASSERT_FALSE(base::PathExists(profile_3_shortcut_path));
473 ASSERT_FALSE(base::PathExists(non_profile_shortcut_path)); 467 ASSERT_FALSE(base::PathExists(non_profile_shortcut_path));
474 } 468 }
475 469
476 TEST_F(ProfileShortcutManagerTest, DesktopShortcutsCreateSecond) { 470 TEST_F(ProfileShortcutManagerTest, DesktopShortcutsCreateSecond) {
477 SetupAndCreateTwoShortcuts(FROM_HERE); 471 SetupAndCreateTwoShortcuts(FROM_HERE);
478 472
479 // Delete one shortcut. 473 // Delete one shortcut.
480 profile_attributes_storage_->RemoveProfile(profile_2_path_); 474 profile_attributes_storage_->RemoveProfile(profile_2_path_);
481 RunPendingTasks(); 475 base::RunLoop().RunUntilIdle();
482 476
483 // Verify that a default shortcut exists (no profile name/avatar). 477 // Verify that a default shortcut exists (no profile name/avatar).
484 ValidateNonProfileShortcut(FROM_HERE); 478 ValidateNonProfileShortcut(FROM_HERE);
485 // Verify that an additional shortcut, with the first profile's name does 479 // Verify that an additional shortcut, with the first profile's name does
486 // not exist. 480 // not exist.
487 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_)); 481 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_));
488 482
489 // Create a second profile and shortcut. 483 // Create a second profile and shortcut.
490 CreateProfileWithShortcut(FROM_HERE, profile_2_name_, profile_2_path_); 484 CreateProfileWithShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
491 485
492 // Verify that the original shortcut received the profile's name. 486 // Verify that the original shortcut received the profile's name.
493 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_); 487 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_);
494 // Verify that a default shortcut no longer exists. 488 // Verify that a default shortcut no longer exists.
495 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16())); 489 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16()));
496 } 490 }
497 491
498 TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcuts) { 492 TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcuts) {
499 SetupAndCreateTwoShortcuts(FROM_HERE); 493 SetupAndCreateTwoShortcuts(FROM_HERE);
500 494
501 const base::FilePath profile_2_shortcut_path_1 = 495 const base::FilePath profile_2_shortcut_path_1 =
502 GetDefaultShortcutPathForProfile(profile_2_name_); 496 GetDefaultShortcutPathForProfile(profile_2_name_);
503 const base::FilePath profile_2_shortcut_path_2 = 497 const base::FilePath profile_2_shortcut_path_2 =
504 GetUserShortcutsDirectory().Append(L"MyChrome.lnk"); 498 GetUserShortcutsDirectory().Append(L"MyChrome.lnk");
505 ASSERT_TRUE(base::Move(profile_2_shortcut_path_1, 499 ASSERT_TRUE(base::Move(profile_2_shortcut_path_1,
506 profile_2_shortcut_path_2)); 500 profile_2_shortcut_path_2));
507 501
508 // Ensure that a new shortcut does not get made if the old one was renamed. 502 // Ensure that a new shortcut does not get made if the old one was renamed.
509 profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_); 503 profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_);
510 RunPendingTasks(); 504 base::RunLoop().RunUntilIdle();
511 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_)); 505 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
512 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2, 506 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2,
513 profile_2_path_); 507 profile_2_path_);
514 508
515 // Delete the renamed shortcut and try to create it again, which should work. 509 // Delete the renamed shortcut and try to create it again, which should work.
516 ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path_2, false)); 510 ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path_2, false));
517 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2)); 511 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2));
518 profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_); 512 profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_);
519 RunPendingTasks(); 513 base::RunLoop().RunUntilIdle();
520 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); 514 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
521 } 515 }
522 516
523 TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcutsGetDeleted) { 517 TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcutsGetDeleted) {
524 SetupAndCreateTwoShortcuts(FROM_HERE); 518 SetupAndCreateTwoShortcuts(FROM_HERE);
525 519
526 const base::FilePath profile_2_shortcut_path_1 = 520 const base::FilePath profile_2_shortcut_path_1 =
527 GetDefaultShortcutPathForProfile(profile_2_name_); 521 GetDefaultShortcutPathForProfile(profile_2_name_);
528 const base::FilePath profile_2_shortcut_path_2 = 522 const base::FilePath profile_2_shortcut_path_2 =
529 GetUserShortcutsDirectory().Append(L"MyChrome.lnk"); 523 GetUserShortcutsDirectory().Append(L"MyChrome.lnk");
530 // Make a copy of the shortcut. 524 // Make a copy of the shortcut.
531 ASSERT_TRUE(base::CopyFile(profile_2_shortcut_path_1, 525 ASSERT_TRUE(base::CopyFile(profile_2_shortcut_path_1,
532 profile_2_shortcut_path_2)); 526 profile_2_shortcut_path_2));
533 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_1, 527 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_1,
534 profile_2_path_); 528 profile_2_path_);
535 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2, 529 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2,
536 profile_2_path_); 530 profile_2_path_);
537 531
538 // Also, copy the shortcut for the first user and ensure it gets preserved. 532 // Also, copy the shortcut for the first user and ensure it gets preserved.
539 const base::FilePath preserved_profile_1_shortcut_path = 533 const base::FilePath preserved_profile_1_shortcut_path =
540 GetUserShortcutsDirectory().Append(L"Preserved.lnk"); 534 GetUserShortcutsDirectory().Append(L"Preserved.lnk");
541 ASSERT_TRUE(base::CopyFile( 535 ASSERT_TRUE(base::CopyFile(
542 GetDefaultShortcutPathForProfile(profile_1_name_), 536 GetDefaultShortcutPathForProfile(profile_1_name_),
543 preserved_profile_1_shortcut_path)); 537 preserved_profile_1_shortcut_path));
544 EXPECT_TRUE(base::PathExists(preserved_profile_1_shortcut_path)); 538 EXPECT_TRUE(base::PathExists(preserved_profile_1_shortcut_path));
545 539
546 // Delete the profile and ensure both shortcuts were also deleted. 540 // Delete the profile and ensure both shortcuts were also deleted.
547 profile_attributes_storage_->RemoveProfile(profile_2_path_); 541 profile_attributes_storage_->RemoveProfile(profile_2_path_);
548 RunPendingTasks(); 542 base::RunLoop().RunUntilIdle();
549 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_1)); 543 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_1));
550 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2)); 544 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2));
551 ValidateNonProfileShortcutAtPath(FROM_HERE, 545 ValidateNonProfileShortcutAtPath(FROM_HERE,
552 preserved_profile_1_shortcut_path); 546 preserved_profile_1_shortcut_path);
553 } 547 }
554 548
555 TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcutsAfterProfileRename) { 549 TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcutsAfterProfileRename) {
556 SetupAndCreateTwoShortcuts(FROM_HERE); 550 SetupAndCreateTwoShortcuts(FROM_HERE);
557 551
558 const base::FilePath profile_2_shortcut_path_1 = 552 const base::FilePath profile_2_shortcut_path_1 =
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 ASSERT_TRUE(base::CopyFile(profile_2_shortcut_path_1, 630 ASSERT_TRUE(base::CopyFile(profile_2_shortcut_path_1,
637 profile_2_shortcut_path_2)); 631 profile_2_shortcut_path_2));
638 ValidateProfileShortcutAtPath(FROM_HERE, profile_1_shortcut_path_2, 632 ValidateProfileShortcutAtPath(FROM_HERE, profile_1_shortcut_path_2,
639 profile_1_path_); 633 profile_1_path_);
640 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2, 634 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2,
641 profile_2_path_); 635 profile_2_path_);
642 636
643 // Delete shortcuts for profile 1 and ensure that they got deleted while the 637 // Delete shortcuts for profile 1 and ensure that they got deleted while the
644 // shortcuts for profile 2 were kept. 638 // shortcuts for profile 2 were kept.
645 profile_shortcut_manager_->RemoveProfileShortcuts(profile_1_path_); 639 profile_shortcut_manager_->RemoveProfileShortcuts(profile_1_path_);
646 RunPendingTasks(); 640 base::RunLoop().RunUntilIdle();
647 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_1)); 641 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_1));
648 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_2)); 642 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_2));
649 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_1, 643 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_1,
650 profile_2_path_); 644 profile_2_path_);
651 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2, 645 ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2,
652 profile_2_path_); 646 profile_2_path_);
653 } 647 }
654 648
655 TEST_F(ProfileShortcutManagerTest, HasProfileShortcuts) { 649 TEST_F(ProfileShortcutManagerTest, HasProfileShortcuts) {
656 SetupAndCreateTwoShortcuts(FROM_HERE); 650 SetupAndCreateTwoShortcuts(FROM_HERE);
657 651
658 struct HasShortcutsResult { 652 struct HasShortcutsResult {
659 bool has_shortcuts; 653 bool has_shortcuts;
660 void set_has_shortcuts(bool value) { has_shortcuts = value; } 654 void set_has_shortcuts(bool value) { has_shortcuts = value; }
661 } result = { false }; 655 } result = { false };
662 656
663 const base::Callback<void(bool)> callback = 657 const base::Callback<void(bool)> callback =
664 base::Bind(&HasShortcutsResult::set_has_shortcuts, 658 base::Bind(&HasShortcutsResult::set_has_shortcuts,
665 base::Unretained(&result)); 659 base::Unretained(&result));
666 660
667 // Profile 2 should have a shortcut initially. 661 // Profile 2 should have a shortcut initially.
668 profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback); 662 profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback);
669 RunPendingTasks(); 663 base::RunLoop().RunUntilIdle();
670 EXPECT_TRUE(result.has_shortcuts); 664 EXPECT_TRUE(result.has_shortcuts);
671 665
672 // Delete the shortcut and check that the function returns false. 666 // Delete the shortcut and check that the function returns false.
673 const base::FilePath profile_2_shortcut_path = 667 const base::FilePath profile_2_shortcut_path =
674 GetDefaultShortcutPathForProfile(profile_2_name_); 668 GetDefaultShortcutPathForProfile(profile_2_name_);
675 ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path, false)); 669 ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path, false));
676 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path)); 670 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path));
677 profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback); 671 profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback);
678 RunPendingTasks(); 672 base::RunLoop().RunUntilIdle();
679 EXPECT_FALSE(result.has_shortcuts); 673 EXPECT_FALSE(result.has_shortcuts);
680 } 674 }
681 675
682 TEST_F(ProfileShortcutManagerTest, ProfileShortcutsWithSystemLevelShortcut) { 676 TEST_F(ProfileShortcutManagerTest, ProfileShortcutsWithSystemLevelShortcut) {
683 const base::FilePath system_level_shortcut_path = 677 const base::FilePath system_level_shortcut_path =
684 CreateRegularSystemLevelShortcut(FROM_HERE); 678 CreateRegularSystemLevelShortcut(FROM_HERE);
685 679
686 // Create the initial profile. 680 // Create the initial profile.
687 profile_attributes_storage_->AddProfile(profile_1_path_, profile_1_name_, 681 profile_attributes_storage_->AddProfile(profile_1_path_, profile_1_name_,
688 std::string(), base::string16(), 0, 682 std::string(), base::string16(), 0,
689 std::string()); 683 std::string());
690 RunPendingTasks(); 684 base::RunLoop().RunUntilIdle();
691 ASSERT_EQ(1u, profile_attributes_storage_->GetNumberOfProfiles()); 685 ASSERT_EQ(1u, profile_attributes_storage_->GetNumberOfProfiles());
692 686
693 // Ensure system-level continues to exist and user-level was not created. 687 // Ensure system-level continues to exist and user-level was not created.
694 EXPECT_TRUE(base::PathExists(system_level_shortcut_path)); 688 EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
695 EXPECT_FALSE(base::PathExists( 689 EXPECT_FALSE(base::PathExists(
696 GetDefaultShortcutPathForProfile(base::string16()))); 690 GetDefaultShortcutPathForProfile(base::string16())));
697 691
698 // Create another profile with a shortcut and ensure both profiles receive 692 // Create another profile with a shortcut and ensure both profiles receive
699 // user-level profile shortcuts and the system-level one still exists. 693 // user-level profile shortcuts and the system-level one still exists.
700 CreateProfileWithShortcut(FROM_HERE, profile_2_name_, profile_2_path_); 694 CreateProfileWithShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
701 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_); 695 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_);
702 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); 696 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
703 EXPECT_TRUE(base::PathExists(system_level_shortcut_path)); 697 EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
704 698
705 // Create a third profile without a shortcut and ensure it doesn't get one. 699 // Create a third profile without a shortcut and ensure it doesn't get one.
706 profile_attributes_storage_->AddProfile(profile_3_path_, profile_3_name_, 700 profile_attributes_storage_->AddProfile(profile_3_path_, profile_3_name_,
707 std::string(), base::string16(), 0, 701 std::string(), base::string16(), 0,
708 std::string()); 702 std::string());
709 RunPendingTasks(); 703 base::RunLoop().RunUntilIdle();
710 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_)); 704 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
711 705
712 // Ensure that changing the avatar icon and the name does not result in a 706 // Ensure that changing the avatar icon and the name does not result in a
713 // shortcut being created. 707 // shortcut being created.
714 ProfileAttributesEntry* entry_3; 708 ProfileAttributesEntry* entry_3;
715 ASSERT_TRUE(profile_attributes_storage_-> 709 ASSERT_TRUE(profile_attributes_storage_->
716 GetProfileAttributesWithPath(profile_3_path_, &entry_3)); 710 GetProfileAttributesWithPath(profile_3_path_, &entry_3));
717 entry_3->SetAvatarIconIndex(3u); 711 entry_3->SetAvatarIconIndex(3u);
718 RunPendingTasks(); 712 base::RunLoop().RunUntilIdle();
719 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_)); 713 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
720 714
721 const base::string16 new_profile_3_name = L"New Name 3"; 715 const base::string16 new_profile_3_name = L"New Name 3";
722 entry_3->SetName(new_profile_3_name); 716 entry_3->SetName(new_profile_3_name);
723 RunPendingTasks(); 717 base::RunLoop().RunUntilIdle();
724 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_)); 718 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
725 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_3_name)); 719 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_3_name));
726 720
727 // Rename the second profile and ensure its shortcut got renamed. 721 // Rename the second profile and ensure its shortcut got renamed.
728 const base::string16 new_profile_2_name = L"New Name 2"; 722 const base::string16 new_profile_2_name = L"New Name 2";
729 ProfileAttributesEntry* entry_2; 723 ProfileAttributesEntry* entry_2;
730 ASSERT_TRUE(profile_attributes_storage_-> 724 ASSERT_TRUE(profile_attributes_storage_->
731 GetProfileAttributesWithPath(profile_2_path_, &entry_2)); 725 GetProfileAttributesWithPath(profile_2_path_, &entry_2));
732 entry_2->SetName(new_profile_2_name); 726 entry_2->SetName(new_profile_2_name);
733 RunPendingTasks(); 727 base::RunLoop().RunUntilIdle();
734 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_)); 728 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
735 ValidateProfileShortcut(FROM_HERE, new_profile_2_name, profile_2_path_); 729 ValidateProfileShortcut(FROM_HERE, new_profile_2_name, profile_2_path_);
736 } 730 }
737 731
738 TEST_F(ProfileShortcutManagerTest, 732 TEST_F(ProfileShortcutManagerTest,
739 DeleteSecondToLastProfileWithSystemLevelShortcut) { 733 DeleteSecondToLastProfileWithSystemLevelShortcut) {
740 SetupAndCreateTwoShortcuts(FROM_HERE); 734 SetupAndCreateTwoShortcuts(FROM_HERE);
741 735
742 const base::FilePath system_level_shortcut_path = 736 const base::FilePath system_level_shortcut_path =
743 CreateRegularSystemLevelShortcut(FROM_HERE); 737 CreateRegularSystemLevelShortcut(FROM_HERE);
744 738
745 // Delete a profile and verify that only the system-level shortcut still 739 // Delete a profile and verify that only the system-level shortcut still
746 // exists. 740 // exists.
747 profile_attributes_storage_->RemoveProfile(profile_1_path_); 741 profile_attributes_storage_->RemoveProfile(profile_1_path_);
748 RunPendingTasks(); 742 base::RunLoop().RunUntilIdle();
749 743
750 EXPECT_TRUE(base::PathExists(system_level_shortcut_path)); 744 EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
751 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16())); 745 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16()));
752 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_)); 746 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_1_name_));
753 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_)); 747 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
754 } 748 }
755 749
756 TEST_F(ProfileShortcutManagerTest, 750 TEST_F(ProfileShortcutManagerTest,
757 DeleteSecondToLastProfileWithShortcutWhenSystemLevelShortcutExists) { 751 DeleteSecondToLastProfileWithShortcutWhenSystemLevelShortcutExists) {
758 SetupAndCreateTwoShortcuts(FROM_HERE); 752 SetupAndCreateTwoShortcuts(FROM_HERE);
759 753
760 const base::FilePath profile_1_shortcut_path = 754 const base::FilePath profile_1_shortcut_path =
761 GetDefaultShortcutPathForProfile(profile_1_name_); 755 GetDefaultShortcutPathForProfile(profile_1_name_);
762 const base::FilePath profile_2_shortcut_path = 756 const base::FilePath profile_2_shortcut_path =
763 GetDefaultShortcutPathForProfile(profile_2_name_); 757 GetDefaultShortcutPathForProfile(profile_2_name_);
764 758
765 // Delete the shortcut for the first profile, but keep the one for the 2nd. 759 // Delete the shortcut for the first profile, but keep the one for the 2nd.
766 ASSERT_TRUE(base::DeleteFile(profile_1_shortcut_path, false)); 760 ASSERT_TRUE(base::DeleteFile(profile_1_shortcut_path, false));
767 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path)); 761 ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
768 ASSERT_TRUE(base::PathExists(profile_2_shortcut_path)); 762 ASSERT_TRUE(base::PathExists(profile_2_shortcut_path));
769 763
770 const base::FilePath system_level_shortcut_path = 764 const base::FilePath system_level_shortcut_path =
771 CreateRegularSystemLevelShortcut(FROM_HERE); 765 CreateRegularSystemLevelShortcut(FROM_HERE);
772 766
773 // Delete the profile that has a shortcut, which will exercise the non-profile 767 // Delete the profile that has a shortcut, which will exercise the non-profile
774 // shortcut creation path in |DeleteDesktopShortcuts()|, which is 768 // shortcut creation path in |DeleteDesktopShortcuts()|, which is
775 // not covered by the |DeleteSecondToLastProfileWithSystemLevelShortcut| test. 769 // not covered by the |DeleteSecondToLastProfileWithSystemLevelShortcut| test.
776 profile_attributes_storage_->RemoveProfile(profile_2_path_); 770 profile_attributes_storage_->RemoveProfile(profile_2_path_);
777 RunPendingTasks(); 771 base::RunLoop().RunUntilIdle();
778 772
779 // Verify that only the system-level shortcut still exists. 773 // Verify that only the system-level shortcut still exists.
780 EXPECT_TRUE(base::PathExists(system_level_shortcut_path)); 774 EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
781 EXPECT_FALSE(base::PathExists( 775 EXPECT_FALSE(base::PathExists(
782 GetDefaultShortcutPathForProfile(base::string16()))); 776 GetDefaultShortcutPathForProfile(base::string16())));
783 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path)); 777 EXPECT_FALSE(base::PathExists(profile_1_shortcut_path));
784 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path)); 778 EXPECT_FALSE(base::PathExists(profile_2_shortcut_path));
785 } 779 }
786 780
787 TEST_F(ProfileShortcutManagerTest, CreateProfileIcon) { 781 TEST_F(ProfileShortcutManagerTest, CreateProfileIcon) {
788 SetupDefaultProfileShortcut(FROM_HERE); 782 SetupDefaultProfileShortcut(FROM_HERE);
789 783
790 const base::FilePath icon_path = 784 const base::FilePath icon_path =
791 profiles::internal::GetProfileIconPath(profile_1_path_); 785 profiles::internal::GetProfileIconPath(profile_1_path_);
792 786
793 EXPECT_TRUE(base::PathExists(icon_path)); 787 EXPECT_TRUE(base::PathExists(icon_path));
794 EXPECT_TRUE(base::DeleteFile(icon_path, false)); 788 EXPECT_TRUE(base::DeleteFile(icon_path, false));
795 EXPECT_FALSE(base::PathExists(icon_path)); 789 EXPECT_FALSE(base::PathExists(icon_path));
796 790
797 profile_shortcut_manager_->CreateOrUpdateProfileIcon(profile_1_path_); 791 profile_shortcut_manager_->CreateOrUpdateProfileIcon(profile_1_path_);
798 RunPendingTasks(); 792 base::RunLoop().RunUntilIdle();
799 EXPECT_TRUE(base::PathExists(icon_path)); 793 EXPECT_TRUE(base::PathExists(icon_path));
800 } 794 }
801 795
802 TEST_F(ProfileShortcutManagerTest, UnbadgeProfileIconOnDeletion) { 796 TEST_F(ProfileShortcutManagerTest, UnbadgeProfileIconOnDeletion) {
803 SetupDefaultProfileShortcut(FROM_HERE); 797 SetupDefaultProfileShortcut(FROM_HERE);
804 const base::FilePath icon_path_1 = 798 const base::FilePath icon_path_1 =
805 profiles::internal::GetProfileIconPath(profile_1_path_); 799 profiles::internal::GetProfileIconPath(profile_1_path_);
806 const base::FilePath icon_path_2 = 800 const base::FilePath icon_path_2 =
807 profiles::internal::GetProfileIconPath(profile_2_path_); 801 profiles::internal::GetProfileIconPath(profile_2_path_);
808 802
(...skipping 10 matching lines...) Expand all
819 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &badged_icon_1)); 813 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &badged_icon_1));
820 std::string badged_icon_2; 814 std::string badged_icon_2;
821 EXPECT_TRUE(base::ReadFileToString(icon_path_2, &badged_icon_2)); 815 EXPECT_TRUE(base::ReadFileToString(icon_path_2, &badged_icon_2));
822 816
823 EXPECT_NE(badged_icon_1, unbadged_icon_1); 817 EXPECT_NE(badged_icon_1, unbadged_icon_1);
824 EXPECT_EQ(badged_icon_1, badged_icon_2); 818 EXPECT_EQ(badged_icon_1, badged_icon_2);
825 819
826 // Deleting the default profile will unbadge the new profile's icon and should 820 // Deleting the default profile will unbadge the new profile's icon and should
827 // result in an icon that is identical to the unbadged default profile icon. 821 // result in an icon that is identical to the unbadged default profile icon.
828 profile_attributes_storage_->RemoveProfile(profile_1_path_); 822 profile_attributes_storage_->RemoveProfile(profile_1_path_);
829 RunPendingTasks(); 823 base::RunLoop().RunUntilIdle();
830 824
831 std::string unbadged_icon_2; 825 std::string unbadged_icon_2;
832 EXPECT_TRUE(base::ReadFileToString(icon_path_2, &unbadged_icon_2)); 826 EXPECT_TRUE(base::ReadFileToString(icon_path_2, &unbadged_icon_2));
833 EXPECT_EQ(unbadged_icon_1, unbadged_icon_2); 827 EXPECT_EQ(unbadged_icon_1, unbadged_icon_2);
834 } 828 }
835 829
836 TEST_F(ProfileShortcutManagerTest, ProfileIconOnAvatarChange) { 830 TEST_F(ProfileShortcutManagerTest, ProfileIconOnAvatarChange) {
837 SetupAndCreateTwoShortcuts(FROM_HERE); 831 SetupAndCreateTwoShortcuts(FROM_HERE);
838 const base::FilePath icon_path_1 = 832 const base::FilePath icon_path_1 =
839 profiles::internal::GetProfileIconPath(profile_1_path_); 833 profiles::internal::GetProfileIconPath(profile_1_path_);
840 const base::FilePath icon_path_2 = 834 const base::FilePath icon_path_2 =
841 profiles::internal::GetProfileIconPath(profile_2_path_); 835 profiles::internal::GetProfileIconPath(profile_2_path_);
842 836
843 std::string badged_icon_1; 837 std::string badged_icon_1;
844 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &badged_icon_1)); 838 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &badged_icon_1));
845 std::string badged_icon_2; 839 std::string badged_icon_2;
846 EXPECT_TRUE(base::ReadFileToString(icon_path_2, &badged_icon_2)); 840 EXPECT_TRUE(base::ReadFileToString(icon_path_2, &badged_icon_2));
847 841
848 // Profile 1 and 2 are created with the same icon. 842 // Profile 1 and 2 are created with the same icon.
849 EXPECT_EQ(badged_icon_1, badged_icon_2); 843 EXPECT_EQ(badged_icon_1, badged_icon_2);
850 844
851 // Change profile 1's icon. 845 // Change profile 1's icon.
852 ProfileAttributesEntry* entry_1; 846 ProfileAttributesEntry* entry_1;
853 ASSERT_TRUE(profile_attributes_storage_-> 847 ASSERT_TRUE(profile_attributes_storage_->
854 GetProfileAttributesWithPath(profile_1_path_, &entry_1)); 848 GetProfileAttributesWithPath(profile_1_path_, &entry_1));
855 entry_1->SetAvatarIconIndex(1u); 849 entry_1->SetAvatarIconIndex(1u);
856 RunPendingTasks(); 850 base::RunLoop().RunUntilIdle();
857 851
858 std::string new_badged_icon_1; 852 std::string new_badged_icon_1;
859 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &new_badged_icon_1)); 853 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &new_badged_icon_1));
860 EXPECT_NE(new_badged_icon_1, badged_icon_1); 854 EXPECT_NE(new_badged_icon_1, badged_icon_1);
861 855
862 // Ensure the new icon is not the unbadged icon. 856 // Ensure the new icon is not the unbadged icon.
863 profile_attributes_storage_->RemoveProfile(profile_2_path_); 857 profile_attributes_storage_->RemoveProfile(profile_2_path_);
864 RunPendingTasks(); 858 base::RunLoop().RunUntilIdle();
865 859
866 std::string unbadged_icon_1; 860 std::string unbadged_icon_1;
867 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1)); 861 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1));
868 EXPECT_NE(unbadged_icon_1, new_badged_icon_1); 862 EXPECT_NE(unbadged_icon_1, new_badged_icon_1);
869 863
870 // Ensure the icon doesn't change on avatar change without 2 profiles. 864 // Ensure the icon doesn't change on avatar change without 2 profiles.
871 entry_1->SetAvatarIconIndex(1u); 865 entry_1->SetAvatarIconIndex(1u);
872 RunPendingTasks(); 866 base::RunLoop().RunUntilIdle();
873 867
874 std::string unbadged_icon_1_a; 868 std::string unbadged_icon_1_a;
875 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1_a)); 869 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1_a));
876 EXPECT_EQ(unbadged_icon_1, unbadged_icon_1_a); 870 EXPECT_EQ(unbadged_icon_1, unbadged_icon_1_a);
877 } 871 }
878 872
879 TEST_F(ProfileShortcutManagerTest, ShortcutFilenameUniquified) { 873 TEST_F(ProfileShortcutManagerTest, ShortcutFilenameUniquified) {
880 const auto suffix = l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); 874 const auto suffix = l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME);
881 std::set<base::FilePath> excludes; 875 std::set<base::FilePath> excludes;
882 876
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 RenameProfile(FROM_HERE, profile_1_path_, new_profile_1_name); 1002 RenameProfile(FROM_HERE, profile_1_path_, new_profile_1_name);
1009 ValidateProfileShortcut(FROM_HERE, new_profile_1_name, profile_1_path_); 1003 ValidateProfileShortcut(FROM_HERE, new_profile_1_name, profile_1_path_);
1010 // Check that nothing is changed for profile2 and profile3. 1004 // Check that nothing is changed for profile2 and profile3.
1011 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); 1005 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
1012 ValidateProfileShortcutAtPath(FROM_HERE, 1006 ValidateProfileShortcutAtPath(FROM_HERE,
1013 profile_3_shortcut_path, 1007 profile_3_shortcut_path,
1014 profile_3_path_); 1008 profile_3_path_);
1015 1009
1016 // Delete profile1. 1010 // Delete profile1.
1017 profile_attributes_storage_->RemoveProfile(profile_1_path_); 1011 profile_attributes_storage_->RemoveProfile(profile_1_path_);
1018 RunPendingTasks(); 1012 base::RunLoop().RunUntilIdle();
1019 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_1_name)); 1013 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_1_name));
1020 // Check that nothing is changed for profile2 and profile3. 1014 // Check that nothing is changed for profile2 and profile3.
1021 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); 1015 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
1022 ValidateProfileShortcutAtPath(FROM_HERE, 1016 ValidateProfileShortcutAtPath(FROM_HERE,
1023 profile_3_shortcut_path, 1017 profile_3_shortcut_path,
1024 profile_3_path_); 1018 profile_3_path_);
1025 1019
1026 // Delete profile2. 1020 // Delete profile2.
1027 EXPECT_TRUE(base::PathExists( 1021 EXPECT_TRUE(base::PathExists(
1028 GetDefaultShortcutPathForProfile(profile_2_name_))); 1022 GetDefaultShortcutPathForProfile(profile_2_name_)));
1029 EXPECT_TRUE(base::PathExists(profile_3_shortcut_path)); 1023 EXPECT_TRUE(base::PathExists(profile_3_shortcut_path));
1030 profile_attributes_storage_->RemoveProfile(profile_2_path_); 1024 profile_attributes_storage_->RemoveProfile(profile_2_path_);
1031 RunPendingTasks(); 1025 base::RunLoop().RunUntilIdle();
1032 EXPECT_FALSE(base::PathExists( 1026 EXPECT_FALSE(base::PathExists(
1033 GetDefaultShortcutPathForProfile(profile_2_name_))); 1027 GetDefaultShortcutPathForProfile(profile_2_name_)));
1034 // Only profile3 exists. There should be non-profile shortcut only. 1028 // Only profile3 exists. There should be non-profile shortcut only.
1035 EXPECT_FALSE(base::PathExists(profile_3_shortcut_path)); 1029 EXPECT_FALSE(base::PathExists(profile_3_shortcut_path));
1036 ValidateNonProfileShortcut(FROM_HERE); 1030 ValidateNonProfileShortcut(FROM_HERE);
1037 } 1031 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698