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

Unified Diff: chrome/browser/ui/ash/session_state_delegate_chromeos.cc

Issue 231123002: Notify about major session changes events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . 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/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_));
+}
« ash/shelf/shelf_layout_manager.cc ('K') | « chrome/browser/ui/ash/session_state_delegate_chromeos.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698