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

Unified Diff: chrome/browser/ui/webui/signin/user_manager_screen_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
« no previous file with comments | « chrome/browser/ui/webui/options/managed_user_import_handler.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
diff --git a/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc b/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
index 5fa8b1b918e4d080702f169c4ef0d44fc75b7343..180dcdcf46515513e1e6d7208ad9e79f363b5f82 100644
--- a/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
+++ b/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_info_cache.h"
#include "chrome/browser/profiles/profile_info_cache_observer.h"
+#include "chrome/browser/profiles/profile_info_entry.h"
#include "chrome/browser/profiles/profile_info_util.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/profiles/profile_window.h"
@@ -76,14 +77,14 @@ void OpenNewWindowForProfile(
false);
}
-std::string GetAvatarImageAtIndex(
- size_t index, const ProfileInfoCache& info_cache) {
- bool is_gaia_picture =
- info_cache.IsUsingGAIAPictureOfProfileAtIndex(index) &&
- info_cache.GetGAIAPictureOfProfileAtIndex(index);
+std::string GetAvatarImageForProfile(const base::FilePath profile_path,
+ bool is_using_GAIA_picture,
+ const ProfileInfoCache& info_cache) {
+ bool is_gaia_picture = is_using_GAIA_picture &&
+ info_cache.GetGAIAPictureOfProfile(profile_path);
gfx::Image icon = profiles::GetSizedAvatarIconWithBorder(
- info_cache.GetAvatarIconOfProfileAtIndex(index),
+ info_cache.GetAvatarIconOfProfile(profile_path),
is_gaia_picture, kAvatarIconSize, kAvatarIconSize);
return webui::GetBitmapDataUrl(icon.AsBitmap());
}
@@ -205,14 +206,15 @@ void UserManagerScreenHandler::HandleLaunchUser(const base::ListValue* args) {
return;
}
- ProfileInfoCache& info_cache =
+ ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- for (size_t i = 0; i < info_cache.GetNumberOfProfiles(); ++i) {
- if (info_cache.GetUserNameOfProfileAtIndex(i) == emailAddress &&
- info_cache.GetNameOfProfileAtIndex(i) == displayName) {
- base::FilePath path = info_cache.GetPathOfProfileAtIndex(i);
- profiles::SwitchToProfile(path, desktop_type_, true);
+ const std::vector<ProfileInfoEntry> entries(cache.GetProfilesSortedByName());
+ for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin();
+ it != entries.end(); ++it) {
+ if (it->user_name() == emailAddress &&
+ it->GetDisplayName() == displayName) {
+ profiles::SwitchToProfile(it->path(), desktop_type_, true);
break;
}
}
@@ -303,35 +305,34 @@ void UserManagerScreenHandler::SendUserList() {
ListValue users_list;
base::FilePath active_profile_path =
web_ui()->GetWebContents()->GetBrowserContext()->GetPath();
- const ProfileInfoCache& info_cache =
+ const ProfileInfoCache& cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
// If the active user is a managed user, then they may not perform
// certain actions (i.e. delete another user).
bool active_user_is_managed = Profile::FromWebUI(web_ui())->IsManaged();
- for (size_t i = 0; i < info_cache.GetNumberOfProfiles(); ++i) {
- DictionaryValue* profile_value = new DictionaryValue();
- base::FilePath profile_path = info_cache.GetPathOfProfileAtIndex(i);
- bool is_active_user = (profile_path == active_profile_path);
+ const std::vector<ProfileInfoEntry> entries(cache.GetProfilesSortedByName());
+ for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin();
+ it != entries.end(); ++it) {
+ bool is_active_user = (it->path() == active_profile_path);
- profile_value->SetString(
- kKeyUsername, info_cache.GetUserNameOfProfileAtIndex(i));
- profile_value->SetString(
- kKeyEmailAddress, info_cache.GetUserNameOfProfileAtIndex(i));
- profile_value->SetString(
- kKeyDisplayName, info_cache.GetNameOfProfileAtIndex(i));
- profile_value->SetString(kKeyProfilePath, profile_path.MaybeAsASCII());
+ DictionaryValue* profile_value = new DictionaryValue();
+ profile_value->SetString(kKeyUsername, it->user_name());
+ profile_value->SetString(kKeyEmailAddress, it->user_name());
+ profile_value->SetString(kKeyDisplayName, it->GetDisplayName());
+ profile_value->SetString(kKeyProfilePath, it->path().MaybeAsASCII());
profile_value->SetBoolean(kKeyPublicAccount, false);
profile_value->SetBoolean(kKeyLocallyManagedUser, false);
profile_value->SetBoolean(kKeySignedIn, is_active_user);
- profile_value->SetBoolean(
- kKeyNeedsSignin, info_cache.ProfileIsSigninRequiredAtIndex(i));
+ profile_value->SetBoolean(kKeyNeedsSignin, it->is_signin_required());
profile_value->SetBoolean(kKeyIsOwner, false);
profile_value->SetBoolean(kKeyCanRemove, !active_user_is_managed);
profile_value->SetBoolean(kKeyIsDesktop, true);
- profile_value->SetString(
- kKeyAvatarUrl, GetAvatarImageAtIndex(i, info_cache));
+ profile_value->SetString(kKeyAvatarUrl,
+ GetAvatarImageForProfile(it->path(),
+ it->is_using_GAIA_picture(),
+ cache));
// The row of user pods should display the active user first.
if (is_active_user)
« no previous file with comments | « chrome/browser/ui/webui/options/managed_user_import_handler.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698