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..b584a5e3c3b68a286326d047af20b2ceda4490ce 100644 |
--- a/chrome/browser/resources/settings/device_page/power.js |
+++ b/chrome/browser/resources/settings/device_page/power.js |
@@ -27,6 +27,15 @@ Polymer({ |
/** @private {boolean} Whether a low-power (USB) charger is being used. */ |
lowPowerCharger_: Boolean, |
+ /** @private {boolean} Whether the idle behavior is managed. */ |
+ idleManaged_: Boolean, |
+ |
+ /** @private {boolean} Whether the lid-closed behavior is managed. */ |
+ lidClosedManaged_: 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 +64,18 @@ Polymer({ |
type: String, |
computed: 'computePowerSourceName_(powerSources_, lowPowerCharger_)', |
}, |
+ |
+ /** @private */ |
+ idleOptions_: { |
+ type: Array, |
+ computed: 'computeIdleOptions_(idleManaged_)', |
+ }, |
+ |
+ /** @private */ |
+ lidClosedOptions_: { |
+ type: Array, |
+ computed: 'computeLidClosedOptions_(lidClosedManaged_)', |
+ }, |
}, |
/** @override */ |
@@ -72,6 +93,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 +140,85 @@ Polymer({ |
return ''; |
}, |
+ /** |
+ * @param {boolean} idleManaged |
+ * @return {!Array<!{value: settings.IdleBehavior, name: string}>} Options to |
+ * display in idle-behavior select. |
+ * @private |
+ */ |
+ computeIdleOptions_: function(idleManaged) { |
+ 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 (idleManaged) { |
+ options.push({ |
+ value: settings.IdleBehavior.OTHER, |
+ name: loadTimeData.getString('powerIdleOther'), |
+ }); |
+ } |
+ return options; |
+ }, |
+ |
+ /** |
+ * @param {boolean} lidClosedManaged |
+ * @return {!Array<!{value: settings.LidClosedBehavior, name: string}>} |
+ * Options to display in lid-closed-behavior select. |
+ * @private |
+ */ |
+ computeLidClosedOptions_: function(lidClosedManaged) { |
+ var options = [ |
+ { |
+ value: settings.LidClosedBehavior.SUSPEND, |
+ name: loadTimeData.getString('powerLidClosedSleep'), |
+ }, |
+ { |
+ value: settings.LidClosedBehavior.DO_NOTHING, |
+ name: loadTimeData.getString('powerLidClosedStayAwake'), |
+ }, |
+ ]; |
+ if (lidClosedManaged) { |
+ // 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 +234,24 @@ Polymer({ |
this.lowPowerCharger_ = lowPowerCharger; |
}, |
+ /** |
+ * @param {!settings.PowerManagementSettings} settings Current power |
+ * management settings. |
+ * @private |
+ */ |
+ powerManagementSettingsChanged_: function(settings) { |
+ this.idleManaged_ = settings.idleManaged; |
+ this.lidClosedManaged_ = settings.lidClosedManaged; |
+ this.hasLid_ = settings.hasLid; |
+ |
+ // The select elements include "Other" options when managed but omit them |
+ // otherwise. Make sure that the options are there before we potentially try |
+ // to select them. |
+ Polymer.dom.flush(); |
michaelpg
2017/06/16 01:35:00
use this.async(function() {...}); instead of forci
Daniel Erat
2017/06/16 02:34:24
hmm. i had this.async earlier (after you suggested
|
+ this.$.idleSelect.value = settings.idleBehavior; |
+ this.$.lidClosedSelect.value = settings.lidClosedBehavior; |
+ }, |
+ |
/** |
* @param {*} lhs |
* @param {*} rhs |