OLD | NEW |
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 Power: 'power', |
13 Stylus: 'stylus', | 13 Stylus: 'stylus', |
14 }; | 14 }; |
15 | 15 |
16 /** | 16 /** |
17 * @constructor | 17 * @constructor |
18 * @implements {settings.DevicePageBrowserProxy} | 18 * @implements {settings.DevicePageBrowserProxy} |
19 */ | 19 */ |
20 function TestDevicePageBrowserProxy() { | 20 function TestDevicePageBrowserProxy() { |
21 this.keyboardShortcutsOverlayShown_ = 0; | 21 this.keyboardShortcutsOverlayShown_ = 0; |
22 this.updatePowerStatusCalled_ = 0; | 22 this.updatePowerStatusCalled_ = 0; |
| 23 this.requestPowerManagementSettingsCalled_ = 0; |
23 this.onNoteTakingAppsUpdated_ = null; | 24 this.onNoteTakingAppsUpdated_ = null; |
24 this.requestNoteTakingApps_ = 0; | 25 this.requestNoteTakingApps_ = 0; |
25 this.setPreferredNoteTakingApp_ = ''; | 26 this.setPreferredNoteTakingApp_ = ''; |
26 } | 27 } |
27 | 28 |
28 TestDevicePageBrowserProxy.prototype = { | 29 TestDevicePageBrowserProxy.prototype = { |
29 /** override */ | 30 /** override */ |
30 initializePointers: function() { | 31 initializePointers: function() { |
31 // Enable mouse and touchpad. | 32 // Enable mouse and touchpad. |
32 cr.webUIListenerCallback('has-mouse-changed', true); | 33 cr.webUIListenerCallback('has-mouse-changed', true); |
(...skipping 26 matching lines...) Expand all Loading... |
59 updatePowerStatus: function() { | 60 updatePowerStatus: function() { |
60 this.updatePowerStatusCalled_++; | 61 this.updatePowerStatusCalled_++; |
61 }, | 62 }, |
62 | 63 |
63 /** @override */ | 64 /** @override */ |
64 setPowerSource: function(powerSourceId) { | 65 setPowerSource: function(powerSourceId) { |
65 this.powerSourceId_ = powerSourceId; | 66 this.powerSourceId_ = powerSourceId; |
66 }, | 67 }, |
67 | 68 |
68 /** @override */ | 69 /** @override */ |
| 70 requestPowerManagementSettings: function() { |
| 71 this.requestPowerManagementSettingsCalled_++; |
| 72 }, |
| 73 |
| 74 /** @override */ |
| 75 setIdleBehavior: function(behavior) { |
| 76 this.idleBehavior_ = behavior; |
| 77 }, |
| 78 |
| 79 /** @override */ |
| 80 setLidClosedBehavior: function(behavior) { |
| 81 this.lidClosedBehavior_ = behavior; |
| 82 }, |
| 83 |
| 84 /** @override */ |
69 setNoteTakingAppsUpdatedCallback: function(callback) { | 85 setNoteTakingAppsUpdatedCallback: function(callback) { |
70 this.onNoteTakingAppsUpdated_ = callback; | 86 this.onNoteTakingAppsUpdated_ = callback; |
71 }, | 87 }, |
72 | 88 |
73 /** @override */ | 89 /** @override */ |
74 requestNoteTakingApps: function() { | 90 requestNoteTakingApps: function() { |
75 this.requestNoteTakingApps_++; | 91 this.requestNoteTakingApps_++; |
76 }, | 92 }, |
77 | 93 |
78 /** @override */ | 94 /** @override */ |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 'neon-animation-finish', resolve); | 251 'neon-animation-finish', resolve); |
236 MockInteractions.tap(row); | 252 MockInteractions.tap(row); |
237 }).then(function() { | 253 }).then(function() { |
238 assertEquals(expectedRoute, settings.getCurrentRoute()); | 254 assertEquals(expectedRoute, settings.getCurrentRoute()); |
239 var page = devicePage.$$('settings-' + subpage); | 255 var page = devicePage.$$('settings-' + subpage); |
240 return assert(page); | 256 return assert(page); |
241 }); | 257 }); |
242 }; | 258 }; |
243 | 259 |
244 /** | 260 /** |
| 261 * @param {settings.IdleBehavior} idleBehavior |
| 262 * @param {boolean} idleControlled |
| 263 * @param {settings.LidClosedBehavior} lidClosedBehavior |
| 264 * @param {boolean} lidClosedControlled |
| 265 * @param {boolean} hasLid |
| 266 */ |
| 267 function sendPowerManagementSettings(idleBehavior, idleControlled, |
| 268 lidClosedBehavior, lidClosedControlled, |
| 269 hasLid) { |
| 270 cr.webUIListenerCallback( |
| 271 'power-management-settings-changed', |
| 272 { |
| 273 idleBehavior: idleBehavior, |
| 274 idleControlled: idleControlled, |
| 275 lidClosedBehavior: lidClosedBehavior, |
| 276 lidClosedControlled: lidClosedControlled, |
| 277 hasLid: hasLid, |
| 278 }); |
| 279 Polymer.dom.flush(); |
| 280 }; |
| 281 |
| 282 /** |
| 283 * @param {!HTMLElement} select |
| 284 * @param {!value} string |
| 285 */ |
| 286 function selectValue(select, value) { |
| 287 select.value = value; |
| 288 select.dispatchEvent(new CustomEvent('change')); |
| 289 Polymer.dom.flush(); |
| 290 } |
| 291 |
| 292 /** |
245 * @param {!HTMLElement} pointersPage | 293 * @param {!HTMLElement} pointersPage |
246 * @param {boolean} expected | 294 * @param {boolean} expected |
247 */ | 295 */ |
248 function expectNaturalScrollValue(pointersPage, expected) { | 296 function expectNaturalScrollValue(pointersPage, expected) { |
249 var naturalScrollOff = | 297 var naturalScrollOff = |
250 pointersPage.$$('paper-radio-button[name="false"]'); | 298 pointersPage.$$('paper-radio-button[name="false"]'); |
251 var naturalScrollOn = | 299 var naturalScrollOn = |
252 pointersPage.$$('paper-radio-button[name="true"]'); | 300 pointersPage.$$('paper-radio-button[name="true"]'); |
253 assertTrue(!!naturalScrollOff); | 301 assertTrue(!!naturalScrollOff); |
254 assertTrue(!!naturalScrollOn); | 302 assertTrue(!!naturalScrollOn); |
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 */ | 634 */ |
587 function setPowerSources(sources, powerSourceId, isLowPowerCharger) { | 635 function setPowerSources(sources, powerSourceId, isLowPowerCharger) { |
588 var sourcesCopy = sources.map(function(source) { | 636 var sourcesCopy = sources.map(function(source) { |
589 return Object.assign({}, source); | 637 return Object.assign({}, source); |
590 }); | 638 }); |
591 cr.webUIListenerCallback('power-sources-changed', | 639 cr.webUIListenerCallback('power-sources-changed', |
592 sourcesCopy, powerSourceId, isLowPowerCharger); | 640 sourcesCopy, powerSourceId, isLowPowerCharger); |
593 } | 641 } |
594 | 642 |
595 suite('no power settings', function() { | 643 suite('no power settings', function() { |
| 644 suiteSetup(function() { |
| 645 // Never show power settings. |
| 646 loadTimeData.overrideValues({ |
| 647 enablePowerSettings: false, |
| 648 }); |
| 649 }); |
| 650 |
596 test('power row hidden', function() { | 651 test('power row hidden', function() { |
597 assertEquals(null, devicePage.$$('#powerRow')); | 652 assertEquals(null, devicePage.$$('#powerRow')); |
598 assertEquals(0, | 653 assertEquals(0, |
599 settings.DevicePageBrowserProxyImpl.getInstance() | 654 settings.DevicePageBrowserProxyImpl.getInstance() |
600 .updatePowerStatusCalled_); | 655 .updatePowerStatusCalled_); |
601 }); | 656 }); |
602 }); | 657 }); |
603 | 658 |
604 suite('power settings', function() { | 659 suite('power settings', function() { |
605 var powerPage; | 660 var powerPage; |
606 var powerSourceRow; | 661 var powerSourceRow; |
607 var powerSourceWrapper; | 662 var powerSourceWrapper; |
608 var powerSourceSelect; | 663 var powerSourceSelect; |
| 664 var idleSelect; |
| 665 var lidClosedSelect; |
609 | 666 |
610 suiteSetup(function() { | 667 suiteSetup(function() { |
611 // Always show power settings. | 668 // Always show power settings. |
612 loadTimeData.overrideValues({ | 669 loadTimeData.overrideValues({ |
613 enablePowerSettings: true, | 670 enablePowerSettings: true, |
614 }); | 671 }); |
615 }); | 672 }); |
616 | 673 |
617 setup(function() { | 674 setup(function() { |
618 return showAndGetDeviceSubpage('power', settings.Route.POWER) | 675 return showAndGetDeviceSubpage('power', settings.Route.POWER) |
619 .then(function(page) { | 676 .then(function(page) { |
620 powerPage = page; | 677 powerPage = page; |
621 powerSourceRow = assert(powerPage.$$('#powerSourceRow')); | 678 powerSourceRow = assert(powerPage.$$('#powerSourceRow')); |
622 powerSourceWrapper = | 679 powerSourceWrapper = |
623 assert(powerSourceRow.querySelector('.md-select-wrapper')); | 680 assert(powerSourceRow.querySelector('.md-select-wrapper')); |
624 powerSourceSelect = assert(powerPage.$$('#powerSource')); | 681 powerSourceSelect = assert(powerPage.$$('#powerSource')); |
625 assertEquals( | 682 assertEquals( |
626 1, | 683 1, |
627 settings.DevicePageBrowserProxyImpl.getInstance() | 684 settings.DevicePageBrowserProxyImpl.getInstance() |
628 .updatePowerStatusCalled_); | 685 .updatePowerStatusCalled_); |
| 686 |
| 687 idleSelect = assert(powerPage.$$('#idleSelect')); |
| 688 lidClosedSelect = assert(powerPage.$$('#lidClosedSelect')); |
| 689 |
| 690 assertEquals( |
| 691 1, |
| 692 settings.DevicePageBrowserProxyImpl.getInstance() |
| 693 .requestPowerManagementSettingsCalled_); |
| 694 sendPowerManagementSettings( |
| 695 settings.IdleBehavior.DISPLAY_OFF_SLEEP, |
| 696 false /* idleControlled */, |
| 697 settings.LidClosedBehavior.SUSPEND, |
| 698 false /* lidClosedControlled */, true /* hasLid */); |
629 }); | 699 }); |
630 }); | 700 }); |
631 | 701 |
632 test('power sources', function() { | 702 test('power sources', function() { |
633 var batteryStatus = { | 703 var batteryStatus = { |
634 charging: false, | 704 charging: false, |
635 calculating: false, | 705 calculating: false, |
636 percent: 50, | 706 percent: 50, |
637 statusText: '5 hours left', | 707 statusText: '5 hours left', |
638 }; | 708 }; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
686 // Attach a dual-role USB device. | 756 // Attach a dual-role USB device. |
687 var powerSource = { | 757 var powerSource = { |
688 id: '3', | 758 id: '3', |
689 type: settings.PowerDeviceType.DUAL_ROLE_USB, | 759 type: settings.PowerDeviceType.DUAL_ROLE_USB, |
690 description: 'USB-C device', | 760 description: 'USB-C device', |
691 }; | 761 }; |
692 setPowerSources([powerSource], '', false); | 762 setPowerSources([powerSource], '', false); |
693 Polymer.dom.flush(); | 763 Polymer.dom.flush(); |
694 | 764 |
695 // Select the device. | 765 // Select the device. |
696 powerSourceSelect.value = powerSourceSelect.children[1].value; | 766 selectValue(powerSourceSelect, powerSourceSelect.children[1].value); |
697 powerSourceSelect.dispatchEvent(new CustomEvent('change')); | |
698 Polymer.dom.flush(); | |
699 expectEquals( | 767 expectEquals( |
700 powerSource.id, | 768 powerSource.id, |
701 settings.DevicePageBrowserProxyImpl.getInstance().powerSourceId_); | 769 settings.DevicePageBrowserProxyImpl.getInstance().powerSourceId_); |
702 }); | 770 }); |
| 771 |
| 772 test('set idle behavior', function() { |
| 773 selectValue(idleSelect, settings.IdleBehavior.DISPLAY_ON); |
| 774 expectEquals( |
| 775 settings.IdleBehavior.DISPLAY_ON, |
| 776 settings.DevicePageBrowserProxyImpl.getInstance().idleBehavior_); |
| 777 |
| 778 selectValue(idleSelect, settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE); |
| 779 expectEquals( |
| 780 settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE, |
| 781 settings.DevicePageBrowserProxyImpl.getInstance().idleBehavior_); |
| 782 }); |
| 783 |
| 784 test('set lid behavior', function() { |
| 785 selectValue(lidClosedSelect, settings.LidClosedBehavior.DO_NOTHING); |
| 786 expectEquals( |
| 787 settings.LidClosedBehavior.DO_NOTHING, |
| 788 settings.DevicePageBrowserProxyImpl.getInstance() |
| 789 .lidClosedBehavior_); |
| 790 |
| 791 selectValue(lidClosedSelect, settings.LidClosedBehavior.SUSPEND); |
| 792 expectEquals( |
| 793 settings.LidClosedBehavior.SUSPEND, |
| 794 settings.DevicePageBrowserProxyImpl.getInstance() |
| 795 .lidClosedBehavior_); |
| 796 }); |
| 797 |
| 798 test('display idle and lid behavior', function() { |
| 799 return new Promise(function(resolve) { |
| 800 sendPowerManagementSettings( |
| 801 settings.IdleBehavior.DISPLAY_ON, false /* idleControlled */, |
| 802 settings.LidClosedBehavior.DO_NOTHING, |
| 803 false /* lidClosedControlled */, true /* hasLid */); |
| 804 powerPage.async(resolve); |
| 805 }).then(function() { |
| 806 expectEquals( |
| 807 settings.IdleBehavior.DISPLAY_ON.toString(), idleSelect.value); |
| 808 expectFalse(idleSelect.disabled); |
| 809 expectEquals(null, powerPage.$$('#idleControlledIndicator')); |
| 810 expectEquals( |
| 811 settings.LidClosedBehavior.DO_NOTHING.toString(), |
| 812 lidClosedSelect.value); |
| 813 expectFalse(lidClosedSelect.disabled); |
| 814 expectEquals(null, powerPage.$$('#lidClosedControlledIndicator')); |
| 815 }).then(function() { |
| 816 sendPowerManagementSettings( |
| 817 settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE, |
| 818 false /* idleControlled */, settings.LidClosedBehavior.SUSPEND, |
| 819 false /* lidClosedControlled */, true /* hasLid */); |
| 820 return new Promise(function(resolve) { powerPage.async(resolve); }); |
| 821 }).then(function() { |
| 822 expectEquals( |
| 823 settings.IdleBehavior.DISPLAY_OFF_STAY_AWAKE.toString(), |
| 824 idleSelect.value); |
| 825 expectFalse(idleSelect.disabled); |
| 826 expectEquals(null, powerPage.$$('#idleControlledIndicator')); |
| 827 expectEquals( |
| 828 settings.LidClosedBehavior.SUSPEND.toString(), |
| 829 lidClosedSelect.value); |
| 830 expectFalse(lidClosedSelect.disabled); |
| 831 expectEquals(null, powerPage.$$('#lidClosedControlledIndicator')); |
| 832 }); |
| 833 }); |
| 834 |
| 835 test('display controlled idle and lid behavior', function() { |
| 836 // When settings are controlled, the selects should be disabled and |
| 837 // the indicators should be shown. |
| 838 return new Promise(function(resolve) { |
| 839 sendPowerManagementSettings( |
| 840 settings.IdleBehavior.OTHER, true /* idleControlled */, |
| 841 settings.LidClosedBehavior.SUSPEND, |
| 842 true /* lidClosedControlled */, true /* hasLid */); |
| 843 powerPage.async(resolve); |
| 844 }).then(function() { |
| 845 expectEquals( |
| 846 settings.IdleBehavior.OTHER.toString(), idleSelect.value); |
| 847 expectTrue(idleSelect.disabled); |
| 848 expectNotEquals(null, powerPage.$$('#idleControlledIndicator')); |
| 849 expectEquals( |
| 850 settings.LidClosedBehavior.SUSPEND.toString(), |
| 851 lidClosedSelect.value); |
| 852 expectTrue(lidClosedSelect.disabled); |
| 853 expectNotEquals( |
| 854 null, powerPage.$$('#lidClosedControlledIndicator')); |
| 855 }); |
| 856 }); |
| 857 |
| 858 test('hide lid behavior when lid not present', function() { |
| 859 return new Promise(function(resolve) { |
| 860 expectFalse(powerPage.$$('#lidClosedRow').hidden); |
| 861 sendPowerManagementSettings( |
| 862 settings.IdleBehavior.DISPLAY_OFF_SLEEP, |
| 863 false /* idleControlled */, settings.LidClosedBehavior.SUSPEND, |
| 864 false /* lidClosedControlled */, false /* hasLid */); |
| 865 powerPage.async(resolve); |
| 866 }).then(function() { |
| 867 expectTrue(powerPage.$$('#lidClosedRow').hidden); |
| 868 }); |
| 869 }); |
703 }); | 870 }); |
704 }); | 871 }); |
705 | 872 |
706 suite(assert(TestNames.Stylus), function() { | 873 suite(assert(TestNames.Stylus), function() { |
707 var stylusPage; | 874 var stylusPage; |
708 var appSelector; | 875 var appSelector; |
709 var browserProxy; | 876 var browserProxy; |
710 var noAppsDiv; | 877 var noAppsDiv; |
711 var waitingDiv; | 878 var waitingDiv; |
712 var selectAppDiv; | 879 var selectAppDiv; |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 .value); | 1144 .value); |
978 }); | 1145 }); |
979 }); | 1146 }); |
980 }); | 1147 }); |
981 }); | 1148 }); |
982 | 1149 |
983 return { | 1150 return { |
984 TestNames: TestNames | 1151 TestNames: TestNames |
985 }; | 1152 }; |
986 }); | 1153 }); |
OLD | NEW |