Index: chrome/browser/chromeos/login/users/multi_profile_user_controller.cc |
diff --git a/chrome/browser/chromeos/login/users/multi_profile_user_controller.cc b/chrome/browser/chromeos/login/users/multi_profile_user_controller.cc |
index e1733004c33b8498b9b61207681b6c05dfd0f717..8b01f34d21dbfa3643d4d7cf11ddcacc962e9a41 100644 |
--- a/chrome/browser/chromeos/login/users/multi_profile_user_controller.cc |
+++ b/chrome/browser/chromeos/login/users/multi_profile_user_controller.cc |
@@ -18,6 +18,7 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/pref_names.h" |
#include "components/user_manager/user.h" |
+#include "components/user_manager/user_id.h" |
#include "components/user_manager/user_manager.h" |
#include "google_apis/gaia/gaia_auth_util.h" |
@@ -96,7 +97,7 @@ MultiProfileUserController::GetPrimaryUserPolicy() { |
return ALLOWED; |
// Don't allow any secondary profiles if the primary profile is tainted. |
- if (policy::PolicyCertServiceFactory::UsedPolicyCertificates(user->email())) { |
+ if (policy::PolicyCertServiceFactory::UsedPolicyCertificates(user->GetUserID())) { |
// Check directly in local_state before checking if the primary user has |
// a PolicyCertService. His profile may have been tainted previously though |
// he didn't get a PolicyCertService created for this session. |
@@ -125,24 +126,24 @@ MultiProfileUserController::GetPrimaryUserPolicy() { |
} |
bool MultiProfileUserController::IsUserAllowedInSession( |
- const std::string& user_email, |
+ const user_manager::UserID& user_id, |
MultiProfileUserController::UserAllowedInSessionReason* reason) const { |
user_manager::UserManager* user_manager = user_manager::UserManager::Get(); |
CHECK(user_manager); |
const user_manager::User* primary_user = user_manager->GetPrimaryUser(); |
- std::string primary_user_email; |
+ user_manager::UserID primary_user_id = user_manager::UserID(std::string(), std::string()); |
Denis Kuznetsov (DE-MUC)
2015/06/10 16:50:45
EmptyGaiaID() ?
|
if (primary_user) |
- primary_user_email = primary_user->email(); |
+ primary_user_id = primary_user->GetUserID(); |
// Always allow if there is no primary user or user being checked is the |
// primary user. |
- if (primary_user_email.empty() || primary_user_email == user_email) |
+ if (primary_user_id.empty() || primary_user_id == user_id) |
return SetUserAllowedReason(reason, ALLOWED); |
// Don't allow profiles potentially tainted by data fetched with policy-pushed |
// certificates to join a multiprofile session. |
- if (policy::PolicyCertServiceFactory::UsedPolicyCertificates(user_email)) |
+ if (policy::PolicyCertServiceFactory::UsedPolicyCertificates(user_id)) |
return SetUserAllowedReason(reason, NOT_ALLOWED_POLICY_CERT_TAINTED); |
UserAllowedInSessionReason primary_user_policy = GetPrimaryUserPolicy(); |
@@ -150,7 +151,7 @@ bool MultiProfileUserController::IsUserAllowedInSession( |
return SetUserAllowedReason(reason, primary_user_policy); |
// The user must have 'unrestricted' policy to be a secondary user. |
- const std::string behavior = GetCachedValue(user_email); |
+ const std::string behavior = GetCachedValue(user_id); |
return SetUserAllowedReason( |
reason, |
behavior == kBehaviorUnrestricted ? ALLOWED : NOT_ALLOWED_POLICY_FORBIDS); |
@@ -174,30 +175,30 @@ void MultiProfileUserController::StartObserving(Profile* user_profile) { |
} |
void MultiProfileUserController::RemoveCachedValues( |
- const std::string& user_email) { |
+ const user_manager::UserID& user_id) { |
DictionaryPrefUpdate update(local_state_, |
prefs::kCachedMultiProfileUserBehavior); |
- update->RemoveWithoutPathExpansion(user_email, NULL); |
- policy::PolicyCertServiceFactory::ClearUsedPolicyCertificates(user_email); |
+ update->RemoveWithoutPathExpansion(user_id.GetUserEmail(), NULL); |
+ policy::PolicyCertServiceFactory::ClearUsedPolicyCertificates(user_id); |
} |
std::string MultiProfileUserController::GetCachedValue( |
- const std::string& user_email) const { |
+ const user_manager::UserID& user_id) const { |
const base::DictionaryValue* dict = |
local_state_->GetDictionary(prefs::kCachedMultiProfileUserBehavior); |
std::string value; |
- if (dict && dict->GetStringWithoutPathExpansion(user_email, &value)) |
+ if (dict && dict->GetStringWithoutPathExpansion(user_id.GetUserEmail(), &value)) |
return SanitizeBehaviorValue(value); |
return std::string(kBehaviorUnrestricted); |
} |
void MultiProfileUserController::SetCachedValue( |
- const std::string& user_email, |
+ const user_manager::UserID& user_id, |
const std::string& behavior) { |
DictionaryPrefUpdate update(local_state_, |
prefs::kCachedMultiProfileUserBehavior); |
- update->SetStringWithoutPathExpansion(user_email, |
+ update->SetStringWithoutPathExpansion(user_id.GetUserEmail(), |
SanitizeBehaviorValue(behavior)); |
} |
@@ -207,8 +208,8 @@ void MultiProfileUserController::CheckSessionUsers() { |
for (user_manager::UserList::const_iterator it = users.begin(); |
it != users.end(); |
++it) { |
- if (!IsUserAllowedInSession((*it)->email(), NULL)) { |
- delegate_->OnUserNotAllowed((*it)->email()); |
+ if (!IsUserAllowedInSession((*it)->GetUserID(), NULL)) { |
+ delegate_->OnUserNotAllowed((*it)->GetUserID()); |
return; |
} |
} |
@@ -219,6 +220,7 @@ void MultiProfileUserController::OnUserPrefChanged( |
std::string user_email = user_profile->GetProfileUserName(); |
CHECK(!user_email.empty()); |
user_email = gaia::CanonicalizeEmail(user_email); |
+ const user_manager::UserID user_id(std::string() /* gaia_id */, user_email); |
Denis Kuznetsov (DE-MUC)
2015/06/10 16:50:45
FromUserEmail()
|
PrefService* prefs = user_profile->GetPrefs(); |
if (prefs->FindPreference(prefs::kMultiProfileUserBehavior) |
@@ -227,11 +229,11 @@ void MultiProfileUserController::OnUserPrefChanged( |
// TODO(xiyuan): Remove this after M35. |
DictionaryPrefUpdate update(local_state_, |
prefs::kCachedMultiProfileUserBehavior); |
- update->RemoveWithoutPathExpansion(user_email, NULL); |
+ update->RemoveWithoutPathExpansion(user_id.GetUserEmail(), NULL); |
} else { |
const std::string behavior = |
prefs->GetString(prefs::kMultiProfileUserBehavior); |
- SetCachedValue(user_email, behavior); |
+ SetCachedValue(user_id, behavior); |
} |
CheckSessionUsers(); |