Index: chrome/test/data/webui/settings/device_page_tests.js |
diff --git a/chrome/test/data/webui/settings/device_page_tests.js b/chrome/test/data/webui/settings/device_page_tests.js |
index 227fcfeb362b998d64f4a9bfefae064d592f2c51..942505c438fab1c85192934441674fd54e3bca61 100644 |
--- a/chrome/test/data/webui/settings/device_page_tests.js |
+++ b/chrome/test/data/webui/settings/device_page_tests.js |
@@ -20,6 +20,7 @@ cr.define('device_page_tests', function() { |
function TestDevicePageBrowserProxy() { |
this.keyboardShortcutsOverlayShown_ = 0; |
this.updatePowerStatusCalled_ = 0; |
+ this.requestPowerManagementSettingsCalled_ = 0; |
this.onNoteTakingAppsUpdated_ = null; |
this.requestNoteTakingApps_ = 0; |
this.setPreferredNoteTakingApp_ = ''; |
@@ -65,6 +66,21 @@ cr.define('device_page_tests', function() { |
this.powerSourceId_ = powerSourceId; |
}, |
+ /** @override */ |
+ requestPowerManagementSettings: function() { |
+ this.requestPowerManagementSettingsCalled_++; |
+ }, |
+ |
+ /** @override */ |
+ setIdleBehavior: function(behavior) { |
+ this.idleBehavior_ = behavior; |
+ }, |
+ |
+ /** @override */ |
+ setLidClosedBehavior: function(behavior) { |
+ this.lidClosedBehavior_ = behavior; |
+ }, |
+ |
/** @override */ |
setNoteTakingAppsUpdatedCallback: function(callback) { |
this.onNoteTakingAppsUpdated_ = callback; |
@@ -241,6 +257,38 @@ cr.define('device_page_tests', function() { |
}); |
}; |
+ /** |
+ * @param {settings.IdleBehavior} idleBehavior |
+ * @param {boolean} idleControlled |
+ * @param {settings.LidClosedBehavior} lidClosedBehavior |
+ * @param {boolean} lidClosedControlled |
+ * @param {boolean} hasLid |
+ */ |
+ function sendPowerManagementSettings(idleBehavior, idleControlled, |
+ lidClosedBehavior, lidClosedControlled, |
+ hasLid) { |
+ cr.webUIListenerCallback( |
+ 'power-management-settings-changed', |
+ { |
+ idleBehavior: idleBehavior, |
+ idleControlled: idleControlled, |
+ lidClosedBehavior: lidClosedBehavior, |
+ lidClosedControlled: lidClosedControlled, |
+ hasLid: hasLid, |
+ }); |
+ Polymer.dom.flush(); |
+ }; |
+ |
+ /** |
+ * @param {!HTMLElement} select |
+ * @param {!value} string |
+ */ |
+ function selectValue(select, value) { |
+ select.value = value; |
+ select.dispatchEvent(new CustomEvent('change')); |
+ Polymer.dom.flush(); |
+ } |
+ |
/** |
* @param {!HTMLElement} pointersPage |
* @param {boolean} expected |
@@ -593,6 +641,13 @@ cr.define('device_page_tests', function() { |
} |
suite('no power settings', function() { |
+ suiteSetup(function() { |
+ // Never show power settings. |
+ loadTimeData.overrideValues({ |
+ enablePowerSettings: false, |
+ }); |
+ }); |
+ |
test('power row hidden', function() { |
assertEquals(null, devicePage.$$('#powerRow')); |
assertEquals(0, |
@@ -606,6 +661,8 @@ cr.define('device_page_tests', function() { |
var powerSourceRow; |
var powerSourceWrapper; |
var powerSourceSelect; |
+ var idleSelect; |
+ var lidClosedSelect; |
suiteSetup(function() { |
// Always show power settings. |
@@ -626,6 +683,19 @@ cr.define('device_page_tests', function() { |
1, |
settings.DevicePageBrowserProxyImpl.getInstance() |
.updatePowerStatusCalled_); |
+ |
+ idleSelect = assert(powerPage.$$('#idleSelect')); |
+ lidClosedSelect = assert(powerPage.$$('#lidClosedSelect')); |
+ |
+ assertEquals( |
+ 1, |
+ settings.DevicePageBrowserProxyImpl.getInstance() |
+ .requestPowerManagementSettingsCalled_); |
+ sendPowerManagementSettings( |
+ settings.IdleBehavior.DISPLAY_OFF_SLEEP, |
+ false /* idleControlled */, |
+ settings.LidClosedBehavior.SUSPEND, |
+ false /* lidClosedControlled */, true /* hasLid */); |
}); |
}); |
@@ -693,13 +763,110 @@ cr.define('device_page_tests', function() { |
Polymer.dom.flush(); |
// Select the device. |
- powerSourceSelect.value = powerSourceSelect.children[1].value; |
- powerSourceSelect.dispatchEvent(new CustomEvent('change')); |
- Polymer.dom.flush(); |
+ selectValue(powerSourceSelect, powerSourceSelect.children[1].value); |
expectEquals( |
powerSource.id, |
settings.DevicePageBrowserProxyImpl.getInstance().powerSourceId_); |
}); |
+ |
+ test('set idle behavior', function() { |
+ selectValue(idleSelect, settings.IdleBehavior.DISPLAY_ON); |
+ expectEquals( |
+ settings.IdleBehavior.DISPLAY_ON, |
+ settings.DevicePageBrowserProxyImpl.getInstance().idleBehavior_); |
+ |
+ selectValue(idleSelect, settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE); |
+ expectEquals( |
+ settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE, |
+ settings.DevicePageBrowserProxyImpl.getInstance().idleBehavior_); |
+ }); |
+ |
+ test('set lid behavior', function() { |
+ selectValue(lidClosedSelect, settings.LidClosedBehavior.DO_NOTHING); |
+ expectEquals( |
+ settings.LidClosedBehavior.DO_NOTHING, |
+ settings.DevicePageBrowserProxyImpl.getInstance() |
+ .lidClosedBehavior_); |
+ |
+ selectValue(lidClosedSelect, settings.LidClosedBehavior.SUSPEND); |
+ expectEquals( |
+ settings.LidClosedBehavior.SUSPEND, |
+ settings.DevicePageBrowserProxyImpl.getInstance() |
+ .lidClosedBehavior_); |
+ }); |
+ |
+ test('display idle and lid behavior', function() { |
+ return new Promise(function(resolve) { |
+ sendPowerManagementSettings( |
+ settings.IdleBehavior.DISPLAY_ON, false /* idleControlled */, |
+ settings.LidClosedBehavior.DO_NOTHING, |
+ false /* lidClosedControlled */, true /* hasLid */); |
+ powerPage.async(resolve); |
+ }).then(function() { |
+ expectEquals( |
+ settings.IdleBehavior.DISPLAY_ON.toString(), idleSelect.value); |
+ expectFalse(idleSelect.disabled); |
+ expectEquals(null, powerPage.$$('#idleControlledIndicator')); |
+ expectEquals( |
+ settings.LidClosedBehavior.DO_NOTHING.toString(), |
+ lidClosedSelect.value); |
+ expectFalse(lidClosedSelect.disabled); |
+ expectEquals(null, powerPage.$$('#lidClosedControlledIndicator')); |
+ }).then(function() { |
+ sendPowerManagementSettings( |
+ settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE, |
+ false /* idleControlled */, settings.LidClosedBehavior.SUSPEND, |
+ false /* lidClosedControlled */, true /* hasLid */); |
+ return new Promise(function(resolve) { powerPage.async(resolve); }); |
+ }).then(function() { |
+ expectEquals( |
+ settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE.toString(), |
+ idleSelect.value); |
+ expectFalse(idleSelect.disabled); |
+ expectEquals(null, powerPage.$$('#idleControlledIndicator')); |
+ expectEquals( |
+ settings.LidClosedBehavior.SUSPEND.toString(), |
+ lidClosedSelect.value); |
+ expectFalse(lidClosedSelect.disabled); |
+ expectEquals(null, powerPage.$$('#lidClosedControlledIndicator')); |
+ }); |
+ }); |
+ |
+ test('display controlled idle and lid behavior', function() { |
+ // When settings are controlled, the selects should be disabled and |
+ // the indicators should be shown. |
+ return new Promise(function(resolve) { |
+ sendPowerManagementSettings( |
+ settings.IdleBehavior.OTHER, true /* idleControlled */, |
+ settings.LidClosedBehavior.SUSPEND, |
+ true /* lidClosedControlled */, true /* hasLid */); |
+ powerPage.async(resolve); |
+ }).then(function() { |
+ expectEquals( |
+ settings.IdleBehavior.OTHER.toString(), idleSelect.value); |
+ expectTrue(idleSelect.disabled); |
+ expectNotEquals(null, powerPage.$$('#idleControlledIndicator')); |
+ expectEquals( |
+ settings.LidClosedBehavior.SUSPEND.toString(), |
+ lidClosedSelect.value); |
+ expectTrue(lidClosedSelect.disabled); |
+ expectNotEquals( |
+ null, powerPage.$$('#lidClosedControlledIndicator')); |
+ }); |
+ }); |
+ |
+ test('hide lid behavior when lid not present', function() { |
+ return new Promise(function(resolve) { |
+ expectFalse(powerPage.$$('#lidClosedRow').hidden); |
+ sendPowerManagementSettings( |
+ settings.IdleBehavior.DISPLAY_OFF_SLEEP, |
+ false /* idleControlled */, settings.LidClosedBehavior.SUSPEND, |
+ false /* lidClosedControlled */, false /* hasLid */); |
+ powerPage.async(resolve); |
+ }).then(function() { |
+ expectTrue(powerPage.$$('#lidClosedRow').hidden); |
+ }); |
+ }); |
}); |
}); |