Index: chrome/browser/chromeos/login/session/user_session_manager.cc |
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc |
index bd6bfa911d1ae6f8d6ed823ad18abc310e139370..7f14789cf368f64f04d64ed866125e77bd26f933 100644 |
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc |
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc |
@@ -220,6 +220,7 @@ UserSessionManager::UserSessionManager() |
: delegate_(NULL), |
has_auth_cookies_(false), |
user_sessions_restored_(false), |
+ user_sessions_restore_in_progress_(false), |
exit_after_session_restore_(false), |
session_restore_strategy_( |
OAuth2LoginManager::RESTORE_FROM_SAVED_OAUTH2_REFRESH_TOKEN) { |
@@ -300,6 +301,7 @@ void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) { |
} |
void UserSessionManager::RestoreActiveSessions() { |
+ user_sessions_restore_in_progress_ = true; |
DBusThreadManager::Get()->GetSessionManagerClient()->RetrieveActiveSessions( |
base::Bind(&UserSessionManager::OnRestoreActiveSessions, |
base::Unretained(this))); |
@@ -310,6 +312,11 @@ bool UserSessionManager::UserSessionsRestored() const { |
return user_sessions_restored_; |
} |
+bool UserSessionManager::UserSessionsRestoreInProgress() const { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
+ return user_sessions_restore_in_progress_; |
+} |
+ |
void UserSessionManager::InitRlz(Profile* profile) { |
#if defined(ENABLE_RLZ) |
if (!g_browser_process->local_state()->HasPrefPath(prefs::kRLZBrand)) { |
@@ -944,6 +951,7 @@ void UserSessionManager::OnRestoreActiveSessions( |
void UserSessionManager::RestorePendingUserSessions() { |
if (pending_user_sessions_.empty()) { |
+ user_manager::UserManager::Get()->SwitchToLastActiveUser(); |
NotifyPendingUserSessionsRestoreFinished(); |
return; |
} |
@@ -991,6 +999,7 @@ void UserSessionManager::RestorePendingUserSessions() { |
void UserSessionManager::NotifyPendingUserSessionsRestoreFinished() { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
user_sessions_restored_ = true; |
+ user_sessions_restore_in_progress_ = false; |
FOR_EACH_OBSERVER(chromeos::UserSessionStateObserver, |
session_state_observer_list_, |
PendingUserSessionsRestoreFinished()); |