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

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

Issue 228703004: Start session fail causes restart chrome (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed comments and rebase Created 6 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: chrome/browser/chromeos/login/login_utils.cc
diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc
index b67175f647cd528fe04a7f6c1aa6f2d0b5c70ae0..f6adb128c3d19418cac1d7d23e9300e60c33639a 100644
--- a/chrome/browser/chromeos/login/login_utils.cc
+++ b/chrome/browser/chromeos/login/login_utils.cc
@@ -200,6 +200,19 @@ class LoginUtilsImpl
// the authentication profile.
void CompleteProfileCreate(Profile* user_profile);
+ // Callback to resume profile preparing after start session.
+ void OnSessionStarted(const UserContext& user_context,
+ const std::string& display_email,
+ bool has_cookies,
+ LoginUtils::Delegate* delegate,
+ bool success);
+
+ // Complete profile preparation with having active session.
+ void CompletePrepareProfileWithActiveSession(const UserContext& user_context,
+ const std::string& display_email,
+ bool has_cookies,
+ LoginUtils::Delegate* delegate);
+
// Finalized profile preparation.
void FinalizePrepareProfile(Profile* user_profile);
@@ -400,10 +413,42 @@ void LoginUtilsImpl::PrepareProfile(
if (!has_active_session) {
btl->AddLoginTimeMarker("StartSession-Start", false);
DBusThreadManager::Get()->GetSessionManagerClient()->StartSession(
- user_context.username);
- btl->AddLoginTimeMarker("StartSession-End", false);
+ user_context.username,
+ base::Bind(&LoginUtilsImpl::OnSessionStarted,
+ AsWeakPtr(),
+ user_context,
+ display_email,
+ has_cookies,
+ delegate));
+ return;
+ }
+ CompletePrepareProfileWithActiveSession(
+ user_context, display_email, has_cookies, delegate);
+}
+
+void LoginUtilsImpl::OnSessionStarted(const UserContext& user_context,
+ const std::string& display_email,
+ bool has_cookies,
+ LoginUtils::Delegate* delegate,
+ bool success) {
+ BootTimesLoader* btl = BootTimesLoader::Get();
+ btl->AddLoginTimeMarker("StartSession-End", false);
+
+ if (!success) {
+ LOG(ERROR) << "StartSession failed";
+ chrome::AttemptUserExit();
+ return;
}
+ CompletePrepareProfileWithActiveSession(
+ user_context, display_email, has_cookies, delegate);
+}
+void LoginUtilsImpl::CompletePrepareProfileWithActiveSession(
+ const UserContext& user_context,
+ const std::string& display_email,
+ bool has_cookies,
+ LoginUtils::Delegate* delegate) {
+ BootTimesLoader* btl = BootTimesLoader::Get();
btl->AddLoginTimeMarker("UserLoggedIn-Start", false);
UserManager* user_manager = UserManager::Get();
user_manager->UserLoggedIn(user_context.username,

Powered by Google App Engine
This is Rietveld 408576698