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

Unified Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 811033002: Add device policy to disallow shutdown - ash UI modifications (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: shutdown_allowed => reboot_on_shutdown Created 6 years 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/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
}

Powered by Google App Engine
This is Rietveld 408576698