| Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| index ac0e209d1feeeb2bff2acf6771628a022d58597a..0ac0d8ee474c88c9d4fca85856947f9d393c0711 100644
|
| --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
|
| @@ -64,6 +64,8 @@
|
| #include "chromeos/network/network_state.h"
|
| #include "chromeos/network/network_state_handler.h"
|
| #include "chromeos/network/portal_detector/network_portal_detector.h"
|
| +#include "chromeos/settings/cros_settings_names.h"
|
| +#include "chromeos/settings/cros_settings_provider.h"
|
| #include "components/user_manager/user.h"
|
| #include "components/user_manager/user_manager.h"
|
| #include "components/user_manager/user_type.h"
|
| @@ -325,6 +327,7 @@ void SigninScreenHandler::DeclareLocalizedValues(
|
| builder->Add("signinButton", IDS_LOGIN_BUTTON);
|
| builder->Add("launchAppButton", IDS_LAUNCH_APP_BUTTON);
|
| builder->Add("shutDown", IDS_SHUTDOWN_BUTTON);
|
| + builder->Add("restart", IDS_REBOOT_BUTTON);
|
| builder->Add("addUser", IDS_ADD_USER_BUTTON);
|
| builder->Add("browseAsGuest", IDS_GO_INCOGNITO_BUTTON);
|
| builder->Add("cancel", IDS_CANCEL);
|
| @@ -742,6 +745,7 @@ void SigninScreenHandler::RegisterMessages() {
|
| AddRawCallback("offlineLogin", &SigninScreenHandler::HandleOfflineLogin);
|
| AddCallback("rebootSystem", &SigninScreenHandler::HandleRebootSystem);
|
| AddRawCallback("showAddUser", &SigninScreenHandler::HandleShowAddUser);
|
| + AddCallback("restartSystem", &SigninScreenHandler::HandleRestartSystem);
|
| AddCallback("shutdownSystem", &SigninScreenHandler::HandleShutdownSystem);
|
| AddCallback("loadWallpaper", &SigninScreenHandler::HandleLoadWallpaper);
|
| AddCallback("removeUser", &SigninScreenHandler::HandleRemoveUser);
|
| @@ -1108,13 +1112,37 @@ void SigninScreenHandler::HandleOfflineLogin(const base::ListValue* args) {
|
| UpdateUIState(UI_STATE_GAIA_SIGNIN, NULL);
|
| }
|
|
|
| +void SigninScreenHandler::HandleRestartSystem() {
|
| +#if defined(USE_ATHENA)
|
| + chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
|
| +#else
|
| + ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(
|
| + ash::LockStateController::RESTART);
|
| +#endif
|
| +}
|
| +
|
| +void SigninScreenHandler::RequestShutdown() {
|
| + CrosSettings* cros_settings = CrosSettings::Get();
|
| + CrosSettingsProvider::TrustedStatus status =
|
| + cros_settings->PrepareTrustedValues(
|
| + base::Bind(&SigninScreenHandler::RequestShutdown));
|
| + if (status != CrosSettingsProvider::TRUSTED)
|
| + return;
|
| + bool reboot_on_shutdown = false;
|
| + cros_settings->GetBoolean(kRebootOnShutdown, &reboot_on_shutdown);
|
| +#if !defined(USE_ATHENA)
|
| + ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(
|
| + reboot_on_shutdown ? ash::LockStateController::RESTART
|
| + : ash::LockStateController::POWER_OFF);
|
| +#endif
|
| +}
|
| +
|
| void SigninScreenHandler::HandleShutdownSystem() {
|
| #if defined(USE_ATHENA)
|
| chromeos::DBusThreadManager::Get()->
|
| GetPowerManagerClient()->RequestShutdown();
|
| #else
|
| - ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(
|
| - ash::LockStateController::POWER_OFF);
|
| + RequestShutdown();
|
| #endif
|
| }
|
|
|
|
|