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

Unified Diff: chrome/browser/signin/signin_manager.cc

Issue 110373007: Delay loading the NTP after sign in until MergeSession has been performed in (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo in chromeos Created 6 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
« no previous file with comments | « chrome/browser/signin/signin_manager.h ('k') | chrome/browser/signin/signin_tracker.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/signin/signin_manager.cc
diff --git a/chrome/browser/signin/signin_manager.cc b/chrome/browser/signin/signin_manager.cc
index 988e2073fe0d10acf4ade3a33f2d3b910bd78526..f76a94bf226db95426e276b2fdeeb91319c28573 100644
--- a/chrome/browser/signin/signin_manager.cc
+++ b/chrome/browser/signin/signin_manager.cc
@@ -117,6 +117,18 @@ bool SigninManager::HasSigninProcess() const {
return signin_host_id_ != ChildProcessHost::kInvalidUniqueID;
}
+void SigninManager::AddMergeSessionObserver(
+ GoogleAutoLoginHelper::Observer* observer) {
+ if (merge_session_helper_)
+ merge_session_helper_->AddObserver(observer);
+}
+
+void SigninManager::RemoveMergeSessionObserver(
+ GoogleAutoLoginHelper::Observer* observer) {
+ if (merge_session_helper_)
+ merge_session_helper_->RemoveObserver(observer);
+}
+
SigninManager::~SigninManager() {
}
@@ -369,6 +381,9 @@ void SigninManager::Initialize(Profile* profile, PrefService* local_state) {
}
void SigninManager::Shutdown() {
+ if (merge_session_helper_)
+ merge_session_helper_->CancelAll();
+
local_state_pref_registrar_.RemoveAll();
account_id_helper_.reset();
SigninManagerBase::Shutdown();
@@ -557,6 +572,15 @@ void SigninManager::CompletePendingSignin() {
DCHECK(!possibly_invalid_username_.empty());
OnSignedIn(possibly_invalid_username_);
+ // If inline sign in is enabled, but new profile management is not, perform a
+ // merge session now to push the user's credentials into the cookie jar.
+ bool do_merge_session_in_signin_manager =
+ !switches::IsEnableWebBasedSignin() &&
+ !switches::IsNewProfileManagement();
+
+ if (do_merge_session_in_signin_manager)
+ merge_session_helper_.reset(new GoogleAutoLoginHelper(profile_, NULL));
+
DCHECK(!temp_oauth_login_tokens_.refresh_token.empty());
DCHECK(!GetAuthenticatedUsername().empty());
ProfileOAuth2TokenService* token_service =
@@ -564,6 +588,9 @@ void SigninManager::CompletePendingSignin() {
token_service->UpdateCredentials(GetAuthenticatedUsername(),
temp_oauth_login_tokens_.refresh_token);
temp_oauth_login_tokens_ = ClientOAuthResult();
+
+ if (do_merge_session_in_signin_manager)
+ merge_session_helper_->LogIn();
}
void SigninManager::OnExternalSigninCompleted(const std::string& username) {
« no previous file with comments | « chrome/browser/signin/signin_manager.h ('k') | chrome/browser/signin/signin_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698