Chromium Code Reviews| Index: chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
| diff --git a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
| index 44856326681b1967365d114fdaa143bbe76b4ff1..7bee8bf6ef4cd8e9c2d35770d2d5d894dc312583 100644 |
| --- a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
| +++ b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc |
| @@ -193,6 +193,7 @@ SystemTrayDelegateChromeOS::SystemTrayDelegateChromeOS() |
| have_session_start_time_(false), |
| have_session_length_limit_(false), |
| should_run_bluetooth_discovery_(false), |
| + session_started_(false), |
|
Daniel Erat
2014/10/07 16:19:19
do you need to check whether a session is already
merkulova
2014/10/08 09:47:11
I'm using this flag to prevent early UpdateAfterLo
|
| volume_control_delegate_(new VolumeController()), |
| device_settings_observer_(CrosSettings::Get()->AddSettingsObserver( |
| kSystemUse24HourClock, |
| @@ -225,6 +226,8 @@ SystemTrayDelegateChromeOS::SystemTrayDelegateChromeOS() |
| accessibility_subscription_ = accessibility_manager->RegisterCallback( |
| base::Bind(&SystemTrayDelegateChromeOS::OnAccessibilityStatusChanged, |
| base::Unretained(this))); |
| + |
| + user_manager::UserManager::Get()->AddSessionStateObserver(this); |
| } |
| void SystemTrayDelegateChromeOS::Initialize() { |
| @@ -316,6 +319,8 @@ SystemTrayDelegateChromeOS::~SystemTrayDelegateChromeOS() { |
| connector->GetDeviceCloudPolicyManager(); |
| if (policy_manager) |
| policy_manager->core()->store()->RemoveObserver(this); |
| + |
| + user_manager::UserManager::Get()->RemoveSessionStateObserver(this); |
| } |
| // Overridden from ash::SystemTrayDelegate: |
| @@ -859,6 +864,17 @@ SystemTrayDelegateChromeOS::GetUserAccountsDelegate( |
| return accounts_delegates_.get(user_id); |
| } |
| +void SystemTrayDelegateChromeOS::UserChangedSupervisedStatus( |
| + user_manager::User* user) { |
| + Profile* user_profile = ProfileHelper::Get()->GetProfileByUser(user); |
| + DCHECK(user_profile); |
| + |
| + if (session_started_ && user_profile_ == user_profile) { |
| + ash::Shell::GetInstance()->UpdateAfterLoginStatusChange( |
| + GetUserLoginStatus()); |
| + } |
| +} |
| + |
| ash::SystemTray* SystemTrayDelegateChromeOS::GetPrimarySystemTray() { |
| return ash::Shell::GetInstance()->GetPrimarySystemTray(); |
| } |
| @@ -1118,6 +1134,7 @@ void SystemTrayDelegateChromeOS::Observe( |
| break; |
| } |
| case chrome::NOTIFICATION_SESSION_STARTED: { |
| + session_started_ = true; |
| ash::Shell::GetInstance()->UpdateAfterLoginStatusChange( |
| GetUserLoginStatus()); |
| SetProfile(ProfileManager::GetActiveUserProfile()); |