| Index: chrome/browser/ui/ash/multi_user/multi_user_util.cc
|
| diff --git a/chrome/browser/ui/ash/multi_user/multi_user_util.cc b/chrome/browser/ui/ash/multi_user/multi_user_util.cc
|
| index 604749bfd8e6a980732df7b6110e5cddf9a55d17..5194df2dd239a8bf6a859978e49db8bbb57bf6c4 100644
|
| --- a/chrome/browser/ui/ash/multi_user/multi_user_util.cc
|
| +++ b/chrome/browser/ui/ash/multi_user/multi_user_util.cc
|
| @@ -10,6 +10,7 @@
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| +#include "components/signin/core/account_id/account_id.h"
|
| #include "google_apis/gaia/gaia_auth_util.h"
|
|
|
| #if defined(OS_CHROMEOS)
|
| @@ -19,18 +20,19 @@
|
|
|
| namespace multi_user_util {
|
|
|
| -std::string GetUserIDFromProfile(Profile* profile) {
|
| - return GetUserIDFromEmail(
|
| +AccountId GetAccountIdFromProfile(Profile* profile) {
|
| + return GetAccountIdFromEmail(
|
| profile->GetOriginalProfile()->GetProfileUserName());
|
| }
|
|
|
| -std::string GetUserIDFromEmail(const std::string& email) {
|
| +AccountId GetAccountIdFromEmail(const std::string& email) {
|
| // |email| and profile name could be empty if not yet logged in or guest mode.
|
| - return email.empty() ?
|
| - email : gaia::CanonicalizeEmail(gaia::SanitizeEmail(email));
|
| + return email.empty() ? EmptyAccountId()
|
| + : AccountId::FromUserEmail(gaia::CanonicalizeEmail(
|
| + gaia::SanitizeEmail(email)));
|
| }
|
|
|
| -Profile* GetProfileFromUserID(const std::string& user_id) {
|
| +Profile* GetProfileFromAccountId(const AccountId& account_id) {
|
| // Unit tests can end up here without a |g_browser_process|.
|
| if (!g_browser_process || !g_browser_process->profile_manager())
|
| return NULL;
|
| @@ -40,7 +42,7 @@ Profile* GetProfileFromUserID(const std::string& user_id) {
|
|
|
| std::vector<Profile*>::const_iterator profile_iterator = profiles.begin();
|
| for (; profile_iterator != profiles.end(); ++profile_iterator) {
|
| - if (GetUserIDFromProfile(*profile_iterator) == user_id)
|
| + if (GetAccountIdFromProfile(*profile_iterator) == account_id)
|
| return *profile_iterator;
|
| }
|
| return NULL;
|
| @@ -52,19 +54,18 @@ Profile* GetProfileFromWindow(aura::Window* window) {
|
| chrome::MultiUserWindowManager::GetInstance();
|
| // We might come here before the manager got created - or in a unit test.
|
| if (!manager)
|
| - return NULL;
|
| - const std::string user_id = manager->GetUserPresentingWindow(window);
|
| - return user_id.empty() ? NULL :
|
| - multi_user_util::GetProfileFromUserID(user_id);
|
| + return nullptr;
|
| + const AccountId account_id = manager->GetUserPresentingWindow(window);
|
| + return account_id.is_valid() ? GetProfileFromAccountId(account_id) : nullptr;
|
| #else
|
| - return NULL;
|
| + return nullptr;
|
| #endif
|
| }
|
|
|
| bool IsProfileFromActiveUser(Profile* profile) {
|
| #if defined(OS_CHROMEOS)
|
| - return GetUserIDFromProfile(profile) ==
|
| - user_manager::UserManager::Get()->GetActiveUser()->email();
|
| + return GetAccountIdFromProfile(profile) ==
|
| + user_manager::UserManager::Get()->GetActiveUser()->GetAccountId();
|
| #else
|
| // In non Chrome OS configurations this will be always true since this only
|
| // makes sense in separate desktop mode.
|
| @@ -72,21 +73,24 @@ bool IsProfileFromActiveUser(Profile* profile) {
|
| #endif
|
| }
|
|
|
| -const std::string& GetCurrentUserId() {
|
| +const AccountId GetCurrentAccountId() {
|
| #if defined(OS_CHROMEOS)
|
| - return user_manager::UserManager::Get()->GetActiveUser()->email();
|
| -#else
|
| - return base::EmptyString();
|
| + const user_manager::User* user =
|
| + user_manager::UserManager::Get()->GetActiveUser();
|
| + // In unit tests user login phase is usually skipped.
|
| + if (user)
|
| + return user->GetAccountId();
|
| #endif
|
| + return EmptyAccountId();
|
| }
|
|
|
| // Move the window to the current user's desktop.
|
| void MoveWindowToCurrentDesktop(aura::Window* window) {
|
| #if defined(OS_CHROMEOS)
|
| if (!chrome::MultiUserWindowManager::GetInstance()->IsWindowOnDesktopOfUser(
|
| - window, GetCurrentUserId())) {
|
| + window, GetCurrentAccountId())) {
|
| chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser(
|
| - window, GetCurrentUserId());
|
| + window, GetCurrentAccountId());
|
| }
|
| #endif
|
| }
|
|
|