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

Unified Diff: chrome/browser/profiles/profile_manager.cc

Issue 8883030: Making profile avatars and names sync. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding a Profile Manager unittest Created 9 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/profiles/profile_manager.h ('k') | chrome/browser/profiles/profile_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/profiles/profile_manager.cc
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 1a4f6f9c0fd4a16424cfe8ced5b3e2f19c339b81..2fc40d70ec6460d9579dd46162818d03dc3ceba7 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -56,6 +56,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:
@@ -453,6 +465,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);
}
@@ -595,16 +608,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)));
+ }
}
}
@@ -690,8 +736,10 @@ ProfileManagerWithoutInit::ProfileManagerWithoutInit(
void ProfileManager::RegisterTestingProfile(Profile* profile,
bool add_to_cache) {
RegisterProfile(profile, true);
- if (add_to_cache)
+ if (add_to_cache){
+ InitProfileUserPrefs(profile);
AddProfileToCache(profile);
+ }
}
#if defined(OS_WIN)
« no previous file with comments | « chrome/browser/profiles/profile_manager.h ('k') | chrome/browser/profiles/profile_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698