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

Unified Diff: components/signin/core/browser/signin_manager.cc

Issue 964563002: Replace SetAuthenticatedUsername with SetAuthenticatedAccountId. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@priv
Patch Set: rebased Created 5 years, 8 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: components/signin/core/browser/signin_manager.cc
diff --git a/components/signin/core/browser/signin_manager.cc b/components/signin/core/browser/signin_manager.cc
index 391030583ca3df2a784c58a6a66887c1a2216f87..5dde5a7cc6db7b872ab2162ae058f55aec1afbec 100644
--- a/components/signin/core/browser/signin_manager.cc
+++ b/components/signin/core/browser/signin_manager.cc
@@ -13,9 +13,9 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
+#include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/gaia_cookie_manager_service.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
-#include "components/signin/core/browser/signin_account_id_helper.h"
#include "components/signin/core/browser/signin_client.h"
#include "components/signin/core/browser/signin_internals_util.h"
#include "components/signin/core/browser/signin_manager_cookie_helper.h"
@@ -33,12 +33,11 @@ SigninManager::SigninManager(SigninClient* client,
ProfileOAuth2TokenService* token_service,
AccountTrackerService* account_tracker_service,
GaiaCookieManagerService* cookie_manager_service)
- : SigninManagerBase(client),
+ : SigninManagerBase(client, account_tracker_service),
prohibit_signout_(false),
type_(SIGNIN_TYPE_NONE),
client_(client),
token_service_(token_service),
- account_tracker_service_(account_tracker_service),
cookie_manager_service_(cookie_manager_service),
signin_manager_signed_in_(false),
user_info_fetched_by_account_tracker_(false),
@@ -64,11 +63,14 @@ std::string SigninManager::SigninTypeToString(SigninManager::SigninType type) {
}
bool SigninManager::PrepareForSignin(SigninType type,
+ const std::string& gaia_id,
const std::string& username,
const std::string& password) {
- DCHECK(possibly_invalid_username_.empty() ||
- possibly_invalid_username_ == username);
- DCHECK(!username.empty());
+ std::string account_id =
+ account_tracker_service()->PickAccountIdForAccount(gaia_id, username);
+ DCHECK(possibly_invalid_account_id_.empty() ||
+ possibly_invalid_account_id_ == account_id);
+ DCHECK(!account_id.empty());
if (!IsAllowedUsername(username)) {
// Account is not allowed by admin policy.
@@ -84,7 +86,9 @@ bool SigninManager::PrepareForSignin(SigninType type,
// restart we don't think sync setup has never completed.
ClearTransientSigninData();
type_ = type;
- possibly_invalid_username_.assign(username);
+ possibly_invalid_account_id_.assign(account_id);
+ possibly_invalid_gaia_id_.assign(gaia_id);
+ possibly_invalid_email_.assign(username);
password_.assign(password);
signin_manager_signed_in_ = false;
user_info_fetched_by_account_tracker_ = false;
@@ -94,18 +98,19 @@ bool SigninManager::PrepareForSignin(SigninType type,
void SigninManager::StartSignInWithRefreshToken(
const std::string& refresh_token,
+ const std::string& gaia_id,
const std::string& username,
const std::string& password,
const OAuthTokenFetchedCallback& callback) {
- DCHECK(!IsAuthenticated() ||
- gaia::AreEmailsSame(username, GetAuthenticatedUsername()));
+ DCHECK(!IsAuthenticated());
- if (!PrepareForSignin(SIGNIN_TYPE_WITH_REFRESH_TOKEN, username, password))
+ if (!PrepareForSignin(SIGNIN_TYPE_WITH_REFRESH_TOKEN, gaia_id, username,
+ password)) {
return;
+ }
- // Store our callback and token.
+ // Store our token.
temp_refresh_token_ = refresh_token;
- possibly_invalid_username_ = username;
if (!callback.is_null() && !temp_refresh_token_.empty()) {
callback.Run(temp_refresh_token_);
@@ -117,7 +122,9 @@ void SigninManager::StartSignInWithRefreshToken(
void SigninManager::CopyCredentialsFrom(const SigninManager& source) {
DCHECK_NE(this, &source);
- possibly_invalid_username_ = source.possibly_invalid_username_;
+ possibly_invalid_account_id_ = source.possibly_invalid_account_id_;
+ possibly_invalid_gaia_id_ = source.possibly_invalid_gaia_id_;
+ possibly_invalid_email_ = source.possibly_invalid_email_;
temp_refresh_token_ = source.temp_refresh_token_;
password_ = source.password_;
}
@@ -125,7 +132,9 @@ void SigninManager::CopyCredentialsFrom(const SigninManager& source) {
void SigninManager::ClearTransientSigninData() {
DCHECK(IsInitialized());
- possibly_invalid_username_.clear();
+ possibly_invalid_account_id_.clear();
+ possibly_invalid_gaia_id_.clear();
+ possibly_invalid_email_.clear();
password_.clear();
type_ = SIGNIN_TYPE_NONE;
temp_refresh_token_.clear();
@@ -172,9 +181,10 @@ void SigninManager::SignOut(
const base::Time signin_time =
base::Time::FromInternalValue(
client_->GetPrefs()->GetInt64(prefs::kSignedInTime));
- ClearAuthenticatedUsername();
+ clear_authenticated_user();
client_->GetPrefs()->ClearPref(prefs::kGoogleServicesHostedDomain);
- client_->GetPrefs()->ClearPref(prefs::kGoogleServicesUsername);
+ client_->GetPrefs()->ClearPref(prefs::kGoogleServicesAccountId);
+ client_->GetPrefs()->ClearPref(prefs::kGoogleServicesUserAccountId);
client_->GetPrefs()->ClearPref(prefs::kSignedInTime);
client_->OnSignedOut();
@@ -213,31 +223,29 @@ void SigninManager::Initialize(PrefService* local_state) {
base::Bind(&SigninManager::OnSigninAllowedPrefChanged,
base::Unretained(this)));
- std::string user =
- client_->GetPrefs()->GetString(prefs::kGoogleServicesUsername);
- if ((!user.empty() && !IsAllowedUsername(user)) || !IsSigninAllowed()) {
+ std::string account_id =
+ client_->GetPrefs()->GetString(prefs::kGoogleServicesAccountId);
+ std::string user = account_id.empty() ? std::string() :
+ account_tracker_service()->GetAccountInfo(account_id).email;
+ if ((!account_id.empty() && !IsAllowedUsername(user)) || !IsSigninAllowed()) {
// User is signed in, but the username is invalid - the administrator must
// have changed the policy since the last signin, so sign out the user.
SignOut(signin_metrics::SIGNIN_PREF_CHANGED_DURING_SIGNIN);
}
InitTokenService();
- account_id_helper_.reset(
- new SigninAccountIdHelper(client_, token_service_, this));
-
- account_tracker_service_->AddObserver(this);
+ account_tracker_service()->AddObserver(this);
}
void SigninManager::Shutdown() {
- account_tracker_service_->RemoveObserver(this);
+ account_tracker_service()->RemoveObserver(this);
+
Mike Lerman 2015/04/08 14:45:27 nit: Remove empty line.
Roger Tawa OOO till Jul 10th 2015/04/08 20:24:21 Done.
local_state_pref_registrar_.RemoveAll();
- account_id_helper_.reset();
SigninManagerBase::Shutdown();
}
void SigninManager::OnGoogleServicesUsernamePatternChanged() {
- if (IsAuthenticated() &&
- !IsAllowedUsername(GetAuthenticatedUsername())) {
+ if (IsAuthenticated() && !IsAllowedUsername(GetAuthenticatedUsername())) {
// Signed in user is invalid according to the current policy so sign
// the user out.
SignOut(signin_metrics::GOOGLE_SERVICE_NAME_PATTERN_CHANGED);
@@ -297,11 +305,15 @@ bool SigninManager::IsAllowedUsername(const std::string& username) const {
}
bool SigninManager::AuthInProgress() const {
- return !possibly_invalid_username_.empty();
+ return !possibly_invalid_account_id_.empty();
+}
+
+const std::string& SigninManager::GetAccountIdForAuthInProgress() const {
+ return possibly_invalid_account_id_;
}
const std::string& SigninManager::GetUsernameForAuthInProgress() const {
- return possibly_invalid_username_;
+ return possibly_invalid_email_;
}
void SigninManager::DisableOneClickSignIn(PrefService* prefs) {
@@ -320,28 +332,38 @@ void SigninManager::MergeSigninCredentialIntoCookieJar() {
void SigninManager::CompletePendingSignin() {
NotifyDiagnosticsObservers(SIGNIN_COMPLETED, "Successful");
-
- DCHECK(!possibly_invalid_username_.empty());
- OnSignedIn(possibly_invalid_username_);
+ DCHECK(!possibly_invalid_account_id_.empty());
+ OnSignedIn();
DCHECK(!temp_refresh_token_.empty());
DCHECK(IsAuthenticated());
- token_service_->UpdateCredentials(GetAuthenticatedAccountId(),
- temp_refresh_token_);
+
+ std::string account_id = GetAuthenticatedAccountId();
+ token_service_->UpdateCredentials(account_id, temp_refresh_token_);
temp_refresh_token_.clear();
MergeSigninCredentialIntoCookieJar();
}
void SigninManager::OnExternalSigninCompleted(const std::string& username) {
- OnSignedIn(username);
+ AccountTrackerService::AccountInfo info =
+ account_tracker_service()->FindAccountInfoByEmail(username);
+ DCHECK(!info.gaia.empty());
+ DCHECK(!info.email.empty());
+ possibly_invalid_account_id_ = info.account_id;
+ possibly_invalid_gaia_id_ = info.gaia;
+ possibly_invalid_email_ = info.email;
+ OnSignedIn();
}
-void SigninManager::OnSignedIn(const std::string& username) {
+void SigninManager::OnSignedIn() {
client_->GetPrefs()->SetInt64(prefs::kSignedInTime,
base::Time::Now().ToInternalValue());
- SetAuthenticatedUsername(username);
- possibly_invalid_username_.clear();
+ SetAuthenticatedAccountInfo(possibly_invalid_gaia_id_,
+ possibly_invalid_email_);
+ possibly_invalid_account_id_.clear();
+ possibly_invalid_gaia_id_.clear();
+ possibly_invalid_email_.clear();
signin_manager_signed_in_ = true;
FOR_EACH_OBSERVER(

Powered by Google App Engine
This is Rietveld 408576698