Chromium Code Reviews| 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 |