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 11bddcfec7d98278f10c0a13d2b546466af1ecfd..d45513bd915ac0e964153ed80bdc69bc8246d4d6 100644 | 
| --- a/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc | 
| +++ b/chrome/browser/ui/ash/system_tray_delegate_chromeos.cc | 
| @@ -19,6 +19,7 @@ | 
| #include "ash/shell_window_ids.h" | 
| #include "ash/system/bluetooth/bluetooth_observer.h" | 
| #include "ash/system/chromeos/session/logout_button_observer.h" | 
| +#include "ash/system/chromeos/shutdown_policy_observer.h" | 
| #include "ash/system/date/clock_observer.h" | 
| #include "ash/system/ime/ime_observer.h" | 
| #include "ash/system/tray/system_tray.h" | 
| @@ -231,6 +232,8 @@ SystemTrayDelegateChromeOS::SystemTrayDelegateChromeOS() | 
| base::Unretained(this))); | 
| user_manager::UserManager::Get()->AddSessionStateObserver(this); | 
| + shutdown_policy_handler_.reset( | 
| + new ShutdownPolicyHandler(CrosSettings::Get(), this)); | 
| 
 
stevenjb
2015/01/07 19:24:19
It's a shame that we have to provide this level of
 
cschuet (SLOW)
2015/01/13 10:38:28
As discussed in http://crbug.com/446937, the scope
 
 | 
| } | 
| void SystemTrayDelegateChromeOS::Initialize() { | 
| @@ -596,11 +599,6 @@ void SystemTrayDelegateChromeOS::ShowUserLogin() { | 
| } | 
| } | 
| -void SystemTrayDelegateChromeOS::ShutDown() { | 
| - ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown( | 
| - ash::LockStateController::POWER_OFF); | 
| -} | 
| - | 
| void SystemTrayDelegateChromeOS::SignOut() { | 
| chrome::AttemptUserExit(); | 
| } | 
| @@ -839,6 +837,21 @@ void SystemTrayDelegateChromeOS::RemoveCustodianInfoTrayObserver( | 
| custodian_info_changed_observers_.RemoveObserver(observer); | 
| } | 
| +void SystemTrayDelegateChromeOS::AddShutdownPolicyObserver( | 
| + ash::ShutdownPolicyObserver* observer) { | 
| + shutdown_policy_observers_.AddObserver(observer); | 
| +} | 
| + | 
| +void SystemTrayDelegateChromeOS::RemoveShutdownPolicyObserver( | 
| + ash::ShutdownPolicyObserver* observer) { | 
| + shutdown_policy_observers_.RemoveObserver(observer); | 
| +} | 
| + | 
| +void SystemTrayDelegateChromeOS::ShouldRebootOnShutdown( | 
| + const ash::RebootOnShutdownCallback& callback) { | 
| + shutdown_policy_handler_->CheckIfRebootOnShutdown(callback); | 
| +} | 
| + | 
| void SystemTrayDelegateChromeOS::UserAddedToSession( | 
| const user_manager::User* active_user) { | 
| } | 
| @@ -1324,6 +1337,13 @@ void SystemTrayDelegateChromeOS::OnAccessibilityStatusChanged( | 
| OnAccessibilityModeChanged(details.notify); | 
| } | 
| +void SystemTrayDelegateChromeOS::OnShutdownPolicyChanged( | 
| + bool reboot_on_shutdown) { | 
| + // Notify all observers. | 
| + FOR_EACH_OBSERVER(ash::ShutdownPolicyObserver, shutdown_policy_observers_, | 
| + OnShutdownPolicyChanged(reboot_on_shutdown)); | 
| +} | 
| + | 
| const base::string16 | 
| SystemTrayDelegateChromeOS::GetLegacySupervisedUserMessage() const { | 
| std::string user_manager_name = GetSupervisedUserManager(); |