Chromium Code Reviews| Index: chrome/browser/chromeos/login/user_manager_impl.cc |
| diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc |
| index afa66d86249f97bf394b0483a761d5f2c71481de..086d8e38af787b38b1cba18ff6c29b2024186714 100644 |
| --- a/chrome/browser/chromeos/login/user_manager_impl.cc |
| +++ b/chrome/browser/chromeos/login/user_manager_impl.cc |
| @@ -43,6 +43,7 @@ |
| #include "chrome/common/pref_names.h" |
| #include "chromeos/chromeos_switches.h" |
| #include "chromeos/cryptohome/async_method_caller.h" |
| +#include "chromeos/login/login_state.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/notification_service.h" |
| #include "google_apis/gaia/gaia_auth_util.h" |
| @@ -206,6 +207,7 @@ UserManagerImpl::UserManagerImpl() |
| registrar_.Add(this, chrome::NOTIFICATION_PROFILE_ADDED, |
| content::NotificationService::AllSources()); |
| RetrieveTrustedDevicePolicies(); |
| + UpdateLoginState(); |
| } |
| UserManagerImpl::~UserManagerImpl() { |
| @@ -413,6 +415,7 @@ void UserManagerImpl::RegularUserLoggedInAsEphemeral(const std::string& email) { |
| void UserManagerImpl::SessionStarted() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| session_started_ = true; |
| + UpdateLoginState(); |
| content::NotificationService::current()->Notify( |
| chrome::NOTIFICATION_SESSION_STARTED, |
| content::NotificationService::AllSources(), |
| @@ -714,6 +717,7 @@ void UserManagerImpl::SetCurrentUserIsOwner(bool is_current_user_owner) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| base::AutoLock lk(is_current_user_owner_lock_); |
| is_current_user_owner_ = is_current_user_owner; |
| + UpdateLoginState(); |
| } |
| bool UserManagerImpl::IsCurrentUserNew() const { |
| @@ -987,6 +991,7 @@ const User* UserManagerImpl::FindUserInList(const std::string& email) const { |
| void UserManagerImpl::NotifyOnLogin() { |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + UpdateLoginState(); |
| content::NotificationService::current()->Notify( |
| chrome::NOTIFICATION_LOGIN_USER_CHANGED, |
| content::Source<UserManager>(this), |
| @@ -1300,4 +1305,26 @@ void UserManagerImpl::NotifyMergeSessionStateChanged() { |
| MergeSessionStateChanged(merge_session_state_)); |
| } |
| +void UserManagerImpl::UpdateLoginState() { |
| + if (!LoginState::IsInitialized()) |
| + return; // may not be intialized in tests |
|
bartfab (slow)
2013/04/05 13:16:33
Nit: Format comment as a sentence.
stevenjb
2013/04/05 18:17:15
Sure. Done.
|
| + LoginState::State login_state; |
| + if (!logged_in_user_ || !session_started_) |
| + login_state = LoginState::LOGGED_IN_NONE; |
| + else if (is_current_user_owner_) |
| + login_state = LoginState::LOGGED_IN_OWNER; |
| + else if (logged_in_user_->GetType() == User::USER_TYPE_GUEST) |
| + login_state = LoginState::LOGGED_IN_GUEST; |
| + else if (logged_in_user_->GetType() == User::USER_TYPE_RETAIL_MODE) |
| + login_state = LoginState::LOGGED_IN_RETAIL_MODE; |
| + else if (logged_in_user_->GetType() == User::USER_TYPE_KIOSK_APP) |
| + login_state = LoginState::LOGGED_IN_KIOSK_APP; |
| + else if (logged_in_user_->GetType() == User::USER_TYPE_PUBLIC_ACCOUNT) |
| + login_state = LoginState::LOGGED_IN_PUBLIC; |
| + else |
| + login_state = LoginState::LOGGED_IN_USER; |
| + LoginState::Get()->SetLoginState(login_state); |
| + LoginState::Get()->SetSessionStarted(session_started_); |
| +} |
| + |
| } // namespace chromeos |