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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('device_page_tests', function() { 5 cr.define('device_page_tests', function() {
6 /** @enum {string} */ 6 /** @enum {string} */
7 var TestNames = { 7 var TestNames = {
8 DevicePage: 'device page', 8 DevicePage: 'device page',
9 Display: 'display', 9 Display: 'display',
10 Keyboard: 'keyboard', 10 Keyboard: 'keyboard',
11 Pointers: 'pointers', 11 Pointers: 'pointers',
12 Power: 'power',
12 }; 13 };
13 14
14 /** 15 /**
15 * @constructor 16 * @constructor
16 * @implements {settings.DevicePageBrowserProxy} 17 * @implements {settings.DevicePageBrowserProxy}
17 */ 18 */
18 function TestDevicePageBrowserProxy() { 19 function TestDevicePageBrowserProxy() {
19 this.keyboardShortcutsOverlayShown_ = 0; 20 this.keyboardShortcutsOverlayShown_ = 0;
21 this.updatePowerStatusCalled_ = 0;
20 } 22 }
21 23
22 TestDevicePageBrowserProxy.prototype = { 24 TestDevicePageBrowserProxy.prototype = {
23 /** override */ 25 /** override */
24 initializePointers: function() { 26 initializePointers: function() {
25 // Enable mouse and touchpad. 27 // Enable mouse and touchpad.
26 cr.webUIListenerCallback('has-mouse-changed', true); 28 cr.webUIListenerCallback('has-mouse-changed', true);
27 cr.webUIListenerCallback('has-touchpad-changed', true); 29 cr.webUIListenerCallback('has-touchpad-changed', true);
28 }, 30 },
29 31
30 /** @override */ 32 /** @override */
31 handleLinkEvent: function(e) { 33 handleLinkEvent: function(e) {
32 settings.DevicePageBrowserProxyImpl.prototype.handleLinkEvent.call( 34 settings.DevicePageBrowserProxyImpl.prototype.handleLinkEvent.call(
33 this, e); 35 this, e);
34 // Prevent opening the link, which can block the test. 36 // Prevent opening the link, which can block the test.
35 e.preventDefault(); 37 e.preventDefault();
36 }, 38 },
37 39
38 /** override */ 40 /** override */
39 initializeKeyboard: function() {}, 41 initializeKeyboard: function() {},
40 42
41 /** override */ 43 /** override */
42 showKeyboardShortcutsOverlay: function() { 44 showKeyboardShortcutsOverlay: function() {
43 this.keyboardShortcutsOverlayShown_++; 45 this.keyboardShortcutsOverlayShown_++;
44 }, 46 },
47
48 /** @override */
49 updatePowerStatus: function() {
50 this.updatePowerStatusCalled_++;
51 },
52
53 /** @override */
54 setPowerSource: function(powerSourceId) {
55 this.powerSourceId_ = powerSourceId;
56 },
45 }; 57 };
46 58
47 function getFakePrefs() { 59 function getFakePrefs() {
48 return { 60 return {
49 settings: { 61 settings: {
50 touchpad: { 62 touchpad: {
51 enable_tap_to_click: { 63 enable_tap_to_click: {
52 key: 'settings.touchpad.enable_tap_to_click', 64 key: 'settings.touchpad.enable_tap_to_click',
53 type: chrome.settingsPrivate.PrefType.BOOLEAN, 65 type: chrome.settingsPrivate.PrefType.BOOLEAN,
54 value: true, 66 value: true,
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 // Confirm that there is now only one display and that it is primary 530 // Confirm that there is now only one display and that it is primary
519 // and mirroring is enabled. 531 // and mirroring is enabled.
520 expectEquals(1, displayPage.displays.length); 532 expectEquals(1, displayPage.displays.length);
521 expectEquals( 533 expectEquals(
522 displayPage.displays[0].id, displayPage.selectedDisplay.id); 534 displayPage.displays[0].id, displayPage.selectedDisplay.id);
523 expectTrue(displayPage.displays[0].isPrimary); 535 expectTrue(displayPage.displays[0].isPrimary);
524 expectTrue(displayPage.showMirror_(displayPage.displays)); 536 expectTrue(displayPage.showMirror_(displayPage.displays));
525 expectTrue(displayPage.isMirrored_(displayPage.displays)); 537 expectTrue(displayPage.isMirrored_(displayPage.displays));
526 }); 538 });
527 }); 539 });
540
541 suite(assert(TestNames.Power), function() {
542 /**
543 * Sets power sources using a deep copy of |sources|.
544 * @param {Array<settings.PowerSource>} sources
545 * @param {string} powerSourceId
546 * @param {bool} isLowPowerCharger
547 */
548 function setPowerSources(sources, powerSourceId, isLowPowerCharger) {
549 var sourcesCopy = sources.map(function(source) {
550 return Object.assign({}, source);
551 });
552 cr.webUIListenerCallback('power-sources-changed',
553 sourcesCopy, powerSourceId, isLowPowerCharger);
554 }
555
556 suite('no power settings', function() {
557 test('power row hidden', function() {
558 assertEquals(null, devicePage.$$('#powerRow'));
559 assertEquals(0,
560 settings.DevicePageBrowserProxyImpl.getInstance()
561 .updatePowerStatusCalled_);
562 });
563 });
564
565 suite('power settings', function() {
566 var powerRow;
567 var powerSourceWrapper;
568 var powerSourceSelect;
569
570 suiteSetup(function() {
571 // Always show power settings.
572 loadTimeData.overrideValues({
573 enablePowerSettings: true,
574 });
575 });
576
577 setup(function() {
578 powerRow = assert(devicePage.$$('#powerRow'));
579 powerSourceWrapper =
580 assert(powerRow.querySelector('.md-select-wrapper'));
581 powerSourceSelect = assert(devicePage.$$('#powerSource'));
582 assertEquals(1,
583 settings.DevicePageBrowserProxyImpl.getInstance()
584 .updatePowerStatusCalled_);
585 });
586
587 test('battery status', function() {
588 var icon = powerRow.querySelector('iron-icon');
589 assertEquals('settings:battery-unknown', icon.icon);
590
591 // Start at 50%.
592 var batteryStatus = {
593 charging: false,
594 calculating: false,
595 percent: 50,
596 statusText: '5 hours left',
597 };
598 cr.webUIListenerCallback(
599 'battery-status-changed', Object.assign({}, batteryStatus));
600 setPowerSources([], '', false);
601 assertEquals(icon.icon, 'settings:battery-50');
602
603 // Update to charging.
604 var powerSource = {
605 id: '1',
606 type: settings.PowerDeviceType.DEDICATED_CHARGER,
607 description: 'AC adapter',
608 };
609 batteryStatus.charging = true;
610 batteryStatus.percent = 65;
611 cr.webUIListenerCallback(
612 'battery-status-changed', Object.assign({}, batteryStatus));
613 setPowerSources([powerSource], powerSource.id, false);
614 assertEquals(icon.icon, 'settings:battery-charging-60');
615
616 // Update with a low-power charger.
617 setPowerSources([powerSource], powerSource.id, true);
618 assertEquals(icon.icon, 'settings:battery-unreliable');
619
620 // Update with no charger and a critical battery level.
621 batteryStatus.charging = false;
622 batteryStatus.percent = 2;
623 cr.webUIListenerCallback(
624 'battery-status-changed', Object.assign({}, batteryStatus));
625 setPowerSources([], '', false);
626 assertEquals(icon.icon, 'settings:battery-alert');
627 });
628
629 test('power sources', function() {
630 var batteryStatus = {
631 charging: false,
632 calculating: false,
633 percent: 50,
634 statusText: '5 hours left',
635 };
636 cr.webUIListenerCallback(
637 'battery-status-changed', Object.assign({}, batteryStatus));
638 setPowerSources([], '', false);
639 Polymer.dom.flush();
640
641 // Power sources dropdown is hidden.
642 assertTrue(powerSourceWrapper.hidden);
643
644 // Attach a dual-role USB device.
645 var powerSource = {
646 id: '2',
647 type: settings.PowerDeviceType.DUAL_ROLE_USB,
648 description: 'USB-C device',
649 };
650 setPowerSources([powerSource], '', false);
651 Polymer.dom.flush();
652
653 // "Battery" should be selected.
654 assertFalse(powerSourceWrapper.hidden);
655 assertEquals('', powerSourceSelect.value);
656
657 // Select the power source.
658 setPowerSources([powerSource], powerSource.id, true);
659 Polymer.dom.flush();
660 assertFalse(powerSourceWrapper.hidden);
661 assertEquals(powerSource.id, powerSourceSelect.value);
662
663 // Send another power source; the first should still be selected.
664 var otherPowerSource = Object.assign({}, powerSource);
665 otherPowerSource.id = '3';
666 setPowerSources(
667 [otherPowerSource, powerSource], powerSource.id, true);
668 Polymer.dom.flush();
669 assertFalse(powerSourceWrapper.hidden);
670 assertEquals(powerSource.id, powerSourceSelect.value);
671 });
672
673 test('choose power source', function() {
674 var batteryStatus = {
675 charging: false,
676 calculating: false,
677 percent: 50,
678 statusText: '5 hours left',
679 };
680 cr.webUIListenerCallback(
681 'battery-status-changed', Object.assign({}, batteryStatus));
682
683 // Attach a dual-role USB device.
684 var powerSource = {
685 id: '3',
686 type: settings.PowerDeviceType.DUAL_ROLE_USB,
687 description: 'USB-C device',
688 };
689 setPowerSources([powerSource], '', false);
690 Polymer.dom.flush();
691
692 // Select the device.
693 powerSourceSelect.value = powerSourceSelect.children[1].value;
694 powerSourceSelect.dispatchEvent(new CustomEvent('change'));
695 Polymer.dom.flush();
696 expectEquals(
697 powerSource.id,
698 settings.DevicePageBrowserProxyImpl.getInstance().powerSourceId_);
699 });
700 });
701 });
528 }); 702 });
529 703
530 return { 704 return {
531 TestNames: TestNames 705 TestNames: TestNames
532 }; 706 };
533 }); 707 });
OLDNEW
« 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