summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/profiles/profile_impl.cc34
-rw-r--r--chrome/browser/profiles/profile_impl.h5
-rw-r--r--chrome/browser/profiles/profile_info_cache.cc9
-rw-r--r--chrome/browser/profiles/profile_info_cache.h2
-rw-r--r--chrome/browser/profiles/profile_manager.cc66
-rw-r--r--chrome/browser/profiles/profile_manager.h4
-rw-r--r--chrome/browser/profiles/profile_manager_unittest.cc91
-rw-r--r--chrome/browser/ui/webui/options/manage_profile_handler.cc20
-rw-r--r--chrome/common/pref_names.cc4
-rw-r--r--chrome/common/pref_names.h3
10 files changed, 195 insertions, 43 deletions
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index 0fee3f3..348cb69 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -202,6 +202,12 @@ void ProfileImpl::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterBooleanPref(prefs::kClearSiteDataOnExit,
false,
PrefService::SYNCABLE_PREF);
+ prefs->RegisterIntegerPref(prefs::kProfileAvatarIndex,
+ -1,
+ PrefService::SYNCABLE_PREF);
+ prefs->RegisterStringPref(prefs::kProfileName,
+ "",
+ PrefService::SYNCABLE_PREF);
#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS) && defined(OS_POSIX)
prefs->RegisterIntegerPref(prefs::kLocalProfileId,
kInvalidLocalProfileId,
@@ -274,6 +280,8 @@ void ProfileImpl::DoFinalInit() {
pref_change_registrar_.Add(prefs::kClearSiteDataOnExit, this);
pref_change_registrar_.Add(prefs::kGoogleServicesUsername, this);
pref_change_registrar_.Add(prefs::kDefaultZoomLevel, this);
+ pref_change_registrar_.Add(prefs::kProfileAvatarIndex, this);
+ pref_change_registrar_.Add(prefs::kProfileName, this);
// It would be nice to use PathService for fetching this directory, but
// the cache directory depends on the profile directory, which isn't available
@@ -1287,6 +1295,10 @@ void ProfileImpl::Observe(int type,
}
} else if (*pref_name_in == prefs::kGoogleServicesUsername) {
UpdateProfileUserNameCache();
+ } else if (*pref_name_in == prefs::kProfileAvatarIndex) {
+ UpdateProfileAvatarCache();
+ } else if (*pref_name_in == prefs::kProfileName) {
+ UpdateProfileNameCache();
} else if (*pref_name_in == prefs::kDefaultZoomLevel) {
GetHostZoomMap()->set_default_zoom_level(
prefs->GetDouble(prefs::kDefaultZoomLevel));
@@ -1580,6 +1592,28 @@ void ProfileImpl::UpdateProfileUserNameCache() {
}
}
+void ProfileImpl::UpdateProfileNameCache() {
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+ ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
+ size_t index = cache.GetIndexOfProfileWithPath(GetPath());
+ if (index != std::string::npos) {
+ std::string profile_name =
+ GetPrefs()->GetString(prefs::kProfileName);
+ cache.SetNameOfProfileAtIndex(index, UTF8ToUTF16(profile_name));
+ }
+}
+
+void ProfileImpl::UpdateProfileAvatarCache() {
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+ ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
+ size_t index = cache.GetIndexOfProfileWithPath(GetPath());
+ if (index != std::string::npos) {
+ size_t avatar_index =
+ GetPrefs()->GetInteger(prefs::kProfileAvatarIndex);
+ cache.SetAvatarIconOfProfileAtIndex(index, avatar_index);
+ }
+}
+
// Gets the cache parameters from the command line. If |is_media_context| is
// set to true then settings for the media context type is what we need,
// |cache_path| will be set to the user provided path, or will not be touched if
diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h
index 7f143a6..a5e5f15 100644
--- a/chrome/browser/profiles/profile_impl.h
+++ b/chrome/browser/profiles/profile_impl.h
@@ -190,6 +190,11 @@ class ProfileImpl : public Profile,
void UpdateProfileUserNameCache();
+
+ // Updates the ProfileInfoCache with data from this profile.
+ void UpdateProfileNameCache();
+ void UpdateProfileAvatarCache();
+
void GetCacheParameters(bool is_media_context,
FilePath* cache_path,
int* max_size);
diff --git a/chrome/browser/profiles/profile_info_cache.cc b/chrome/browser/profiles/profile_info_cache.cc
index 8c7275e..6d09249 100644
--- a/chrome/browser/profiles/profile_info_cache.cc
+++ b/chrome/browser/profiles/profile_info_cache.cc
@@ -618,17 +618,22 @@ size_t ProfileInfoCache::GetDefaultAvatarIconCount() {
// static
int ProfileInfoCache::GetDefaultAvatarIconResourceIDAtIndex(size_t index) {
- DCHECK_LT(index, GetDefaultAvatarIconCount());
+ DCHECK(IsDefaultAvatarIconIndex(index));
return kDefaultAvatarIconResources[index];
}
// static
std::string ProfileInfoCache::GetDefaultAvatarIconUrl(size_t index) {
- DCHECK_LT(index, kDefaultAvatarIconsCount);
+ DCHECK(IsDefaultAvatarIconIndex(index));
return StringPrintf("%s%" PRIuS, kDefaultUrlPrefix, index);
}
// static
+bool ProfileInfoCache::IsDefaultAvatarIconIndex(size_t index) {
+ return index < kDefaultAvatarIconsCount;
+}
+
+// static
bool ProfileInfoCache::IsDefaultAvatarIconUrl(const std::string& url,
size_t* icon_index) {
DCHECK(icon_index);
diff --git a/chrome/browser/profiles/profile_info_cache.h b/chrome/browser/profiles/profile_info_cache.h
index 90fcc5d..f58fbdab 100644
--- a/chrome/browser/profiles/profile_info_cache.h
+++ b/chrome/browser/profiles/profile_info_cache.h
@@ -105,6 +105,8 @@ class ProfileInfoCache : public ProfileInfoInterface,
static int GetDefaultAvatarIconResourceIDAtIndex(size_t index);
// Returns a URL for the default avatar icon with specified index.
static std::string GetDefaultAvatarIconUrl(size_t index);
+ // Checks if |index| is a valid avatar icon index
+ static bool IsDefaultAvatarIconIndex(size_t index);
// Checks if the given URL points to one of the default avatar icons. If it
// is, returns true and its index through |icon_index|. If not, returns false.
static bool IsDefaultAvatarIconUrl(const std::string& icon_url,
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 1078a74..d4dee13 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -57,6 +57,18 @@ std::vector<FilePath>& ProfilesToDelete() {
return profiles_to_delete;
}
+// Checks if any user prefs for |profile| have default values.
+bool HasAnyDefaultUserPrefs(Profile* profile) {
+ const PrefService::Preference* avatar_index =
+ profile->GetPrefs()->FindPreference(prefs::kProfileAvatarIndex);
+ DCHECK(avatar_index);
+ const PrefService::Preference* profile_name =
+ profile->GetPrefs()->FindPreference(prefs::kProfileName);
+ DCHECK(profile_name);
+ return avatar_index->IsDefaultValue() ||
+ profile_name->IsDefaultValue();
+}
+
// Simple task to log the size of the current profile.
class ProfileSizeTask : public Task {
public:
@@ -469,6 +481,7 @@ void ProfileManager::OnBrowserSetLastActive(const Browser* browser) {
void ProfileManager::DoFinalInit(Profile* profile, bool go_off_the_record) {
DoFinalInitForServices(profile, go_off_the_record);
+ InitProfileUserPrefs(profile);
AddProfileToCache(profile);
DoFinalInitLogging(profile);
}
@@ -620,16 +633,49 @@ void ProfileManager::AddProfileToCache(Profile* profile) {
string16 username = UTF8ToUTF16(profile->GetPrefs()->GetString(
prefs::kGoogleServicesUsername));
- if (profile->GetPath() == GetDefaultProfileDir(cache.GetUserDataDir())) {
- cache.AddProfileToCache(
- profile->GetPath(),
- l10n_util::GetStringUTF16(IDS_DEFAULT_PROFILE_NAME), username, 0);
- } else {
- size_t icon_index = cache.ChooseAvatarIconIndexForNewProfile();
- cache.AddProfileToCache(profile->GetPath(),
- cache.ChooseNameForNewProfile(icon_index),
- username,
- icon_index);
+ // Profile name and avatar are set by InitProfileUserPrefs and stored in the
+ // profile. Use those values to setup the cache entry.
+ string16 profile_name = UTF8ToUTF16(profile->GetPrefs()->GetString(
+ prefs::kProfileName));
+
+ size_t icon_index = profile->GetPrefs()->GetInteger(
+ prefs::kProfileAvatarIndex);
+
+ cache.AddProfileToCache(profile->GetPath(),
+ profile_name,
+ username,
+ icon_index);
+}
+
+void ProfileManager::InitProfileUserPrefs(Profile* profile) {
+ ProfileInfoCache& cache = GetProfileInfoCache();
+
+ if (profile->GetPath().DirName() != cache.GetUserDataDir())
+ return;
+
+ // Initialize the user preferences (name and avatar) only if the profile
+ // doesn't have default preferenc values for them.
+ if (HasAnyDefaultUserPrefs(profile)) {
+ size_t profile_cache_index =
+ cache.GetIndexOfProfileWithPath(profile->GetPath());
+ // If the cache has an entry for this profile, use the cache data
+ if (profile_cache_index != std::string::npos) {
+ profile->GetPrefs()->SetInteger(prefs::kProfileAvatarIndex,
+ cache.GetAvatarIconIndexOfProfileAtIndex(profile_cache_index));
+ profile->GetPrefs()->SetString(prefs::kProfileName,
+ UTF16ToUTF8(cache.GetNameOfProfileAtIndex(profile_cache_index)));
+ } else if (profile->GetPath() ==
+ GetDefaultProfileDir(cache.GetUserDataDir())) {
+ profile->GetPrefs()->SetInteger(prefs::kProfileAvatarIndex, 0);
+ profile->GetPrefs()->SetString(prefs::kProfileName,
+ l10n_util::GetStringUTF8(IDS_DEFAULT_PROFILE_NAME));
+ } else {
+ size_t icon_index = cache.ChooseAvatarIconIndexForNewProfile();
+ profile->GetPrefs()->SetInteger(prefs::kProfileAvatarIndex, icon_index);
+ profile->GetPrefs()->SetString(
+ prefs::kProfileName,
+ UTF16ToUTF8(cache.ChooseNameForNewProfile(icon_index)));
+ }
}
}
diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles/profile_manager.h
index 7fd9ee1..84a3407 100644
--- a/chrome/browser/profiles/profile_manager.h
+++ b/chrome/browser/profiles/profile_manager.h
@@ -264,6 +264,10 @@ class ProfileManager : public base::NonThreadSafe,
// Adds |profile| to the profile info cache if it hasn't been added yet.
void AddProfileToCache(Profile* profile);
+ // Initializes user prefs of |profile|. This includes profile name and
+ // avatar values
+ void InitProfileUserPrefs(Profile* profile);
+
// For ChromeOS, determines if profile should be otr.
bool ShouldGoOffTheRecord();
diff --git a/chrome/browser/profiles/profile_manager_unittest.cc b/chrome/browser/profiles/profile_manager_unittest.cc
index 0edf118..b4b233f 100644
--- a/chrome/browser/profiles/profile_manager_unittest.cc
+++ b/chrome/browser/profiles/profile_manager_unittest.cc
@@ -97,12 +97,14 @@ class ProfileManagerTest : public testing::Test {
virtual void SetUp() {
// Create a new temporary directory, and store the path
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
- profile_manager_.reset(new testing::ProfileManager(temp_dir_.path()));
+ static_cast<TestingBrowserProcess*>(g_browser_process)->SetProfileManager(
+ new testing::ProfileManager(temp_dir_.path()));
#if defined(OS_WIN)
// Force the ProfileInfoCache to be created immediately, so we can
// remove the shortcut manager for testing.
- profile_manager_->GetProfileInfoCache();
- profile_manager_->RemoveProfileShortcutManagerForTesting();
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+ profile_manager->GetProfileInfoCache();
+ profile_manager->RemoveProfileShortcutManagerForTesting();
#endif
#if defined(OS_CHROMEOS)
CommandLine *cl = CommandLine::ForCurrentProcess();
@@ -111,7 +113,8 @@ class ProfileManagerTest : public testing::Test {
}
virtual void TearDown() {
- profile_manager_.reset();
+ static_cast<TestingBrowserProcess*>(g_browser_process)->SetProfileManager(
+ NULL);
message_loop_.RunAllPending();
}
@@ -141,30 +144,30 @@ class ProfileManagerTest : public testing::Test {
IOThread io_thread_;
scoped_ptr<base::SystemMonitor> system_monitor_dummy_;
-
- // Also will test profile deletion.
- scoped_ptr<ProfileManager> profile_manager_;
};
TEST_F(ProfileManagerTest, GetProfile) {
FilePath dest_path = temp_dir_.path();
dest_path = dest_path.Append(FILE_PATH_LITERAL("New Profile"));
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+
Profile* profile;
// Successfully create a profile.
- profile = profile_manager_->GetProfile(dest_path);
+ profile = profile_manager->GetProfile(dest_path);
EXPECT_TRUE(profile);
// The profile already exists when we call GetProfile. Just load it.
- EXPECT_EQ(profile, profile_manager_->GetProfile(dest_path));
+ EXPECT_EQ(profile, profile_manager->GetProfile(dest_path));
}
TEST_F(ProfileManagerTest, DefaultProfileDir) {
FilePath expected_default =
FilePath().AppendASCII(chrome::kInitialProfile);
- EXPECT_EQ(expected_default.value(),
- profile_manager_->GetInitialProfileDir().value());
+ EXPECT_EQ(
+ expected_default.value(),
+ g_browser_process->profile_manager()->GetInitialProfileDir().value());
}
#if defined(OS_CHROMEOS)
@@ -177,17 +180,18 @@ TEST_F(ProfileManagerTest, LoggedInProfileDir) {
FilePath expected_default =
FilePath().AppendASCII(chrome::kInitialProfile);
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
EXPECT_EQ(expected_default.value(),
- profile_manager_->GetInitialProfileDir().value());
+ profile_manager->GetInitialProfileDir().value());
- profile_manager_->Observe(chrome::NOTIFICATION_LOGIN_USER_CHANGED,
+ profile_manager->Observe(chrome::NOTIFICATION_LOGIN_USER_CHANGED,
content::NotificationService::AllSources(),
content::NotificationService::NoDetails());
FilePath expected_logged_in(profile_dir);
EXPECT_EQ(expected_logged_in.value(),
- profile_manager_->GetInitialProfileDir().value());
+ profile_manager->GetInitialProfileDir().value());
VLOG(1) << temp_dir_.path().Append(
- profile_manager_->GetInitialProfileDir()).value();
+ profile_manager->GetInitialProfileDir()).value();
}
#endif
@@ -199,13 +203,15 @@ TEST_F(ProfileManagerTest, CreateAndUseTwoProfiles) {
FilePath dest_path2 = temp_dir_.path();
dest_path2 = dest_path2.Append(FILE_PATH_LITERAL("New Profile 2"));
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+
// Successfully create the profiles.
TestingProfile* profile1 =
- static_cast<TestingProfile*>(profile_manager_->GetProfile(dest_path1));
+ static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path1));
ASSERT_TRUE(profile1);
TestingProfile* profile2 =
- static_cast<TestingProfile*>(profile_manager_->GetProfile(dest_path2));
+ static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path2));
ASSERT_TRUE(profile2);
// Force lazy-init of some profile services to simulate use.
@@ -221,7 +227,8 @@ TEST_F(ProfileManagerTest, CreateAndUseTwoProfiles) {
// Make sure any pending tasks run before we destroy the profiles.
message_loop_.RunAllPending();
- profile_manager_.reset();
+ static_cast<TestingBrowserProcess*>(g_browser_process)->SetProfileManager(
+ NULL);
// Make sure history cleans up correctly.
message_loop_.RunAllPending();
@@ -241,7 +248,8 @@ TEST_F(ProfileManagerTest, DISABLED_CreateProfileAsync) {
EXPECT_CALL(mock_observer, OnProfileCreated(
testing::NotNull(), NotFail())).Times(testing::AtLeast(1));
- profile_manager_->CreateProfileAsync(dest_path, &mock_observer);
+ g_browser_process->profile_manager()->CreateProfileAsync(dest_path,
+ &mock_observer);
message_loop_.RunAllPending();
}
@@ -268,9 +276,11 @@ TEST_F(ProfileManagerTest, CreateProfileAsyncMultipleRequests) {
EXPECT_CALL(mock_observer3, OnProfileCreated(
SameNotNull(), NotFail())).Times(testing::AtLeast(1));
- profile_manager_->CreateProfileAsync(dest_path, &mock_observer1);
- profile_manager_->CreateProfileAsync(dest_path, &mock_observer2);
- profile_manager_->CreateProfileAsync(dest_path, &mock_observer3);
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+
+ profile_manager->CreateProfileAsync(dest_path, &mock_observer1);
+ profile_manager->CreateProfileAsync(dest_path, &mock_observer2);
+ profile_manager->CreateProfileAsync(dest_path, &mock_observer3);
message_loop_.RunAllPending();
}
@@ -285,14 +295,17 @@ TEST_F(ProfileManagerTest, CreateProfilesAsync) {
EXPECT_CALL(mock_observer, OnProfileCreated(
testing::NotNull(), NotFail())).Times(testing::AtLeast(3));
- profile_manager_->CreateProfileAsync(dest_path1, &mock_observer);
- profile_manager_->CreateProfileAsync(dest_path2, &mock_observer);
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+
+ profile_manager->CreateProfileAsync(dest_path1, &mock_observer);
+ profile_manager->CreateProfileAsync(dest_path2, &mock_observer);
message_loop_.RunAllPending();
}
TEST_F(ProfileManagerTest, AutoloadProfilesWithBackgroundApps) {
- ProfileInfoCache& cache = profile_manager_->GetProfileInfoCache();
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+ ProfileInfoCache& cache = profile_manager->GetProfileInfoCache();
EXPECT_EQ(0u, cache.GetNumberOfProfiles());
cache.AddProfileToCache(cache.GetUserDataDir().AppendASCII("path_1"),
@@ -305,7 +318,31 @@ TEST_F(ProfileManagerTest, AutoloadProfilesWithBackgroundApps) {
cache.SetBackgroundStatusOfProfileAtIndex(2, true);
EXPECT_EQ(3u, cache.GetNumberOfProfiles());
- profile_manager_->AutoloadProfiles();
+ profile_manager->AutoloadProfiles();
+
+ EXPECT_EQ(2u, profile_manager->GetLoadedProfiles().size());
+}
+
+TEST_F(ProfileManagerTest, InitProfileUserPrefs) {
+ FilePath dest_path = temp_dir_.path();
+ dest_path = dest_path.Append(FILE_PATH_LITERAL("New Profile"));
+
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+
+ Profile* profile;
+
+ // Successfully create the profile
+ profile = profile_manager->GetProfile(dest_path);
+ ASSERT_TRUE(profile);
+
+ // Check that the profile name is non empty
+ std::string profile_name =
+ profile->GetPrefs()->GetString(prefs::kProfileName);
+ EXPECT_FALSE(profile_name.empty());
- EXPECT_EQ(2u, profile_manager_->GetLoadedProfiles().size());
+ // Check that the profile avatar index is valid
+ size_t avatar_index = profile->GetPrefs()->GetInteger(
+ prefs::kProfileAvatarIndex);
+ EXPECT_TRUE(profile_manager->GetProfileInfoCache().IsDefaultAvatarIconIndex(
+ avatar_index));
}
diff --git a/chrome/browser/ui/webui/options/manage_profile_handler.cc b/chrome/browser/ui/webui/options/manage_profile_handler.cc
index edf2201..00a780e 100644
--- a/chrome/browser/ui/webui/options/manage_profile_handler.cc
+++ b/chrome/browser/ui/webui/options/manage_profile_handler.cc
@@ -11,13 +11,16 @@
#include "base/value_conversions.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/gaia_info_update_service.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_info_cache.h"
#include "chrome/browser/profiles/profile_info_util.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/profiles/profile_metrics.h"
#include "chrome/browser/ui/webui/web_ui_util.h"
#include "chrome/common/chrome_notification_types.h"
+#include "chrome/common/pref_names.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/public/browser/notification_service.h"
#include "grit/generated_resources.h"
@@ -139,13 +142,15 @@ void ManageProfileHandler::SetProfileNameAndIcon(const ListValue* args) {
ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
size_t profile_index = cache.GetIndexOfProfileWithPath(profile_file_path);
- if (profile_index == std::string::npos)
- return;
string16 new_profile_name;
if (!args->GetString(1, &new_profile_name))
return;
+ Profile* profile =
+ g_browser_process->profile_manager()->GetProfile(profile_file_path);
+ if (!profile)
+ return;
if (new_profile_name == cache.GetGAIANameOfProfileAtIndex(profile_index)) {
// Set the profile to use the GAIA name as the profile name. Note, this
// is a little weird if the user typed their GAIA name manually but
@@ -156,7 +161,11 @@ void ManageProfileHandler::SetProfileNameAndIcon(const ListValue* args) {
if (profile_index == std::string::npos)
return;
} else {
- cache.SetNameOfProfileAtIndex(profile_index, new_profile_name);
+ PrefService* pref_service = profile->GetPrefs();
+ // Updating the profile preference will cause the cache to be updated for
+ // this preference.
+ pref_service->SetString(prefs::kProfileName, UTF16ToUTF8(new_profile_name));
+
// Changing the profile name can invalidate the profile index.
profile_index = cache.GetIndexOfProfileWithPath(profile_file_path);
if (profile_index == std::string::npos)
@@ -178,8 +187,11 @@ void ManageProfileHandler::SetProfileNameAndIcon(const ListValue* args) {
if (icon_url == gaia_picture_url_) {
cache.SetIsUsingGAIAPictureOfProfileAtIndex(profile_index, true);
} else if (cache.IsDefaultAvatarIconUrl(icon_url, &new_icon_index)) {
+ PrefService* pref_service = profile->GetPrefs();
ProfileMetrics::LogProfileAvatarSelection(new_icon_index);
- cache.SetAvatarIconOfProfileAtIndex(profile_index, new_icon_index);
+ // Updating the profile preference will cause the cache to be updated for
+ // this preference.
+ pref_service->SetInteger(prefs::kProfileAvatarIndex, new_icon_index);
cache.SetIsUsingGAIAPictureOfProfileAtIndex(profile_index, false);
}
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index 85d448d..dd9de9f 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -881,6 +881,10 @@ const char kPasswordsUseLocalProfileId[] =
"profile.passwords_use_local_profile_id";
#endif
+// Profile avatar and name
+const char kProfileAvatarIndex[] = "profile.avatar_index";
+const char kProfileName[] = "profile.name";
+
// *************** LOCAL STATE ***************
// These are attached to the machine/installation
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 7f254f1..0123ab3 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -313,6 +313,9 @@ extern const char kLocalProfileId[];
extern const char kPasswordsUseLocalProfileId[];
#endif
+extern const char kProfileAvatarIndex[];
+extern const char kProfileName[];
+
// Local state prefs. Please add Profile prefs above instead.
extern const char kCertRevocationCheckingEnabled[];
extern const char kSSL3Enabled[];