Index: chrome/browser/resources/settings/device_page/power.js |
diff --git a/chrome/browser/resources/settings/device_page/power.js b/chrome/browser/resources/settings/device_page/power.js |
index a04b51d6109e8879a03f4119c3a4eeeb015b1d10..49cdeeac49046ee0784f55eb6dbc1817484b3602 100644 |
--- a/chrome/browser/resources/settings/device_page/power.js |
+++ b/chrome/browser/resources/settings/device_page/power.js |
@@ -27,6 +27,17 @@ Polymer({ |
/** @private {boolean} Whether a low-power (USB) charger is being used. */ |
lowPowerCharger_: Boolean, |
+ /** @private {boolean} Whether the idle behavior is controlled by policy. */ |
+ idleControlled_: Boolean, |
+ |
+ /** @private {boolean} Whether the lid-closed behavior is controlled by |
+ * policy. |
+ */ |
+ lidClosedControlled_: Boolean, |
+ |
+ /** @private {boolean} Whether the system posesses a lid. */ |
+ hasLid_: Boolean, |
+ |
/** |
* List of available dual-role power sources, if enablePowerSettings is on. |
* @private {!Array<!settings.PowerSource>|undefined} |
@@ -55,6 +66,18 @@ Polymer({ |
type: String, |
computed: 'computePowerSourceName_(powerSources_, lowPowerCharger_)', |
}, |
+ |
+ /** @private */ |
+ idleOptions_: { |
+ type: Array, |
+ computed: 'computeIdleOptions_(idleControlled_)', |
+ }, |
+ |
+ /** @private */ |
+ lidClosedOptions_: { |
+ type: Array, |
+ computed: 'computeLidClosedOptions_(lidClosedControlled_)', |
+ }, |
}, |
/** @override */ |
@@ -72,6 +95,12 @@ Polymer({ |
this.addWebUIListener( |
'power-sources-changed', this.powerSourcesChanged_.bind(this)); |
settings.DevicePageBrowserProxyImpl.getInstance().updatePowerStatus(); |
+ |
+ this.addWebUIListener( |
+ 'power-management-settings-changed', |
+ this.powerManagementSettingsChanged_.bind(this)); |
+ settings.DevicePageBrowserProxyImpl.getInstance() |
+ .requestPowerManagementSettings(); |
}, |
/** |
@@ -113,9 +142,85 @@ Polymer({ |
return ''; |
}, |
+ /** |
+ * @param {boolean} idleControlled |
+ * @return {!Array<!{value: settings.IdleBehavior, name: string}>} Options to |
+ * display in idle-behavior select. |
+ * @private |
+ */ |
+ computeIdleOptions_: function(idleControlled) { |
+ var options = [ |
+ { |
+ value: settings.IdleBehavior.DISPLAY_OFF_SLEEP, |
+ name: loadTimeData.getString('powerIdleDisplayOffSleep'), |
+ }, |
+ { |
+ value: settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE, |
+ name: loadTimeData.getString('powerIdleDisplayOffStayAwake'), |
+ }, |
+ { |
+ value: settings.IdleBehavior.DISPLAY_ON, |
+ name: loadTimeData.getString('powerIdleDisplayOn'), |
+ }, |
+ ]; |
+ if (idleControlled) { |
+ options.push({ |
+ value: settings.IdleBehavior.OTHER, |
+ name: loadTimeData.getString('powerIdleOther'), |
+ }); |
+ } |
+ return options; |
+ }, |
+ |
+ /** |
+ * @param {boolean} lidClosedControlled |
+ * @return {!Array<!{value: settings.LidClosedBehavior, name: string}>} |
+ * Options to display in lid-closed-behavior select. |
+ * @private |
+ */ |
+ computeLidClosedOptions_: function(lidClosedControlled) { |
+ var options = [ |
+ { |
+ value: settings.LidClosedBehavior.SUSPEND, |
+ name: loadTimeData.getString('powerLidClosedSleep'), |
+ }, |
+ { |
+ value: settings.LidClosedBehavior.DO_NOTHING, |
+ name: loadTimeData.getString('powerLidClosedStayAwake'), |
+ }, |
+ ]; |
+ if (lidClosedControlled) { |
+ // Some options are only settable via policy. |
+ options.push({ |
+ value: settings.LidClosedBehavior.STOP_SESSION, |
+ name: loadTimeData.getString('powerLidClosedSignOut'), |
+ }, { |
+ value: settings.LidClosedBehavior.SHUT_DOWN, |
+ name: loadTimeData.getString('powerLidClosedShutDown'), |
+ }); |
+ } |
+ return options; |
+ }, |
+ |
+ /** @private */ |
onPowerSourceChange_: function() { |
settings.DevicePageBrowserProxyImpl.getInstance().setPowerSource( |
- this.$$('#powerSource').value); |
+ this.$.powerSource.value); |
+ }, |
+ |
+ /** @private */ |
+ onIdleSelectChange_: function() { |
+ var behavior = /** @type {settings.IdleBehavior} */ |
+ (parseInt(this.$.idleSelect.value, 10)); |
+ settings.DevicePageBrowserProxyImpl.getInstance().setIdleBehavior(behavior); |
+ }, |
+ |
+ /** @private */ |
+ onLidClosedSelectChange_: function() { |
+ var behavior = /** @type {settings.LidClosedBehavior} */ |
+ (parseInt(this.$.lidClosedSelect.value, 10)); |
+ settings.DevicePageBrowserProxyImpl.getInstance().setLidClosedBehavior( |
+ behavior); |
}, |
/** |
@@ -131,6 +236,25 @@ Polymer({ |
this.lowPowerCharger_ = lowPowerCharger; |
}, |
+ /** |
+ * @param {!settings.PowerManagementSettings} settings Current power |
+ * management settings. |
+ * @private |
+ */ |
+ powerManagementSettingsChanged_: function(settings) { |
+ this.idleControlled_ = settings.idleControlled; |
+ this.lidClosedControlled_ = settings.lidClosedControlled; |
+ this.hasLid_ = settings.hasLid; |
+ |
+ // The select elements include "Other" options when controlled but omit them |
+ // otherwise. Make sure that the options are there before we potentially try |
+ // to select them. |
+ this.async(function() { |
+ this.$.idleSelect.value = settings.idleBehavior; |
+ this.$.lidClosedSelect.value = settings.lidClosedBehavior; |
+ }); |
+ }, |
+ |
/** |
* @param {*} lhs |
* @param {*} rhs |