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

Unified Diff: chrome/browser/ui/ash/system_tray_delegate_chromeos.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/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 85c8e85c9310879986d18c25bfbfc1a7ea3bab0f..ecd38165cd2710a216237224d63140d448f731b3 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"
@@ -30,6 +31,7 @@
#include "ash/system/user/user_observer.h"
#include "ash/volume_control_delegate.h"
#include "ash/wm/lock_state_controller.h"
+#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/callback.h"
#include "base/logging.h"
@@ -134,6 +136,12 @@ void ExtractIMEInfo(const input_method::InputMethodDescriptor& ime,
info->third_party = extension_ime_util::IsExtensionIME(ime.id());
}
+void TriggerShutdown(bool reboot_on_shutdown) {
+ ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(
+ reboot_on_shutdown ? ash::LockStateController::RESTART
+ : ash::LockStateController::POWER_OFF);
+}
+
gfx::NativeWindow GetNativeWindowByStatus(ash::user::LoginStatus login_status,
bool session_started) {
bool isUserAddingRunning = ash::Shell::GetInstance()
@@ -225,6 +233,8 @@ SystemTrayDelegateChromeOS::SystemTrayDelegateChromeOS()
base::Unretained(this)));
user_manager::UserManager::Get()->AddSessionStateObserver(this);
+ shutdown_policy_observer_.reset(
+ new ShutdownPolicyObserver(CrosSettings::Get(), this));
}
void SystemTrayDelegateChromeOS::Initialize() {
@@ -591,9 +601,14 @@ void SystemTrayDelegateChromeOS::ShowUserLogin() {
}
}
-void SystemTrayDelegateChromeOS::ShutDown() {
+void SystemTrayDelegateChromeOS::Restart() {
ash::Shell::GetInstance()->lock_state_controller()->RequestShutdown(
- ash::LockStateController::POWER_OFF);
+ ash::LockStateController::RESTART);
stevenjb 2014/12/17 19:09:02 It seems super silly for the ash system tray deleg
cschuet (SLOW) 2015/01/07 14:37:07 Done.
+}
+
+void SystemTrayDelegateChromeOS::ShutDown() {
+ shutdown_policy_observer_->CheckIfRebootOnShutdown(
+ base::Bind(&TriggerShutdown));
stevenjb 2014/12/17 19:09:02 This has gotten a bit out of hand: 1. The UI asks
cschuet (SLOW) 2015/01/07 14:37:07 Done.
}
void SystemTrayDelegateChromeOS::SignOut() {
@@ -834,6 +849,21 @@ void SystemTrayDelegateChromeOS::RemoveCustodianInfoTrayObserver(
custodian_info_changed_observers_.RemoveObserver(observer);
}
+void SystemTrayDelegateChromeOS::AddShutdownPolicyObserver(
+ ash::ShutdownPolicyObserver* observer) {
+ shutdown_policy_observers_.AddObserver(observer);
+}
+
+void SystemTrayDelegateChromeOS::ShouldRebootOnShutdown(
+ const ash::RebootOnShutdownCallback& callback) {
+ shutdown_policy_observer_->CheckIfRebootOnShutdown(callback);
+}
+
+void SystemTrayDelegateChromeOS::RemoveShutdownPolicyObserver(
+ ash::ShutdownPolicyObserver* observer) {
+ shutdown_policy_observers_.RemoveObserver(observer);
+}
+
void SystemTrayDelegateChromeOS::UserAddedToSession(
const user_manager::User* active_user) {
}
@@ -1297,6 +1327,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));
+}
+
ash::SystemTrayDelegate* CreateSystemTrayDelegate() {
return new SystemTrayDelegateChromeOS();
}

Powered by Google App Engine
This is Rietveld 408576698