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

Unified Diff: chrome/browser/ui/webui/options/manage_profile_handler.cc

Issue 33753002: Sooper experimental refactoring of the profile info cache. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 7 years, 2 months 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
Index: chrome/browser/ui/webui/options/manage_profile_handler.cc
diff --git a/chrome/browser/ui/webui/options/manage_profile_handler.cc b/chrome/browser/ui/webui/options/manage_profile_handler.cc
index d5d72488c42873e9c00eb7f304cccaa181145881..ca5ece14ab9dcf8ee611ca3d4fe955eae338de19 100644
--- a/chrome/browser/ui/webui/options/manage_profile_handler.cc
+++ b/chrome/browser/ui/webui/options/manage_profile_handler.cc
@@ -245,10 +245,11 @@ void ManageProfileHandler::SendProfileIcons(
const ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
Profile* profile = Profile::FromWebUI(web_ui());
- size_t profile_index = cache.GetIndexOfProfileWithPath(profile->GetPath());
- if (profile_index != std::string::npos) {
+
+ ProfileInfoEntry entry;
+ if (cache.GetInfoForProfile(profile->GetPath(), &entry)) {
const gfx::Image* icon =
- cache.GetGAIAPictureOfProfileAtIndex(profile_index);
+ cache.GetGAIAPictureOfProfile(profile->GetPath());
if (icon) {
gfx::Image icon2 = profiles::GetAvatarIconForWebUI(*icon, true);
gaia_picture_url_ = webui::GetBitmapDataUrl(icon2.AsBitmap());
@@ -271,9 +272,12 @@ void ManageProfileHandler::SendProfileNames() {
const ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
DictionaryValue profile_name_dict;
- for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i)
- profile_name_dict.SetBoolean(UTF16ToUTF8(cache.GetNameOfProfileAtIndex(i)),
- true);
+
+ const std::vector<ProfileInfoEntry> entries(cache.GetProfilesSortedByName());
+ for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin();
+ it != entries.end(); ++it) {
+ profile_name_dict.SetBoolean(UTF16ToUTF8(it->GetDisplayName()), true);
+ }
web_ui()->CallJavascriptFunction("ManageProfileOverlay.receiveProfileNames",
profile_name_dict);
@@ -288,8 +292,9 @@ void ManageProfileHandler::SetProfileIconAndName(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)
+
+ ProfileInfoEntry entry;
+ if (!cache.GetInfoForProfile(profile_file_path, &entry))
return;
Profile* profile =
@@ -302,12 +307,11 @@ void ManageProfileHandler::SetProfileIconAndName(const ListValue* args) {
return;
// Metrics logging variable.
- bool previously_using_gaia_icon =
- cache.IsUsingGAIAPictureOfProfileAtIndex(profile_index);
+ bool previously_using_gaia_icon = entry.is_using_GAIA_picture();
size_t new_icon_index;
if (icon_url == gaia_picture_url_) {
- cache.SetIsUsingGAIAPictureOfProfileAtIndex(profile_index, true);
+ entry.set_is_using_GAIA_picture(true);
if (!previously_using_gaia_icon) {
// Only log if they changed to the GAIA photo.
// Selection of GAIA photo as avatar is logged as part of the function
@@ -320,9 +324,10 @@ void ManageProfileHandler::SetProfileIconAndName(const ListValue* args) {
// 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);
+ entry.set_is_using_GAIA_picture(true);
}
ProfileMetrics::LogProfileUpdate(profile_file_path);
+ cache.SetInfoForProfile(entry);
if (profile->IsManaged())
return;
@@ -331,26 +336,20 @@ void ManageProfileHandler::SetProfileIconAndName(const ListValue* args) {
if (!args->GetString(2, &new_profile_name))
return;
- if ((new_profile_name ==
- cache.GetGAIAGivenNameOfProfileAtIndex(profile_index)) ||
- (new_profile_name == cache.GetGAIANameOfProfileAtIndex(profile_index))) {
+ if ((new_profile_name == entry.GAIA_given_name()) ||
+ (new_profile_name == entry.GAIA_full_name())) {
// 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
// it's not a big deal.
- cache.SetIsUsingGAIANameOfProfileAtIndex(profile_index, true);
+ entry.set_is_using_GAIA_name(true);
} else {
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)
- return;
-
- cache.SetIsUsingGAIANameOfProfileAtIndex(profile_index, false);
+ entry.set_is_using_GAIA_name(false);
}
+ cache.SetInfoForProfile(entry);
}
#if defined(ENABLE_SETTINGS_APP)
@@ -398,10 +397,12 @@ void ManageProfileHandler::ProfileIconSelectionChanged(
// or the first name.
ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- size_t profile_index = cache.GetIndexOfProfileWithPath(profile_file_path);
- if (profile_index == std::string::npos)
+
+ ProfileInfoEntry entry;
+ if (!cache.GetInfoForProfile(profile_file_path, &entry))
return;
- string16 gaia_name = cache.GetNameOfProfileAtIndex(profile_index);
+
+ string16 gaia_name = entry.GetDisplayName();
if (gaia_name.empty())
return;
@@ -420,12 +421,12 @@ void ManageProfileHandler::RequestHasProfileShortcuts(const ListValue* args) {
const ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- size_t profile_index = cache.GetIndexOfProfileWithPath(profile_file_path);
- if (profile_index == std::string::npos)
+
+ ProfileInfoEntry entry;
+ if (!cache.GetInfoForProfile(profile_file_path, &entry))
return;
- const base::FilePath profile_path =
- cache.GetPathOfProfileAtIndex(profile_index);
+ const base::FilePath profile_path = entry.path();
ProfileShortcutManager* shortcut_manager =
g_browser_process->profile_manager()->profile_shortcut_manager();
shortcut_manager->HasProfileShortcuts(

Powered by Google App Engine
This is Rietveld 408576698