Index: chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
diff --git a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
index 2341781f58215f13df01b9658a63e56a04f33597..ebe2781e74f7b2e256f4e9ba702abca35917aab7 100644 |
--- a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
+++ b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc |
@@ -22,11 +22,15 @@ |
#include "chromeos/dbus/session_manager_client.h" |
#include "google_apis/gaia/gaia_auth_util.h" |
-SessionStateDelegateChromeos::SessionStateDelegateChromeos() { |
+SessionStateDelegateChromeos::SessionStateDelegateChromeos() |
+ : state_(STATE_UNKNOWN) { |
chromeos::UserManager::Get()->AddSessionStateObserver(this); |
+ chromeos::UserAddingScreen::Get()->AddObserver(this); |
} |
SessionStateDelegateChromeos::~SessionStateDelegateChromeos() { |
+ chromeos::UserManager::Get()->RemoveSessionStateObserver(this); |
+ chromeos::UserAddingScreen::Get()->RemoveObserver(this); |
} |
content::BrowserContext* SessionStateDelegateChromeos::GetBrowserContextByIndex( |
@@ -210,6 +214,7 @@ void SessionStateDelegateChromeos::RemoveSessionStateObserver( |
void SessionStateDelegateChromeos::ActiveUserChanged( |
const chromeos::User* active_user) { |
+ SetSessionState(STATE_SESSION); |
FOR_EACH_OBSERVER(ash::SessionStateObserver, |
session_state_observer_list_, |
ActiveUserChanged(active_user->email())); |
@@ -217,7 +222,30 @@ void SessionStateDelegateChromeos::ActiveUserChanged( |
void SessionStateDelegateChromeos::UserAddedToSession( |
const chromeos::User* added_user) { |
+ SetSessionState(STATE_SESSION); |
FOR_EACH_OBSERVER(ash::SessionStateObserver, |
session_state_observer_list_, |
UserAddedToSession(added_user->email())); |
} |
+ |
+void SessionStateDelegateChromeos::OnUserAddingStarted() { |
+ SetSessionState(STATE_LOGIN_SECONDARY); |
+} |
+ |
+void SessionStateDelegateChromeos::OnUserAddingFinished() { |
Mr4D (OOO till 08-26)
2014/04/10 01:33:08
Do we also get here if the user cancels out of the
Nikita (slow)
2014/04/10 09:52:21
Yes.
|
+ SetSessionState(STATE_SESSION); |
+} |
+ |
+void SessionStateDelegateChromeos::SetSessionState(SessionState new_state) { |
+ if (state_ == new_state) |
+ return; |
+ |
+ state_ = new_state; |
+ NotifySessionStateChanged(); |
+} |
+ |
+void SessionStateDelegateChromeos::NotifySessionStateChanged() { |
+ FOR_EACH_OBSERVER(ash::SessionStateObserver, |
+ session_state_observer_list_, |
+ SessionStateChanged(state_)); |
+} |