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

Unified Diff: chrome/browser/chromeos/login/oauth2_login_manager.cc

Issue 23678007: OAuth2LoginManager+MergeSessionThrottle hardening, multi-profle support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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/chromeos/login/oauth2_login_manager.cc
diff --git a/chrome/browser/chromeos/login/oauth2_login_manager.cc b/chrome/browser/chromeos/login/oauth2_login_manager.cc
index b5efe020333c7d1e5580e5fde47c3f29b4fd3ce3..b357a6a0b7af7d6b4e6f9622dce28297351cca35 100644
--- a/chrome/browser/chromeos/login/oauth2_login_manager.cc
+++ b/chrome/browser/chromeos/login/oauth2_login_manager.cc
@@ -23,7 +23,8 @@ namespace chromeos {
OAuth2LoginManager::OAuth2LoginManager(OAuthLoginManager::Delegate* delegate)
: OAuthLoginManager(delegate),
- loading_reported_(false) {
+ loading_reported_(false),
+ session_start_signaled_(false) {
}
OAuth2LoginManager::~OAuth2LoginManager() {
@@ -44,6 +45,9 @@ void OAuth2LoginManager::RestoreSession(
refresh_token_ = oauth2_refresh_token;
auth_code_ = auth_code;
+ DCHECK(!session_start_signaled_);
+ session_start_signaled_ = false;
+
// TODO(nkostylev): drop the previous fetchers if RestoreSession() is invoked
// for a second Profile, when using multi-profiles. This avoids the DCHECKs
// below until OAuthLoginManager fully supports multi-profiles.
@@ -85,6 +89,7 @@ void OAuth2LoginManager::OnRefreshTokenAvailable(
const std::string& account_id) {
// TODO(fgorski): Once ProfileOAuth2TokenService supports multi-login, make
// sure to restore session cookies in the context of the correct account_id.
+ LOG(INFO) << "OnRefreshTokenAvailable";
RestoreSessionCookies();
}
@@ -109,6 +114,8 @@ void OAuth2LoginManager::LoadAndVerifyOAuth2Tokens() {
void OAuth2LoginManager::FetchOAuth2Tokens() {
DCHECK(auth_request_context_.get());
+ SignalMergeSessionStart();
+
// If we have authenticated cookie jar, get OAuth1 token first, then fetch
// SID/LSID cookies through OAuthLogin call.
if (restore_strategy_ == RESTORE_FROM_COOKIE_JAR) {
@@ -123,6 +130,7 @@ void OAuth2LoginManager::FetchOAuth2Tokens() {
oauth2_token_fetcher_->StartExchangeFromAuthCode(auth_code_);
} else {
NOTREACHED();
+ SignalMergeSessionEnd();
}
}
@@ -145,6 +153,7 @@ void OAuth2LoginManager::OnOAuth2TokensFetchFailed() {
void OAuth2LoginManager::RestoreSessionCookies() {
DCHECK(!login_verifier_.get());
+ SignalMergeSessionStart();
login_verifier_.reset(
new OAuth2LoginVerifier(this,
g_browser_process->system_request_context(),
@@ -167,7 +176,7 @@ void OAuth2LoginManager::OnOAuthLoginFailure() {
UMA_HISTOGRAM_ENUMERATION("OAuth2Login.SessionRestore",
SESSION_RESTORE_OAUTHLOGIN_FAILED,
SESSION_RESTORE_COUNT);
- delegate_->OnCompletedMergeSession();
+ SignalMergeSessionEnd();
}
void OAuth2LoginManager::OnSessionMergeSuccess() {
@@ -179,7 +188,7 @@ void OAuth2LoginManager::OnSessionMergeSuccess() {
UMA_HISTOGRAM_ENUMERATION("OAuth2Login.SessionRestore",
SESSION_RESTORE_SUCCESS,
SESSION_RESTORE_COUNT);
- delegate_->OnCompletedMergeSession();
+ SignalMergeSessionEnd();
}
void OAuth2LoginManager::OnSessionMergeFailure() {
@@ -191,7 +200,7 @@ void OAuth2LoginManager::OnSessionMergeFailure() {
UMA_HISTOGRAM_ENUMERATION("OAuth2Login.SessionRestore",
SESSION_RESTORE_MERGE_SESSION_FAILED,
SESSION_RESTORE_COUNT);
- delegate_->OnCompletedMergeSession();
+ SignalMergeSessionEnd();
}
void OAuth2LoginManager::StartTokenService(
@@ -208,4 +217,16 @@ void OAuth2LoginManager::StopObservingRefreshToken() {
}
}
+void OAuth2LoginManager::SignalMergeSessionStart() {
+ if (session_start_signaled_)
+ return;
+
+ delegate_->OnStartMergeSession(user_profile_);
+ session_start_signaled_ = true;
+}
+
+void OAuth2LoginManager::SignalMergeSessionEnd() {
+ delegate_->OnCompletedMergeSession();
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698