| 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 35a1c816e6ef0940fb3334636b6e9535340bbfe8..bb93acc380bd18a4055e933bf545375174db8259 100644
|
| --- a/chrome/browser/profiles/profile_manager_unittest.cc
|
| +++ b/chrome/browser/profiles/profile_manager_unittest.cc
|
| @@ -24,6 +24,7 @@
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_info_cache.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| +#include "chrome/browser/profiles/profiles_state.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -35,8 +36,10 @@
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| +#include "grit/generated_resources.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "ui/base/l10n/l10n_util.h"
|
|
|
| #if defined(OS_CHROMEOS)
|
| #include "chrome/browser/chromeos/login/mock_user_manager.h"
|
| @@ -126,6 +129,20 @@ class ProfileManagerTest : public testing::Test {
|
| is_managed ? "Dummy ID" : std::string());
|
| }
|
|
|
| + // Helper function to add a profile with |profile_name| to
|
| + // |profile_manager|'s ProfileInfoCache, and return the profile created.
|
| + Profile* AddProfileToCache(ProfileManager* profile_manager,
|
| + const std::string& path_suffix,
|
| + const base::string16& profile_name) {
|
| + ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
|
| + size_t num_profiles = cache.GetNumberOfProfiles();
|
| + base::FilePath path = temp_dir_.path().AppendASCII(path_suffix);
|
| + cache.AddProfileToCache(path, profile_name,
|
| + base::string16(), 0, std::string());
|
| + EXPECT_EQ(num_profiles + 1, cache.GetNumberOfProfiles());
|
| + return profile_manager->GetProfile(path);
|
| + }
|
| +
|
| #if defined(OS_CHROMEOS)
|
| chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
|
| chromeos::ScopedTestCrosSettings test_cros_settings_;
|
| @@ -835,10 +852,8 @@ TEST_F(ProfileManagerTest, ActiveProfileDeleted) {
|
| // Create and load two profiles.
|
| const std::string profile_name1 = "New Profile 1";
|
| const std::string profile_name2 = "New Profile 2";
|
| - base::FilePath dest_path1 =
|
| - temp_dir_.path().AppendASCII(profile_name1);
|
| - base::FilePath dest_path2 =
|
| - temp_dir_.path().AppendASCII(profile_name2);
|
| + base::FilePath dest_path1 = temp_dir_.path().AppendASCII(profile_name1);
|
| + base::FilePath dest_path2 = temp_dir_.path().AppendASCII(profile_name2);
|
|
|
| MockObserver mock_observer;
|
| EXPECT_CALL(mock_observer, OnProfileCreated(
|
| @@ -864,6 +879,122 @@ TEST_F(ProfileManagerTest, ActiveProfileDeleted) {
|
| EXPECT_EQ(dest_path2, profile_manager->GetLastUsedProfile()->GetPath());
|
| EXPECT_EQ(profile_name2, local_state->GetString(prefs::kProfileLastUsed));
|
| }
|
| +
|
| +TEST_F(ProfileManagerTest, ProfileDisplayNameResetsDefaultName) {
|
| + if (!profiles::IsMultipleProfilesEnabled())
|
| + return;
|
| +
|
| + // The command line is reset at the end of every test by the test suite.
|
| + CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kNewProfileManagement);
|
| +
|
| + ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| + ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
|
| + EXPECT_EQ(0u, cache.GetNumberOfProfiles());
|
| +
|
| + // Only one local profile means we display IDS_SINGLE_PROFILE_DISPLAY_NAME.
|
| + const base::string16 default_profile_name =
|
| + l10n_util::GetStringUTF16(IDS_SINGLE_PROFILE_DISPLAY_NAME);
|
| + const base::string16 profile_name1 = cache.ChooseNameForNewProfile(0);
|
| + Profile* profile1 = AddProfileToCache(profile_manager,
|
| + "path_1", profile_name1);
|
| + EXPECT_EQ(default_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| +
|
| + // Multiple profiles means displaying the actual profile names.
|
| + const base::string16 profile_name2 = cache.ChooseNameForNewProfile(1);
|
| + Profile* profile2 = AddProfileToCache(profile_manager,
|
| + "path_2", profile_name2);
|
| + EXPECT_EQ(profile_name1, profiles::GetAvatarNameForProfile(profile1));
|
| + EXPECT_EQ(profile_name2, profiles::GetAvatarNameForProfile(profile2));
|
| +
|
| + // Deleting a profile means returning to the default name.
|
| + profile_manager->ScheduleProfileForDeletion(profile2->GetPath(),
|
| + ProfileManager::CreateCallback());
|
| + // Spin the message loop so that all the callbacks can finish running.
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(default_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| +}
|
| +
|
| +TEST_F(ProfileManagerTest, ProfileDisplayNamePreservesCustomName) {
|
| + if (!profiles::IsMultipleProfilesEnabled())
|
| + return;
|
| +
|
| + // The command line is reset at the end of every test by the test suite.
|
| + CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kNewProfileManagement);
|
| +
|
| + ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| + ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
|
| + EXPECT_EQ(0u, cache.GetNumberOfProfiles());
|
| +
|
| + // Only one local profile means we display IDS_SINGLE_PROFILE_DISPLAY_NAME.
|
| + const base::string16 default_profile_name =
|
| + l10n_util::GetStringUTF16(IDS_SINGLE_PROFILE_DISPLAY_NAME);
|
| + const base::string16 profile_name1 = cache.ChooseNameForNewProfile(0);
|
| + Profile* profile1 = AddProfileToCache(profile_manager,
|
| + "path_1", profile_name1);
|
| + EXPECT_EQ(default_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| +
|
| + // We should display custom names for local profiles.
|
| + const base::string16 custom_profile_name = ASCIIToUTF16("Batman");
|
| + cache.SetNameOfProfileAtIndex(0, custom_profile_name);
|
| + EXPECT_EQ(custom_profile_name, cache.GetNameOfProfileAtIndex(0));
|
| + EXPECT_EQ(custom_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| +
|
| + // Multiple profiles means displaying the actual profile names.
|
| + const base::string16 profile_name2 = cache.ChooseNameForNewProfile(1);
|
| + Profile* profile2 = AddProfileToCache(profile_manager,
|
| + "path_2", profile_name2);
|
| + EXPECT_EQ(custom_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| + EXPECT_EQ(profile_name2, profiles::GetAvatarNameForProfile(profile2));
|
| +
|
| + // Deleting a profile means returning to the original, custom name.
|
| + profile_manager->ScheduleProfileForDeletion(profile2->GetPath(),
|
| + ProfileManager::CreateCallback());
|
| + // Spin the message loop so that all the callbacks can finish running.
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(custom_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| +}
|
| +
|
| +TEST_F(ProfileManagerTest, ProfileDisplayNamePreservesSignedInName) {
|
| + if (!profiles::IsMultipleProfilesEnabled())
|
| + return;
|
| +
|
| + // The command line is reset at the end of every test by the test suite.
|
| + CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kNewProfileManagement);
|
| +
|
| + ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| + ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
|
| + EXPECT_EQ(0u, cache.GetNumberOfProfiles());
|
| +
|
| + // Only one local profile means we display IDS_SINGLE_PROFILE_DISPLAY_NAME.
|
| + const base::string16 default_profile_name =
|
| + l10n_util::GetStringUTF16(IDS_SINGLE_PROFILE_DISPLAY_NAME);
|
| + const base::string16 profile_name1 = cache.ChooseNameForNewProfile(0);
|
| + Profile* profile1 = AddProfileToCache(profile_manager,
|
| + "path_1", profile_name1);
|
| + EXPECT_EQ(default_profile_name, profiles::GetAvatarNameForProfile(profile1));
|
| +
|
| + // We should display the actual profile name for signed in profiles.
|
| + cache.SetUserNameOfProfileAtIndex(0, ASCIIToUTF16("user@gmail.com"));
|
| + EXPECT_EQ(profile_name1, cache.GetNameOfProfileAtIndex(0));
|
| + EXPECT_EQ(profile_name1, profiles::GetAvatarNameForProfile(profile1));
|
| +
|
| + // Multiple profiles means displaying the actual profile names.
|
| + const base::string16 profile_name2 = cache.ChooseNameForNewProfile(1);
|
| + Profile* profile2 = AddProfileToCache(profile_manager,
|
| + "path_2", profile_name2);
|
| + EXPECT_EQ(profile_name1, profiles::GetAvatarNameForProfile(profile1));
|
| + EXPECT_EQ(profile_name2, profiles::GetAvatarNameForProfile(profile2));
|
| +
|
| + // Deleting a profile means returning to the original, actual profile name.
|
| + profile_manager->ScheduleProfileForDeletion(profile2->GetPath(),
|
| + ProfileManager::CreateCallback());
|
| + // Spin the message loop so that all the callbacks can finish running.
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(profile_name1, profiles::GetAvatarNameForProfile(profile1));
|
| +}
|
| #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
|
|
|
| #if defined(OS_MACOSX)
|
| @@ -876,10 +1007,8 @@ TEST_F(ProfileManagerTest, ActiveProfileDeletedNeedsToLoadNextProfile) {
|
| // Create and load one profile, and just create a second profile.
|
| const std::string profile_name1 = "New Profile 1";
|
| const std::string profile_name2 = "New Profile 2";
|
| - base::FilePath dest_path1 =
|
| - temp_dir_.path().AppendASCII(profile_name1);
|
| - base::FilePath dest_path2 =
|
| - temp_dir_.path().AppendASCII(profile_name2);
|
| + base::FilePath dest_path1 = temp_dir_.path().AppendASCII(profile_name1);
|
| + base::FilePath dest_path2 = temp_dir_.path().AppendASCII(profile_name2);
|
|
|
| MockObserver mock_observer;
|
| EXPECT_CALL(mock_observer, OnProfileCreated(
|
| @@ -925,12 +1054,9 @@ TEST_F(ProfileManagerTest, ActiveProfileDeletedNextProfileDeletedToo) {
|
| const std::string profile_name1 = "New Profile 1";
|
| const std::string profile_name2 = "New Profile 2";
|
| const std::string profile_name3 = "New Profile 3";
|
| - base::FilePath dest_path1 =
|
| - temp_dir_.path().AppendASCII(profile_name1);
|
| - base::FilePath dest_path2 =
|
| - temp_dir_.path().AppendASCII(profile_name2);
|
| - base::FilePath dest_path3 =
|
| - temp_dir_.path().AppendASCII(profile_name3);
|
| + base::FilePath dest_path1 = temp_dir_.path().AppendASCII(profile_name1);
|
| + base::FilePath dest_path2 = temp_dir_.path().AppendASCII(profile_name2);
|
| + base::FilePath dest_path3 = temp_dir_.path().AppendASCII(profile_name3);
|
|
|
| MockObserver mock_observer;
|
| EXPECT_CALL(mock_observer, OnProfileCreated(
|
|
|