Index: chrome/browser/profiles/profile_info_cache.cc |
diff --git a/chrome/browser/profiles/profile_info_cache.cc b/chrome/browser/profiles/profile_info_cache.cc |
index f57205eb1204285d55b671b3fabc5c2350a23c76..fddd93e10cad2129a9c6d27ab12e5f5d544ae0e4 100644 |
--- a/chrome/browser/profiles/profile_info_cache.cc |
+++ b/chrome/browser/profiles/profile_info_cache.cc |
@@ -38,10 +38,10 @@ using content::BrowserThread; |
namespace { |
const char kNameKey[] = "name"; |
-const char kShortcutNameKey[] = "shortcut_name"; |
-const char kGAIANameKey[] = "gaia_name"; |
-const char kGAIAGivenNameKey[] = "gaia_given_name"; |
-const char kUseGAIANameKey[] = "use_gaia_name"; |
+//const char kShortcutNameKey[] = "shortcut_name"; |
+//const char kGAIANameKey[] = "gaia_name"; |
+//const char kGAIAGivenNameKey[] = "gaia_given_name"; |
+//const char kUseGAIANameKey[] = "use_gaia_name"; |
const char kUserNameKey[] = "user_name"; |
const char kAvatarIconKey[] = "avatar_icon"; |
const char kUseGAIAPictureKey[] = "use_gaia_picture"; |
@@ -180,12 +180,12 @@ ProfileInfoCache::ProfileInfoCache(PrefService* prefs, |
// Populate the cache |
DictionaryPrefUpdate update(prefs_, prefs::kProfileInfoCache); |
DictionaryValue* cache = update.Get(); |
+ |
for (DictionaryValue::Iterator it(*cache); !it.IsAtEnd(); it.Advance()) { |
DictionaryValue* info = NULL; |
cache->GetDictionaryWithoutPathExpansion(it.key(), &info); |
string16 name; |
info->GetString(kNameKey, &name); |
- sorted_keys_.insert(FindPositionForProfile(it.key(), name), it.key()); |
// TODO(ibraaaa): delete this when 97% of our users are using M31. |
// http://crbug.com/276163 |
bool is_managed = false; |
@@ -193,6 +193,12 @@ ProfileInfoCache::ProfileInfoCache(PrefService* prefs, |
info->Remove(kIsManagedKey, NULL); |
info->SetString(kManagedUserId, is_managed ? "DUMMY_ID" : std::string()); |
} |
+ if (info) { |
+ base::FilePath path = user_data_dir.AppendASCII(it.key()); |
+ cached_entries_[it.key()] = ProfileInfoEntry(path, *info); |
+ } |
+ |
+ //sorted_keys_.insert(FindPositionForProfile(it.key(), name), it.key()); |
} |
} |
@@ -201,30 +207,67 @@ ProfileInfoCache::~ProfileInfoCache() { |
gaia_pictures_.begin(), gaia_pictures_.end()); |
} |
-void ProfileInfoCache::AddProfileToCache(const base::FilePath& profile_path, |
- const string16& name, |
- const string16& username, |
- size_t icon_index, |
- const std::string& managed_user_id) { |
- std::string key = CacheKeyFromProfilePath(profile_path); |
+void ProfileInfoCache::AddObserver(ProfileInfoCacheObserver* obs) { |
+ observer_list_.AddObserver(obs); |
+} |
+ |
+void ProfileInfoCache::RemoveObserver(ProfileInfoCacheObserver* obs) { |
+ observer_list_.RemoveObserver(obs); |
+} |
+ |
+size_t ProfileInfoCache::GetNumberOfProfiles() const { |
+ return cached_entries_.size(); |
+} |
+ |
+std::vector<ProfileInfoEntry> ProfileInfoCache::GetProfilesSortedByName() |
+ const { |
+ std::vector<ProfileInfoEntry> entries; |
+ for (std::map<std::string, ProfileInfoEntry>::const_iterator it = |
+ cached_entries_.begin(); it != cached_entries_.end(); ++it) { |
+ entries.push_back(it->second); |
+ } |
+ std::sort(entries.begin(), entries.end()); |
+ return entries; |
+} |
+ |
+bool ProfileInfoCache::GetInfoForProfile(const base::FilePath& path, |
+ ProfileInfoEntry* entry) const { |
+ // If the info is not in the cache then the profile was deleted. |
+ std::string key = CacheKeyFromProfilePath(path); |
+ std::map<std::string, ProfileInfoEntry>::const_iterator it = |
+ cached_entries_.find(key); |
+ if (it == cached_entries_.end()) |
+ return false; |
+ |
+ *entry = it->second; |
+ return true; |
+} |
+ |
+void ProfileInfoCache::SetInfoForProfile(const ProfileInfoEntry& info) { |
+ std::string key = CacheKeyFromProfilePath(info.path()); |
+ cached_entries_[key] = info; |
+ |
DictionaryPrefUpdate update(prefs_, prefs::kProfileInfoCache); |
DictionaryValue* cache = update.Get(); |
- scoped_ptr<DictionaryValue> info(new DictionaryValue); |
- info->SetString(kNameKey, name); |
- info->SetString(kUserNameKey, username); |
- info->SetString(kAvatarIconKey, GetDefaultAvatarIconUrl(icon_index)); |
+ scoped_ptr<DictionaryValue> info_dict(new DictionaryValue); |
+ info_dict->SetString(kNameKey, info.name()); |
+ info_dict->SetString(kUserNameKey, info.user_name()); |
+ info_dict->SetString(kAvatarIconKey, |
+ GetDefaultAvatarIconUrl(info.icon_index())); |
// Default value for whether background apps are running is false. |
- info->SetBoolean(kBackgroundAppsKey, false); |
- info->SetString(kManagedUserId, managed_user_id); |
- info->SetBoolean(kProfileIsEphemeral, false); |
- cache->SetWithoutPathExpansion(key, info.release()); |
+ //info->SetBoolean(kBackgroundAppsKey, false); |
+ //info->SetString(kManagedUserId, managed_user_id); |
+ //info->SetBoolean(kProfileIsEphemeral, false); |
+ //cache->SetWithoutPathExpansion(key, info.release()); |
+ info_dict->SetBoolean(kBackgroundAppsKey, false); |
+ info_dict->SetString(kManagedUserId, info.managed_user_id()); |
- sorted_keys_.insert(FindPositionForProfile(key, name), key); |
+ cache->Set(key, info_dict.get()); |
FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
observer_list_, |
- OnProfileAdded(profile_path)); |
+ OnProfileAdded(info.path())); |
content::NotificationService::current()->Notify( |
chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
@@ -232,32 +275,46 @@ void ProfileInfoCache::AddProfileToCache(const base::FilePath& profile_path, |
content::NotificationService::NoDetails()); |
} |
-void ProfileInfoCache::AddObserver(ProfileInfoCacheObserver* obs) { |
- observer_list_.AddObserver(obs); |
-} |
- |
-void ProfileInfoCache::RemoveObserver(ProfileInfoCacheObserver* obs) { |
- observer_list_.RemoveObserver(obs); |
+void ProfileInfoCache::AddProfileToCache(const base::FilePath& profile_path, |
+ const string16& name, |
+ const string16& username, |
+ size_t icon_index, |
+ const std::string& managed_user_id) { |
+ ProfileInfoEntry entry; |
+ if (GetInfoForProfile(profile_path, &entry)) { |
+ // The profile is already in the cache, nothing to do. |
+ return; |
+ } |
+ entry.set_path(profile_path); |
+ entry.set_name(name); |
+ entry.set_user_name(username); |
+ entry.set_icon_index(icon_index); |
+ entry.set_managed_user_id(managed_user_id); |
+ SetInfoForProfile(entry); |
} |
void ProfileInfoCache::DeleteProfileFromCache( |
const base::FilePath& profile_path) { |
- size_t profile_index = GetIndexOfProfileWithPath(profile_path); |
- if (profile_index == std::string::npos) { |
- NOTREACHED(); |
- return; |
- } |
- string16 name = GetNameOfProfileAtIndex(profile_index); |
FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
observer_list_, |
OnProfileWillBeRemoved(profile_path)); |
+ std::string key = CacheKeyFromProfilePath(profile_path); |
+ |
+ // This should be less suck |
+ ProfileInfoEntry p; |
+ if (!GetInfoForProfile(profile_path, &p)) |
+ return; |
+ |
+ string16 name = p.name(); |
+ |
+ if (cached_entries_.count(key)) |
+ cached_entries_.erase(key); |
+ |
DictionaryPrefUpdate update(prefs_, prefs::kProfileInfoCache); |
DictionaryValue* cache = update.Get(); |
- std::string key = CacheKeyFromProfilePath(profile_path); |
cache->Remove(key, NULL); |
- sorted_keys_.erase(std::find(sorted_keys_.begin(), sorted_keys_.end(), key)); |
FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
observer_list_, |
@@ -269,98 +326,107 @@ void ProfileInfoCache::DeleteProfileFromCache( |
content::NotificationService::NoDetails()); |
} |
-size_t ProfileInfoCache::GetNumberOfProfiles() const { |
- return sorted_keys_.size(); |
-} |
-size_t ProfileInfoCache::GetIndexOfProfileWithPath( |
- const base::FilePath& profile_path) const { |
- if (profile_path.DirName() != user_data_dir_) |
- return std::string::npos; |
- std::string search_key = CacheKeyFromProfilePath(profile_path); |
- for (size_t i = 0; i < sorted_keys_.size(); ++i) { |
- if (sorted_keys_[i] == search_key) |
- return i; |
- } |
- return std::string::npos; |
-} |
-string16 ProfileInfoCache::GetNameOfProfileAtIndex(size_t index) const { |
- string16 name; |
- if (IsUsingGAIANameOfProfileAtIndex(index)) { |
- string16 given_name = GetGAIAGivenNameOfProfileAtIndex(index); |
- name = given_name.empty() ? GetGAIANameOfProfileAtIndex(index) : given_name; |
- } |
- if (name.empty()) |
- GetInfoForProfileAtIndex(index)->GetString(kNameKey, &name); |
- return name; |
-} |
-string16 ProfileInfoCache::GetShortcutNameOfProfileAtIndex(size_t index) |
- const { |
- string16 shortcut_name; |
- GetInfoForProfileAtIndex(index)->GetString( |
- kShortcutNameKey, &shortcut_name); |
- return shortcut_name; |
-} |
-base::FilePath ProfileInfoCache::GetPathOfProfileAtIndex(size_t index) const { |
- return user_data_dir_.AppendASCII(sorted_keys_[index]); |
-} |
-string16 ProfileInfoCache::GetUserNameOfProfileAtIndex(size_t index) const { |
- string16 user_name; |
- GetInfoForProfileAtIndex(index)->GetString(kUserNameKey, &user_name); |
- return user_name; |
-} |
-const gfx::Image& ProfileInfoCache::GetAvatarIconOfProfileAtIndex( |
- size_t index) const { |
- if (IsUsingGAIAPictureOfProfileAtIndex(index)) { |
- const gfx::Image* image = GetGAIAPictureOfProfileAtIndex(index); |
+// size_t ProfileInfoCache::GetIndexOfProfileWithPath( |
+// const base::FilePath& profile_path) const { |
+// if (profile_path.DirName() != user_data_dir_) |
+// return std::string::npos; |
+// std::string search_key = CacheKeyFromProfilePath(profile_path); |
+// for (size_t i = 0; i < sorted_keys_.size(); ++i) { |
+// if (sorted_keys_[i] == search_key) |
+// return i; |
+// } |
+// return std::string::npos; |
+// } |
+ |
+// string16 ProfileInfoCache::GetNameOfProfileAtIndex(size_t index) const { |
+// string16 name; |
+// if (IsUsingGAIANameOfProfileAtIndex(index)) { |
+// string16 given_name = GetGAIAGivenNameOfProfileAtIndex(index); |
+// name = given_name.empty() ? GetGAIANameOfProfileAtIndex(index) : given_name; |
+// } |
+ |
+// if (name.empty()) |
+// GetInfoForProfileAtIndex(index)->GetString(kNameKey, &name); |
+// return name; |
+// } |
+ |
+// string16 ProfileInfoCache::GetShortcutNameOfProfileAtIndex(size_t index) |
+// const { |
+// string16 shortcut_name; |
+// GetInfoForProfileAtIndex(index)->GetString( |
+// kShortcutNameKey, &shortcut_name); |
+// return shortcut_name; |
+// } |
+ |
+// base::FilePath ProfileInfoCache::GetPathOfProfileAtIndex(size_t index) const { |
+// return user_data_dir_.AppendASCII(sorted_keys_[index]); |
+// } |
+ |
+// string16 ProfileInfoCache::GetUserNameOfProfileAtIndex(size_t index) const { |
+// string16 user_name; |
+// GetInfoForProfileAtIndex(index)->GetString(kUserNameKey, &user_name); |
+// return user_name; |
+// } |
+ |
+const gfx::Image& ProfileInfoCache::GetAvatarIconOfProfile(const base::FilePath& profile_path) const { |
+ ProfileInfoEntry info; |
+ |
+ // TODO(noms): What happens in the error case here? |
+ GetInfoForProfile(profile_path, &info); |
+ |
+ if (info.is_using_GAIA_picture()) { |
+ const gfx::Image* image = GetGAIAPictureOfProfile(profile_path); |
if (image) |
return *image; |
} |
- int resource_id = GetDefaultAvatarIconResourceIDAtIndex( |
- GetAvatarIconIndexOfProfileAtIndex(index)); |
+ int resource_id = GetDefaultAvatarIconResourceIDAtIndex(info.icon_index()); |
return ResourceBundle::GetSharedInstance().GetNativeImageNamed(resource_id); |
} |
-bool ProfileInfoCache::GetBackgroundStatusOfProfileAtIndex( |
- size_t index) const { |
- bool background_app_status; |
- if (!GetInfoForProfileAtIndex(index)->GetBoolean(kBackgroundAppsKey, |
- &background_app_status)) { |
- return false; |
- } |
- return background_app_status; |
-} |
- |
-string16 ProfileInfoCache::GetGAIANameOfProfileAtIndex(size_t index) const { |
- string16 name; |
- GetInfoForProfileAtIndex(index)->GetString(kGAIANameKey, &name); |
- return name; |
-} |
- |
-string16 ProfileInfoCache::GetGAIAGivenNameOfProfileAtIndex( |
- size_t index) const { |
- string16 name; |
- GetInfoForProfileAtIndex(index)->GetString(kGAIAGivenNameKey, &name); |
- return name; |
-} |
- |
-bool ProfileInfoCache::IsUsingGAIANameOfProfileAtIndex(size_t index) const { |
- bool value = false; |
- GetInfoForProfileAtIndex(index)->GetBoolean(kUseGAIANameKey, &value); |
- return value; |
-} |
+// bool ProfileInfoCache::GetBackgroundStatusOfProfileAtIndex( |
+// size_t index) const { |
+// bool background_app_status; |
+// if (!GetInfoForProfileAtIndex(index)->GetBoolean(kBackgroundAppsKey, |
+// &background_app_status)) { |
+// return false; |
+// } |
+// return background_app_status; |
+// } |
+ |
+// string16 ProfileInfoCache::GetGAIANameOfProfileAtIndex(size_t index) const { |
+// string16 name; |
+// GetInfoForProfileAtIndex(index)->GetString(kGAIANameKey, &name); |
+// return name; |
+// } |
+ |
+// string16 ProfileInfoCache::GetGAIAGivenNameOfProfileAtIndex( |
+// size_t index) const { |
+// string16 name; |
+// GetInfoForProfileAtIndex(index)->GetString(kGAIAGivenNameKey, &name); |
+// return name; |
+// } |
+ |
+// bool ProfileInfoCache::IsUsingGAIANameOfProfileAtIndex(size_t index) const { |
+// bool value = false; |
+// GetInfoForProfileAtIndex(index)->GetBoolean(kUseGAIANameKey, &value); |
+// return value; |
+// } |
+ |
+const gfx::Image* ProfileInfoCache::GetGAIAPictureOfProfile( |
+ const base::FilePath& profile_path) const { |
+ ProfileInfoEntry info; |
+ if (!GetInfoForProfile(profile_path, &info)) |
+ return NULL; |
-const gfx::Image* ProfileInfoCache::GetGAIAPictureOfProfileAtIndex( |
- size_t index) const { |
- base::FilePath path = GetPathOfProfileAtIndex(index); |
- std::string key = CacheKeyFromProfilePath(path); |
+ std::string key = CacheKeyFromProfilePath(profile_path); |
// If the picture is already loaded then use it. |
if (gaia_pictures_.count(key)) { |
@@ -369,9 +435,7 @@ const gfx::Image* ProfileInfoCache::GetGAIAPictureOfProfileAtIndex( |
return gaia_pictures_[key]; |
} |
- std::string file_name; |
- GetInfoForProfileAtIndex(index)->GetString( |
- kGAIAPictureFileNameKey, &file_name); |
+ std::string file_name = info.GAIA_picture_file_name(); |
// If the picture is not on disk or it is already being loaded then return |
// NULL. |
@@ -379,32 +443,33 @@ const gfx::Image* ProfileInfoCache::GetGAIAPictureOfProfileAtIndex( |
return NULL; |
gaia_pictures_loading_[key] = true; |
- base::FilePath image_path = path.AppendASCII(file_name); |
+ base::FilePath image_path = profile_path.AppendASCII(file_name); |
gfx::Image** image = new gfx::Image*; |
BrowserThread::PostTaskAndReply(BrowserThread::FILE, FROM_HERE, |
base::Bind(&ReadBitmap, image_path, image), |
base::Bind(&ProfileInfoCache::OnGAIAPictureLoaded, |
- const_cast<ProfileInfoCache*>(this)->AsWeakPtr(), path, image)); |
+ const_cast<ProfileInfoCache*>(this)->AsWeakPtr(), |
+ profile_path, image)); |
return NULL; |
} |
-bool ProfileInfoCache::ProfileIsManagedAtIndex(size_t index) const { |
- return !GetManagedUserIdOfProfileAtIndex(index).empty(); |
-} |
+// bool ProfileInfoCache::ProfileIsManagedAtIndex(size_t index) const { |
+// return !GetManagedUserIdOfProfileAtIndex(index).empty(); |
+// } |
-bool ProfileInfoCache::ProfileIsSigninRequiredAtIndex(size_t index) const { |
- bool value = false; |
- GetInfoForProfileAtIndex(index)->GetBoolean(kSigninRequiredKey, &value); |
- return value; |
-} |
+// bool ProfileInfoCache::ProfileIsSigninRequiredAtIndex(size_t index) const { |
+// bool value = false; |
+// GetInfoForProfileAtIndex(index)->GetBoolean(kSigninRequiredKey, &value); |
+// return value; |
+// } |
-std::string ProfileInfoCache::GetManagedUserIdOfProfileAtIndex( |
- size_t index) const { |
- std::string managed_user_id; |
- GetInfoForProfileAtIndex(index)->GetString(kManagedUserId, &managed_user_id); |
- return managed_user_id; |
-} |
+// std::string ProfileInfoCache::GetManagedUserIdOfProfileAtIndex( |
+// size_t index) const { |
+// std::string managed_user_id; |
+// GetInfoForProfileAtIndex(index)->GetString(kManagedUserId, &managed_user_id); |
+// return managed_user_id; |
+// } |
bool ProfileInfoCache::ProfileIsEphemeralAtIndex(size_t index) const { |
bool value = false; |
@@ -447,158 +512,160 @@ void ProfileInfoCache::OnGAIAPictureSaved(const base::FilePath& path, |
delete success; |
} |
-bool ProfileInfoCache::IsUsingGAIAPictureOfProfileAtIndex( |
- size_t index) const { |
- bool value = false; |
- GetInfoForProfileAtIndex(index)->GetBoolean(kUseGAIAPictureKey, &value); |
- return value; |
-} |
- |
-size_t ProfileInfoCache::GetAvatarIconIndexOfProfileAtIndex(size_t index) |
- const { |
- std::string icon_url; |
- GetInfoForProfileAtIndex(index)->GetString(kAvatarIconKey, &icon_url); |
- size_t icon_index = 0; |
- if (!IsDefaultAvatarIconUrl(icon_url, &icon_index)) |
- DLOG(WARNING) << "Unknown avatar icon: " << icon_url; |
- |
- return icon_index; |
-} |
- |
-void ProfileInfoCache::SetNameOfProfileAtIndex(size_t index, |
- const string16& name) { |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- string16 current_name; |
- info->GetString(kNameKey, ¤t_name); |
- if (name == current_name) |
- return; |
- |
- string16 old_display_name = GetNameOfProfileAtIndex(index); |
- info->SetString(kNameKey, name); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
- string16 new_display_name = GetNameOfProfileAtIndex(index); |
- base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
- UpdateSortForProfileIndex(index); |
- |
- if (old_display_name != new_display_name) { |
- FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
- observer_list_, |
- OnProfileNameChanged(profile_path, old_display_name)); |
- } |
-} |
- |
-void ProfileInfoCache::SetShortcutNameOfProfileAtIndex( |
- size_t index, |
- const string16& shortcut_name) { |
- if (shortcut_name == GetShortcutNameOfProfileAtIndex(index)) |
- return; |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kShortcutNameKey, shortcut_name); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
- |
-void ProfileInfoCache::SetUserNameOfProfileAtIndex(size_t index, |
- const string16& user_name) { |
- if (user_name == GetUserNameOfProfileAtIndex(index)) |
- return; |
- |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kUserNameKey, user_name); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
- |
-void ProfileInfoCache::SetAvatarIconOfProfileAtIndex(size_t index, |
- size_t icon_index) { |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kAvatarIconKey, GetDefaultAvatarIconUrl(icon_index)); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
- |
- base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
- FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
- observer_list_, |
- OnProfileAvatarChanged(profile_path)); |
-} |
- |
-void ProfileInfoCache::SetManagedUserIdOfProfileAtIndex(size_t index, |
- const std::string& id) { |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kManagedUserId, id); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
- |
-void ProfileInfoCache::SetBackgroundStatusOfProfileAtIndex( |
- size_t index, |
- bool running_background_apps) { |
- if (GetBackgroundStatusOfProfileAtIndex(index) == running_background_apps) |
- return; |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetBoolean(kBackgroundAppsKey, running_background_apps); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
- |
-void ProfileInfoCache::SetGAIANameOfProfileAtIndex(size_t index, |
- const string16& name) { |
- if (name == GetGAIANameOfProfileAtIndex(index)) |
- return; |
- |
- string16 old_display_name = GetNameOfProfileAtIndex(index); |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kGAIANameKey, name); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
- string16 new_display_name = GetNameOfProfileAtIndex(index); |
- base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
- UpdateSortForProfileIndex(index); |
- |
- if (old_display_name != new_display_name) { |
- FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
- observer_list_, |
- OnProfileNameChanged(profile_path, old_display_name)); |
- } |
-} |
- |
-void ProfileInfoCache::SetGAIAGivenNameOfProfileAtIndex( |
- size_t index, |
- const string16& name) { |
- if (name == GetGAIAGivenNameOfProfileAtIndex(index)) |
- return; |
- |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kGAIAGivenNameKey, name); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
- |
-void ProfileInfoCache::SetIsUsingGAIANameOfProfileAtIndex(size_t index, |
- bool value) { |
- if (value == IsUsingGAIANameOfProfileAtIndex(index)) |
- return; |
+// bool ProfileInfoCache::IsUsingGAIAPictureOfProfileAtIndex( |
+// size_t index) const { |
+// bool value = false; |
+// GetInfoForProfileAtIndex(index)->GetBoolean(kUseGAIAPictureKey, &value); |
+// return value; |
+// } |
+ |
+// size_t ProfileInfoCache::GetAvatarIconIndexOfProfileAtIndex(size_t index) |
+// const { |
+// std::string icon_url; |
+// GetInfoForProfileAtIndex(index)->GetString(kAvatarIconKey, &icon_url); |
+// size_t icon_index = 0; |
+// if (!IsDefaultAvatarIconUrl(icon_url, &icon_index)) |
+// DLOG(WARNING) << "Unknown avatar icon: " << icon_url; |
+ |
+// return icon_index; |
+// } |
+ |
+// void ProfileInfoCache::SetNameOfProfileAtIndex(size_t index, |
+// const string16& name) { |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// string16 current_name; |
+// info->GetString(kNameKey, ¤t_name); |
+// if (name == current_name) |
+// return; |
+ |
+// string16 old_display_name = GetNameOfProfileAtIndex(index); |
+// info->SetString(kNameKey, name); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// string16 new_display_name = GetNameOfProfileAtIndex(index); |
+// base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
+// UpdateSortForProfileIndex(index); |
+ |
+// if (old_display_name != new_display_name) { |
+// FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
+// observer_list_, |
+// OnProfileNameChanged(profile_path, old_display_name)); |
+// } |
+// } |
+ |
+// void ProfileInfoCache::SetShortcutNameOfProfileAtIndex( |
+// size_t index, |
+// const string16& shortcut_name) { |
+// if (shortcut_name == GetShortcutNameOfProfileAtIndex(index)) |
+// return; |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetString(kShortcutNameKey, shortcut_name); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
+ |
+// void ProfileInfoCache::SetUserNameOfProfileAtIndex(size_t index, |
+// const string16& user_name) { |
+// if (user_name == GetUserNameOfProfileAtIndex(index)) |
+// return; |
+ |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetString(kUserNameKey, user_name); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
+ |
+// void ProfileInfoCache::SetAvatarIconOfProfileAtIndex(size_t index, |
+// size_t icon_index) { |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetString(kAvatarIconKey, GetDefaultAvatarIconUrl(icon_index)); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+ |
+// base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
+// FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
+// observer_list_, |
+// OnProfileAvatarChanged(profile_path)); |
+// } |
+ |
+// void ProfileInfoCache::SetManagedUserIdOfProfileAtIndex(size_t index, |
+// const std::string& id) { |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetString(kManagedUserId, id); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
+ |
+// void ProfileInfoCache::SetBackgroundStatusOfProfileAtIndex( |
+// size_t index, |
+// bool running_background_apps) { |
+// if (GetBackgroundStatusOfProfileAtIndex(index) == running_background_apps) |
+// return; |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetBoolean(kBackgroundAppsKey, running_background_apps); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
+ |
+// void ProfileInfoCache::SetGAIANameOfProfileAtIndex(size_t index, |
+// const string16& name) { |
+// if (name == GetGAIANameOfProfileAtIndex(index)) |
+// return; |
+ |
+// string16 old_display_name = GetNameOfProfileAtIndex(index); |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetString(kGAIANameKey, name); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// string16 new_display_name = GetNameOfProfileAtIndex(index); |
+// base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
+// UpdateSortForProfileIndex(index); |
+ |
+// if (old_display_name != new_display_name) { |
+// FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
+// observer_list_, |
+// OnProfileNameChanged(profile_path, old_display_name)); |
+// } |
+// } |
+ |
+// void ProfileInfoCache::SetGAIAGivenNameOfProfileAtIndex( |
+// size_t index, |
+// const string16& name) { |
+// if (name == GetGAIAGivenNameOfProfileAtIndex(index)) |
+// return; |
+ |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetString(kGAIAGivenNameKey, name); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
+ |
+// void ProfileInfoCache::SetIsUsingGAIANameOfProfileAtIndex(size_t index, |
+// bool value) { |
+// if (value == IsUsingGAIANameOfProfileAtIndex(index)) |
+// return; |
+ |
+// string16 old_display_name = GetNameOfProfileAtIndex(index); |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetBoolean(kUseGAIANameKey, value); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// string16 new_display_name = GetNameOfProfileAtIndex(index); |
+// base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
+// UpdateSortForProfileIndex(index); |
+ |
+// if (old_display_name != new_display_name) { |
+// FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
+// observer_list_, |
+// OnProfileNameChanged(profile_path, old_display_name)); |
+// } |
+// } |
+ |
+void ProfileInfoCache::SetGAIAPictureOfProfile(const base::FilePath& path, |
+ const gfx::Image* image) { |
+ ProfileInfoEntry entry; |
+ GetInfoForProfile(path, &entry); |
- string16 old_display_name = GetNameOfProfileAtIndex(index); |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetBoolean(kUseGAIANameKey, value); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
- string16 new_display_name = GetNameOfProfileAtIndex(index); |
- base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
- UpdateSortForProfileIndex(index); |
- |
- if (old_display_name != new_display_name) { |
- FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
- observer_list_, |
- OnProfileNameChanged(profile_path, old_display_name)); |
- } |
-} |
- |
-void ProfileInfoCache::SetGAIAPictureOfProfileAtIndex(size_t index, |
- const gfx::Image* image) { |
- base::FilePath path = GetPathOfProfileAtIndex(index); |
std::string key = CacheKeyFromProfilePath(path); |
// Delete the old bitmap from cache. |
@@ -608,9 +675,7 @@ void ProfileInfoCache::SetGAIAPictureOfProfileAtIndex(size_t index, |
gaia_pictures_.erase(it); |
} |
- std::string old_file_name; |
- GetInfoForProfileAtIndex(index)->GetString( |
- kGAIAPictureFileNameKey, &old_file_name); |
+ std::string old_file_name = entry.GAIA_picture_file_name(); |
std::string new_file_name; |
if (!image) { |
@@ -640,40 +705,38 @@ void ProfileInfoCache::SetGAIAPictureOfProfileAtIndex(size_t index, |
} |
} |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetString(kGAIAPictureFileNameKey, new_file_name); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
+ entry.set_GAIA_picture_file_name(new_file_name); |
+ SetInfoForProfile(entry); |
FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
observer_list_, |
OnProfileAvatarChanged(path)); |
} |
-void ProfileInfoCache::SetIsUsingGAIAPictureOfProfileAtIndex(size_t index, |
- bool value) { |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetBoolean(kUseGAIAPictureKey, value); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
+// void ProfileInfoCache::SetIsUsingGAIAPictureOfProfileAtIndex(size_t index, |
+// bool value) { |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetBoolean(kUseGAIAPictureKey, value); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
- // Retrieve some info to update observers who care about avatar changes. |
- base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
- FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
- observer_list_, |
- OnProfileAvatarChanged(profile_path)); |
-} |
+// // Retrieve some info to update observers who care about avatar changes. |
+// base::FilePath profile_path = GetPathOfProfileAtIndex(index); |
+// FOR_EACH_OBSERVER(ProfileInfoCacheObserver, |
+// observer_list_, |
+// OnProfileAvatarChanged(profile_path)); |
+// } |
-void ProfileInfoCache::SetProfileSigninRequiredAtIndex(size_t index, |
- bool value) { |
- if (value == ProfileIsSigninRequiredAtIndex(index)) |
- return; |
+// void ProfileInfoCache::SetProfileSigninRequiredAtIndex(size_t index, |
+// bool value) { |
+// if (value == ProfileIsSigninRequiredAtIndex(index)) |
+// return; |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetBoolean(kSigninRequiredKey, value); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetBoolean(kSigninRequiredKey, value); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
void ProfileInfoCache::SetProfileIsEphemeralAtIndex(size_t index, bool value) { |
if (value == ProfileIsEphemeralAtIndex(index)) |
@@ -700,8 +763,11 @@ string16 ProfileInfoCache::ChooseNameForNewProfile(size_t icon_index) const { |
// Loop through previously named profiles to ensure we're not duplicating. |
bool name_found = false; |
- for (size_t i = 0; i < GetNumberOfProfiles(); ++i) { |
- if (GetNameOfProfileAtIndex(i) == name) { |
+ |
+ const std::vector<ProfileInfoEntry> entries(GetProfilesSortedByName()); |
+ for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin(); |
+ it != entries.end(); ++it) { |
+ if (it->GetDisplayName() == name) { |
name_found = true; |
break; |
} |
@@ -711,25 +777,27 @@ string16 ProfileInfoCache::ChooseNameForNewProfile(size_t icon_index) const { |
} |
} |
-bool ProfileInfoCache::GetHasMigratedToGAIAInfoOfProfileAtIndex( |
- size_t index) const { |
- bool value = false; |
- GetInfoForProfileAtIndex(index)->GetBoolean( |
- kHasMigratedToGAIAInfoKey, &value); |
- return value; |
-} |
+// bool ProfileInfoCache::GetHasMigratedToGAIAInfoOfProfileAtIndex( |
+// size_t index) const { |
+// bool value = false; |
+// GetInfoForProfileAtIndex(index)->GetBoolean( |
+// kHasMigratedToGAIAInfoKey, &value); |
+// return value; |
+// } |
-void ProfileInfoCache::SetHasMigratedToGAIAInfoOfProfileAtIndex( |
- size_t index, bool value) { |
- scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
- info->SetBoolean(kHasMigratedToGAIAInfoKey, value); |
- // This takes ownership of |info|. |
- SetInfoForProfileAtIndex(index, info.release()); |
-} |
+// void ProfileInfoCache::SetHasMigratedToGAIAInfoOfProfileAtIndex( |
+// size_t index, bool value) { |
+// scoped_ptr<DictionaryValue> info(GetInfoForProfileAtIndex(index)->DeepCopy()); |
+// info->SetBoolean(kHasMigratedToGAIAInfoKey, value); |
+// // This takes ownership of |info|. |
+// SetInfoForProfileAtIndex(index, info.release()); |
+// } |
bool ProfileInfoCache::IconIndexIsUnique(size_t icon_index) const { |
- for (size_t i = 0; i < GetNumberOfProfiles(); ++i) { |
- if (GetAvatarIconIndexOfProfileAtIndex(i) == icon_index) |
+ const std::vector<ProfileInfoEntry> entries(GetProfilesSortedByName()); |
+ for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin(); |
+ it != entries.end(); ++it) { |
+ if (it->icon_index() == icon_index) |
return false; |
} |
return true; |
@@ -819,69 +887,71 @@ bool ProfileInfoCache::IsDefaultAvatarIconUrl(const std::string& url, |
return false; |
} |
-const DictionaryValue* ProfileInfoCache::GetInfoForProfileAtIndex( |
- size_t index) const { |
- DCHECK_LT(index, GetNumberOfProfiles()); |
- const DictionaryValue* cache = |
- prefs_->GetDictionary(prefs::kProfileInfoCache); |
- const DictionaryValue* info = NULL; |
- cache->GetDictionaryWithoutPathExpansion(sorted_keys_[index], &info); |
- return info; |
-} |
- |
-void ProfileInfoCache::SetInfoForProfileAtIndex(size_t index, |
- DictionaryValue* info) { |
- DictionaryPrefUpdate update(prefs_, prefs::kProfileInfoCache); |
- DictionaryValue* cache = update.Get(); |
- cache->SetWithoutPathExpansion(sorted_keys_[index], info); |
- |
- content::NotificationService::current()->Notify( |
- chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
- content::NotificationService::AllSources(), |
- content::NotificationService::NoDetails()); |
-} |
+// const DictionaryValue* ProfileInfoCache::GetInfoForProfileAtIndex( |
+// size_t index) const { |
+// DCHECK_LT(index, GetNumberOfProfiles()); |
+// const DictionaryValue* cache = |
+// prefs_->GetDictionary(prefs::kProfileInfoCache); |
+// const DictionaryValue* info = NULL; |
+// cache->GetDictionaryWithoutPathExpansion(sorted_keys_[index], &info); |
+// return info; |
+// } |
+ |
+// void ProfileInfoCache::SetInfoForProfileAtIndex(size_t index, |
+// DictionaryValue* info) { |
+// DictionaryPrefUpdate update(prefs_, prefs::kProfileInfoCache); |
+// DictionaryValue* cache = update.Get(); |
+// cache->SetWithoutPathExpansion(sorted_keys_[index], info); |
+ |
+// content::NotificationService::current()->Notify( |
+// chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
+// content::NotificationService::AllSources(), |
+// content::NotificationService::NoDetails()); |
+// } |
std::string ProfileInfoCache::CacheKeyFromProfilePath( |
const base::FilePath& profile_path) const { |
- DCHECK(user_data_dir_ == profile_path.DirName()); |
+ //DCHECK(user_data_dir_ == profile_path.DirName()); |
+ LOG(ERROR) << "user data is " << user_data_dir_.MaybeAsASCII(); |
+ LOG(ERROR) << "profile path is " << profile_path.DirName().MaybeAsASCII(); |
base::FilePath base_name = profile_path.BaseName(); |
return base_name.MaybeAsASCII(); |
} |
-std::vector<std::string>::iterator ProfileInfoCache::FindPositionForProfile( |
- const std::string& search_key, |
- const string16& search_name) { |
- string16 search_name_l = base::i18n::ToLower(search_name); |
- for (size_t i = 0; i < GetNumberOfProfiles(); ++i) { |
- string16 name_l = base::i18n::ToLower(GetNameOfProfileAtIndex(i)); |
- int name_compare = search_name_l.compare(name_l); |
- if (name_compare < 0) |
- return sorted_keys_.begin() + i; |
- if (name_compare == 0) { |
- int key_compare = search_key.compare(sorted_keys_[i]); |
- if (key_compare < 0) |
- return sorted_keys_.begin() + i; |
- } |
- } |
- return sorted_keys_.end(); |
-} |
- |
-void ProfileInfoCache::UpdateSortForProfileIndex(size_t index) { |
- string16 name = GetNameOfProfileAtIndex(index); |
- |
- // Remove and reinsert key in |sorted_keys_| to alphasort. |
- std::string key = CacheKeyFromProfilePath(GetPathOfProfileAtIndex(index)); |
- std::vector<std::string>::iterator key_it = |
- std::find(sorted_keys_.begin(), sorted_keys_.end(), key); |
- DCHECK(key_it != sorted_keys_.end()); |
- sorted_keys_.erase(key_it); |
- sorted_keys_.insert(FindPositionForProfile(key, name), key); |
- |
- content::NotificationService::current()->Notify( |
- chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
- content::NotificationService::AllSources(), |
- content::NotificationService::NoDetails()); |
-} |
+// std::vector<std::string>::iterator ProfileInfoCache::FindPositionForProfile( |
+// const std::string& search_key, |
+// const string16& search_name) { |
+// string16 search_name_l = base::i18n::ToLower(search_name); |
+// for (size_t i = 0; i < GetNumberOfProfiles(); ++i) { |
+// string16 name_l = base::i18n::ToLower(GetNameOfProfileAtIndex(i)); |
+// int name_compare = search_name_l.compare(name_l); |
+// if (name_compare < 0) |
+// return sorted_keys_.begin() + i; |
+// if (name_compare == 0) { |
+// int key_compare = search_key.compare(sorted_keys_[i]); |
+// if (key_compare < 0) |
+// return sorted_keys_.begin() + i; |
+// } |
+// } |
+// return sorted_keys_.end(); |
+// } |
+ |
+// void ProfileInfoCache::UpdateSortForProfileIndex(size_t index) { |
+// string16 name = GetNameOfProfileAtIndex(index); |
+ |
+// // Remove and reinsert key in |sorted_keys_| to alphasort. |
+// std::string key = CacheKeyFromProfilePath(GetPathOfProfileAtIndex(index)); |
+// std::vector<std::string>::iterator key_it = |
+// std::find(sorted_keys_.begin(), sorted_keys_.end(), key); |
+// DCHECK(key_it != sorted_keys_.end()); |
+// sorted_keys_.erase(key_it); |
+// sorted_keys_.insert(FindPositionForProfile(key, name), key); |
+ |
+// content::NotificationService::current()->Notify( |
+// chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, |
+// content::NotificationService::AllSources(), |
+// content::NotificationService::NoDetails()); |
+// } |
// static |
std::vector<string16> ProfileInfoCache::GetProfileNames() { |