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

Unified Diff: chrome/browser/ui/webui/signin/user_manager_screen_handler.cc

Issue 840673004: The User Manager needs to use profile paths not display names for profile switching (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix tests on windows too. paths. sigh. Created 5 years, 11 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/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 dbdbbcf254c15396b229e29dbd4b687aaf7bc693..85d878fe07ef2e052aaf6a784b54bf40a74d69ae 100644
--- a/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
+++ b/chrome/browser/ui/webui/signin/user_manager_screen_handler.cc
@@ -111,26 +111,21 @@ std::string GetAvatarImageAtIndex(
return webui::GetBitmapDataUrl(resized_image.AsBitmap());
}
-size_t GetIndexOfProfileWithEmailAndName(const ProfileInfoCache& info_cache,
- const base::string16& email,
- const base::string16& name) {
+size_t GetIndexOfProfileWithEmail(const ProfileInfoCache& info_cache,
+ const std::string& email) {
+ const base::string16& profile_email = base::UTF8ToUTF16(email);
for (size_t i = 0; i < info_cache.GetNumberOfProfiles(); ++i) {
- if (info_cache.GetUserNameOfProfileAtIndex(i) == email &&
- (name.empty() ||
- profiles::GetAvatarNameForProfile(
- info_cache.GetPathOfProfileAtIndex(i)) == name)) {
+ if (info_cache.GetUserNameOfProfileAtIndex(i) == profile_email)
return i;
- }
}
return std::string::npos;
}
extensions::ScreenlockPrivateEventRouter* GetScreenlockRouter(
const std::string& email) {
- ProfileInfoCache& info_cache =
+ const ProfileInfoCache& info_cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- const size_t profile_index = GetIndexOfProfileWithEmailAndName(
- info_cache, base::UTF8ToUTF16(email), base::string16());
+ const size_t profile_index = GetIndexOfProfileWithEmail(info_cache, email);
Profile* profile = g_browser_process->profile_manager()
->GetProfileByPath(info_cache.GetPathOfProfileAtIndex(profile_index));
return extensions::ScreenlockPrivateEventRouter::GetFactoryInstance()->Get(
@@ -275,10 +270,10 @@ ScreenlockBridge::LockHandler::AuthType UserManagerScreenHandler::GetAuthType(
}
void UserManagerScreenHandler::Unlock(const std::string& user_email) {
- ProfileInfoCache& info_cache =
+ const ProfileInfoCache& info_cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- const size_t profile_index = GetIndexOfProfileWithEmailAndName(
- info_cache, base::UTF8ToUTF16(user_email), base::string16());
+ const size_t profile_index =
+ GetIndexOfProfileWithEmail(info_cache, user_email);
DCHECK_LT(profile_index, info_cache.GetNumberOfProfiles());
authenticating_profile_index_ = profile_index;
@@ -321,23 +316,27 @@ void UserManagerScreenHandler::HandleAddUser(const base::ListValue* args) {
void UserManagerScreenHandler::HandleAuthenticatedLaunchUser(
const base::ListValue* args) {
- base::string16 email_address;
- if (!args->GetString(0, &email_address))
+ const base::Value* profile_path_value;
+ if (!args->Get(0, &profile_path_value))
+ return;
+
+ base::FilePath profile_path;
+ if (!base::GetValueAsFilePath(*profile_path_value, &profile_path))
return;
- base::string16 display_name;
- if (!args->GetString(1, &display_name))
+ base::string16 email_address;
+ if (!args->GetString(1, &email_address))
return;
std::string password;
if (!args->GetString(2, &password))
return;
- ProfileInfoCache& info_cache =
+ const ProfileInfoCache& info_cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- size_t profile_index = GetIndexOfProfileWithEmailAndName(
- info_cache, email_address, display_name);
- if (profile_index >= info_cache.GetNumberOfProfiles()) {
+ size_t profile_index = info_cache.GetIndexOfProfileWithPath(profile_path);
+
+ if (profile_index == std::string::npos) {
NOTREACHED();
return;
}
@@ -351,10 +350,9 @@ void UserManagerScreenHandler::HandleAuthenticatedLaunchUser(
this,
GaiaConstants::kChromeSource,
web_ui()->GetWebContents()->GetBrowserContext()->GetRequestContext()));
- std::string email_string;
- args->GetString(0, &email_string);
+
client_login_->StartClientLogin(
- email_string,
+ base::UTF16ToUTF8(email_address),
password,
GaiaConstants::kSyncService,
std::string(),
@@ -408,21 +406,19 @@ void UserManagerScreenHandler::HandleLaunchGuest(const base::ListValue* args) {
}
void UserManagerScreenHandler::HandleLaunchUser(const base::ListValue* args) {
- base::string16 email_address;
- base::string16 display_name;
+ const base::Value* profile_path_value = NULL;
+ if (!args->Get(0, &profile_path_value))
+ return;
- if (!args->GetString(0, &email_address) ||
- !args->GetString(1, &display_name)) {
- NOTREACHED();
+ base::FilePath profile_path;
+ if (!base::GetValueAsFilePath(*profile_path_value, &profile_path))
return;
- }
- ProfileInfoCache& info_cache =
+ const ProfileInfoCache& info_cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
- size_t profile_index = GetIndexOfProfileWithEmailAndName(
- info_cache, email_address, display_name);
+ size_t profile_index = info_cache.GetIndexOfProfileWithPath(profile_path);
- if (profile_index >= info_cache.GetNumberOfProfiles()) {
+ if (profile_index == std::string::npos) {
NOTREACHED();
return;
}
@@ -436,9 +432,8 @@ void UserManagerScreenHandler::HandleLaunchUser(const base::ListValue* args) {
return;
ProfileMetrics::LogProfileAuthResult(ProfileMetrics::AUTH_UNNECESSARY);
- base::FilePath path = info_cache.GetPathOfProfileAtIndex(profile_index);
profiles::SwitchToProfile(
- path,
+ profile_path,
desktop_type_,
false, /* reuse any existing windows */
base::Bind(&UserManagerScreenHandler::OnSwitchToProfileComplete,
@@ -667,7 +662,8 @@ void UserManagerScreenHandler::SendUserList() {
profile_value->SetString(
kKeyDisplayName,
profiles::GetAvatarNameForProfile(profile_path));
- profile_value->SetString(kKeyProfilePath, profile_path.MaybeAsASCII());
+ profile_value->Set(
+ kKeyProfilePath, base::CreateFilePathValue(profile_path));
profile_value->SetBoolean(kKeyPublicAccount, false);
profile_value->SetBoolean(
kKeySupervisedUser, info_cache.ProfileIsSupervisedAtIndex(i));
@@ -700,7 +696,7 @@ void UserManagerScreenHandler::ReportAuthenticationResult(
password_attempt_.clear();
if (success) {
- ProfileInfoCache& info_cache =
+ const ProfileInfoCache& info_cache =
g_browser_process->profile_manager()->GetProfileInfoCache();
base::FilePath path = info_cache.GetPathOfProfileAtIndex(
authenticating_profile_index_);
« no previous file with comments | « chrome/browser/resources/user_manager/user_manager.js ('k') | chrome/browser/ui/webui/signin/user_manager_ui_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698