Chromium Code Reviews| 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_)); |
| +} |