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

Unified Diff: chrome/test/data/webui/settings/device_page_tests.js

Issue 2629173004: MD Settings: Dual-role charger selection (Closed)
Patch Set: rebase Created 3 years, 11 months 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
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 477d274dd6e46d0f8a49538ef86fe1b43f59ff14..224583cd8fb3dcdfa4af988c8f30f3aa56834cc7 100644
--- a/chrome/test/data/webui/settings/device_page_tests.js
+++ b/chrome/test/data/webui/settings/device_page_tests.js
@@ -9,6 +9,7 @@ cr.define('device_page_tests', function() {
Display: 'display',
Keyboard: 'keyboard',
Pointers: 'pointers',
+ Power: 'power',
};
/**
@@ -17,6 +18,7 @@ cr.define('device_page_tests', function() {
*/
function TestDevicePageBrowserProxy() {
this.keyboardShortcutsOverlayShown_ = 0;
+ this.updatePowerStatusCalled_ = 0;
}
TestDevicePageBrowserProxy.prototype = {
@@ -42,6 +44,16 @@ cr.define('device_page_tests', function() {
showKeyboardShortcutsOverlay: function() {
this.keyboardShortcutsOverlayShown_++;
},
+
+ /** @override */
+ updatePowerStatus: function() {
+ this.updatePowerStatusCalled_++;
+ },
+
+ /** @override */
+ setPowerSource: function(powerSourceId) {
+ this.powerSourceId_ = powerSourceId;
+ },
};
function getFakePrefs() {
@@ -525,6 +537,168 @@ cr.define('device_page_tests', function() {
expectTrue(displayPage.isMirrored_(displayPage.displays));
});
});
+
+ suite(assert(TestNames.Power), function() {
+ /**
+ * Sets power sources using a deep copy of |sources|.
+ * @param {Array<settings.PowerSource>} sources
+ * @param {string} powerSourceId
+ * @param {bool} isLowPowerCharger
+ */
+ function setPowerSources(sources, powerSourceId, isLowPowerCharger) {
+ var sourcesCopy = sources.map(function(source) {
+ return Object.assign({}, source);
+ });
+ cr.webUIListenerCallback('power-sources-changed',
+ sourcesCopy, powerSourceId, isLowPowerCharger);
+ }
+
+ suite('no power settings', function() {
+ test('power row hidden', function() {
+ assertEquals(null, devicePage.$$('#powerRow'));
+ assertEquals(0,
+ settings.DevicePageBrowserProxyImpl.getInstance()
+ .updatePowerStatusCalled_);
+ });
+ });
+
+ suite('power settings', function() {
+ var powerRow;
+ var powerSourceWrapper;
+ var powerSourceSelect;
+
+ suiteSetup(function() {
+ // Always show power settings.
+ loadTimeData.overrideValues({
+ enablePowerSettings: true,
+ });
+ });
+
+ setup(function() {
+ powerRow = assert(devicePage.$$('#powerRow'));
+ powerSourceWrapper =
+ assert(powerRow.querySelector('.md-select-wrapper'));
+ powerSourceSelect = assert(devicePage.$$('#powerSource'));
+ assertEquals(1,
+ settings.DevicePageBrowserProxyImpl.getInstance()
+ .updatePowerStatusCalled_);
+ });
+
+ test('battery status', function() {
+ var icon = powerRow.querySelector('iron-icon');
+ assertEquals('settings:battery-unknown', icon.icon);
+
+ // Start at 50%.
+ var batteryStatus = {
+ charging: false,
+ calculating: false,
+ percent: 50,
+ statusText: '5 hours left',
+ };
+ cr.webUIListenerCallback(
+ 'battery-status-changed', Object.assign({}, batteryStatus));
+ setPowerSources([], '', false);
+ assertEquals(icon.icon, 'settings:battery-50');
+
+ // Update to charging.
+ var powerSource = {
+ id: '1',
+ type: settings.PowerDeviceType.DEDICATED_CHARGER,
+ description: 'AC adapter',
+ };
+ batteryStatus.charging = true;
+ batteryStatus.percent = 65;
+ cr.webUIListenerCallback(
+ 'battery-status-changed', Object.assign({}, batteryStatus));
+ setPowerSources([powerSource], powerSource.id, false);
+ assertEquals(icon.icon, 'settings:battery-charging-60');
+
+ // Update with a low-power charger.
+ setPowerSources([powerSource], powerSource.id, true);
+ assertEquals(icon.icon, 'settings:battery-unreliable');
+
+ // Update with no charger and a critical battery level.
+ batteryStatus.charging = false;
+ batteryStatus.percent = 2;
+ cr.webUIListenerCallback(
+ 'battery-status-changed', Object.assign({}, batteryStatus));
+ setPowerSources([], '', false);
+ assertEquals(icon.icon, 'settings:battery-alert');
+ });
+
+ test('power sources', function() {
+ var batteryStatus = {
+ charging: false,
+ calculating: false,
+ percent: 50,
+ statusText: '5 hours left',
+ };
+ cr.webUIListenerCallback(
+ 'battery-status-changed', Object.assign({}, batteryStatus));
+ setPowerSources([], '', false);
+ Polymer.dom.flush();
+
+ // Power sources dropdown is hidden.
+ assertTrue(powerSourceWrapper.hidden);
+
+ // Attach a dual-role USB device.
+ var powerSource = {
+ id: '2',
+ type: settings.PowerDeviceType.DUAL_ROLE_USB,
+ description: 'USB-C device',
+ };
+ setPowerSources([powerSource], '', false);
+ Polymer.dom.flush();
+
+ // "Battery" should be selected.
+ assertFalse(powerSourceWrapper.hidden);
+ assertEquals('', powerSourceSelect.value);
+
+ // Select the power source.
+ setPowerSources([powerSource], powerSource.id, true);
+ Polymer.dom.flush();
+ assertFalse(powerSourceWrapper.hidden);
+ assertEquals(powerSource.id, powerSourceSelect.value);
+
+ // Send another power source; the first should still be selected.
+ var otherPowerSource = Object.assign({}, powerSource);
+ otherPowerSource.id = '3';
+ setPowerSources(
+ [otherPowerSource, powerSource], powerSource.id, true);
+ Polymer.dom.flush();
+ assertFalse(powerSourceWrapper.hidden);
+ assertEquals(powerSource.id, powerSourceSelect.value);
+ });
+
+ test('choose power source', function() {
+ var batteryStatus = {
+ charging: false,
+ calculating: false,
+ percent: 50,
+ statusText: '5 hours left',
+ };
+ cr.webUIListenerCallback(
+ 'battery-status-changed', Object.assign({}, batteryStatus));
+
+ // Attach a dual-role USB device.
+ var powerSource = {
+ id: '3',
+ type: settings.PowerDeviceType.DUAL_ROLE_USB,
+ description: 'USB-C device',
+ };
+ setPowerSources([powerSource], '', false);
+ Polymer.dom.flush();
+
+ // Select the device.
+ powerSourceSelect.value = powerSourceSelect.children[1].value;
+ powerSourceSelect.dispatchEvent(new CustomEvent('change'));
+ Polymer.dom.flush();
+ expectEquals(
+ powerSource.id,
+ settings.DevicePageBrowserProxyImpl.getInstance().powerSourceId_);
+ });
+ });
+ });
});
return {
« no previous file with comments | « chrome/test/data/webui/settings/cr_settings_browsertest.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698