| Index: chrome/browser/profiles/profile_manager_unittest.cc
|
| diff --git a/chrome/browser/profiles/profile_manager_unittest.cc b/chrome/browser/profiles/profile_manager_unittest.cc
|
| index 291b94b001cdba7cb7c821767f1bd73fa753ff6a..88766df96198be5abb26255966c2156e436784f9 100644
|
| --- a/chrome/browser/profiles/profile_manager_unittest.cc
|
| +++ b/chrome/browser/profiles/profile_manager_unittest.cc
|
| @@ -886,6 +886,98 @@ TEST_F(ProfileManagerTest, ActiveProfileDeleted) {
|
| EXPECT_EQ(profile_name2, local_state->GetString(prefs::kProfileLastUsed));
|
| }
|
|
|
| +TEST_F(ProfileManagerTest, LastProfileDeleted) {
|
| + ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| + ASSERT_TRUE(profile_manager);
|
| +
|
| + // Create and load a profile.
|
| + const std::string profile_name1 = "New Profile 1";
|
| + base::FilePath dest_path1 = temp_dir_.path().AppendASCII(profile_name1);
|
| +
|
| + MockObserver mock_observer;
|
| + EXPECT_CALL(mock_observer, OnProfileCreated(
|
| + testing::NotNull(), NotFail())).Times(testing::AtLeast(1));
|
| +
|
| + CreateProfileAsync(profile_manager, profile_name1, false, &mock_observer);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + EXPECT_EQ(1u, profile_manager->GetLoadedProfiles().size());
|
| + EXPECT_EQ(1u, profile_manager->GetProfileInfoCache().GetNumberOfProfiles());
|
| +
|
| + // Set it as the active profile.
|
| + PrefService* local_state = g_browser_process->local_state();
|
| + local_state->SetString(prefs::kProfileLastUsed, profile_name1);
|
| +
|
| + // Delete the active profile.
|
| + profile_manager->ScheduleProfileForDeletion(dest_path1,
|
| + ProfileManager::CreateCallback());
|
| + // Spin the message loop so that all the callbacks can finish running.
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // A new profile should have been created
|
| + const std::string profile_name2 = "Profile 1";
|
| + base::FilePath dest_path2 = temp_dir_.path().AppendASCII(profile_name2);
|
| +
|
| + EXPECT_EQ(dest_path2, profile_manager->GetLastUsedProfile()->GetPath());
|
| + EXPECT_EQ(profile_name2, local_state->GetString(prefs::kProfileLastUsed));
|
| + EXPECT_EQ(dest_path2,
|
| + profile_manager->GetProfileInfoCache().GetPathOfProfileAtIndex(0));
|
| +}
|
| +
|
| +TEST_F(ProfileManagerTest, LastProfileDeletedWithGuestActiveProfile) {
|
| + ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| + ASSERT_TRUE(profile_manager);
|
| +
|
| + // Create and load a profile.
|
| + const std::string profile_name1 = "New Profile 1";
|
| + base::FilePath dest_path1 = temp_dir_.path().AppendASCII(profile_name1);
|
| +
|
| + MockObserver mock_observer;
|
| + EXPECT_CALL(mock_observer, OnProfileCreated(
|
| + testing::NotNull(), NotFail())).Times(testing::AtLeast(2));
|
| +
|
| + CreateProfileAsync(profile_manager, profile_name1, false, &mock_observer);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + EXPECT_EQ(1u, profile_manager->GetLoadedProfiles().size());
|
| + EXPECT_EQ(1u, profile_manager->GetProfileInfoCache().GetNumberOfProfiles());
|
| +
|
| + // Create the profile and register it.
|
| + const std::string guest_profile_name =
|
| + ProfileManager::GetGuestProfilePath().BaseName().MaybeAsASCII();
|
| +
|
| + TestingProfile::Builder builder;
|
| + builder.SetGuestSession();
|
| + builder.SetPath(ProfileManager::GetGuestProfilePath());
|
| + TestingProfile* guest_profile = builder.Build().release();
|
| + guest_profile->set_profile_name(guest_profile_name);
|
| + // Registering the profile passes ownership to the ProfileManager.
|
| + profile_manager->RegisterTestingProfile(guest_profile, false, false);
|
| +
|
| + // The Guest profile does not get added to the ProfileInfoCache.
|
| + EXPECT_EQ(2u, profile_manager->GetLoadedProfiles().size());
|
| + EXPECT_EQ(1u, profile_manager->GetProfileInfoCache().GetNumberOfProfiles());
|
| +
|
| + // Set the Guest profile as the active profile.
|
| + PrefService* local_state = g_browser_process->local_state();
|
| + local_state->SetString(prefs::kProfileLastUsed, guest_profile_name);
|
| +
|
| + // Delete the other profile.
|
| + profile_manager->ScheduleProfileForDeletion(dest_path1,
|
| + ProfileManager::CreateCallback());
|
| + // Spin the message loop so that all the callbacks can finish running.
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // A new profile should have been created.
|
| + const std::string profile_name2 = "Profile 1";
|
| + base::FilePath dest_path2 = temp_dir_.path().AppendASCII(profile_name2);
|
| +
|
| + EXPECT_EQ(3u, profile_manager->GetLoadedProfiles().size());
|
| + EXPECT_EQ(1u, profile_manager->GetProfileInfoCache().GetNumberOfProfiles());
|
| + EXPECT_EQ(dest_path2,
|
| + profile_manager->GetProfileInfoCache().GetPathOfProfileAtIndex(0));
|
| +}
|
| +
|
| TEST_F(ProfileManagerTest, ProfileDisplayNameResetsDefaultName) {
|
| if (!profiles::IsMultipleProfilesEnabled())
|
| return;
|
|
|