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 /** | 5 /** |
6 * @fileoverview Tests for cr-action-menu element. Runs as an interactive UI | 6 * @fileoverview Tests for cr-action-menu element. Runs as an interactive UI |
7 * test, since many of these tests check focus behavior. | 7 * test, since many of these tests check focus behavior. |
8 */ | 8 */ |
9 suite('CrActionMenu', function() { | 9 suite('CrActionMenu', function() { |
10 /** @type {?CrActionMenuElement} */ | 10 /** @type {?CrActionMenuElement} */ |
(...skipping 18 matching lines...) Expand all Loading... | |
29 menu = document.querySelector('dialog[is=cr-action-menu]'); | 29 menu = document.querySelector('dialog[is=cr-action-menu]'); |
30 items = menu.querySelectorAll('.dropdown-item'); | 30 items = menu.querySelectorAll('.dropdown-item'); |
31 assertEquals(3, items.length); | 31 assertEquals(3, items.length); |
32 }); | 32 }); |
33 | 33 |
34 teardown(function() { | 34 teardown(function() { |
35 if (menu.open) | 35 if (menu.open) |
36 menu.close(); | 36 menu.close(); |
37 }); | 37 }); |
38 | 38 |
39 test('focus after showing', function() { | 39 function down() { |
40 MockInteractions.keyDownOn(menu, 'ArrowDown', [], 'ArrowDown'); | |
41 } | |
42 | |
43 test('hidden or disabled items', function() { | |
40 menu.showAt(document.querySelector('#dots')); | 44 menu.showAt(document.querySelector('#dots')); |
45 down(); | |
41 assertEquals(menu.root.activeElement, items[0]); | 46 assertEquals(menu.root.activeElement, items[0]); |
42 | 47 |
43 menu.close(); | 48 menu.close(); |
44 items[0].hidden = true; | 49 items[0].hidden = true; |
45 menu.showAt(document.querySelector('#dots')); | 50 menu.showAt(document.querySelector('#dots')); |
51 down(); | |
46 assertEquals(menu.root.activeElement, items[1]); | 52 assertEquals(menu.root.activeElement, items[1]); |
47 | 53 |
48 menu.close(); | 54 menu.close(); |
49 items[1].hidden = true; | 55 items[1].disabled = true; |
50 menu.showAt(document.querySelector('#dots')); | 56 menu.showAt(document.querySelector('#dots')); |
57 down(); | |
51 assertEquals(menu.root.activeElement, items[2]); | 58 assertEquals(menu.root.activeElement, items[2]); |
52 | |
53 menu.close(); | |
54 items[2].disabled = true; | |
55 menu.showAt(document.querySelector('#dots')); | |
56 assertEquals(null, menu.root.activeElement); | |
57 }); | 59 }); |
58 | 60 |
59 test('focus after down/up arrow', function() { | 61 test('focus after down/up arrow', function() { |
60 function down() { | |
61 MockInteractions.keyDownOn(menu, 'ArrowDown', [], 'ArrowDown'); | |
62 } | |
63 | |
64 function up() { | 62 function up() { |
65 MockInteractions.keyDownOn(menu, 'ArrowUp', [], 'ArrowUp'); | 63 MockInteractions.keyDownOn(menu, 'ArrowUp', [], 'ArrowUp'); |
66 } | 64 } |
67 | 65 |
68 menu.showAt(document.querySelector('#dots')); | 66 menu.showAt(document.querySelector('#dots')); |
67 | |
68 // The menu should be focused when shown, but not on any of the items. | |
69 assertEquals(menu, document.activeElement); | |
70 assertNotEquals(items[0], menu.root.activeElement); | |
dpapad
2017/03/18 01:03:05
Optional nit: What is the value of menu.root.activ
Dan Beam
2017/03/18 17:55:06
it's not null, it's a wrapper in the shadow DOM an
| |
71 assertNotEquals(items[1], menu.root.activeElement); | |
72 assertNotEquals(items[2], menu.root.activeElement); | |
73 | |
74 down(); | |
69 assertEquals(items[0], menu.root.activeElement); | 75 assertEquals(items[0], menu.root.activeElement); |
70 | |
71 down(); | 76 down(); |
72 assertEquals(items[1], menu.root.activeElement); | 77 assertEquals(items[1], menu.root.activeElement); |
73 down(); | 78 down(); |
74 assertEquals(items[2], menu.root.activeElement); | 79 assertEquals(items[2], menu.root.activeElement); |
75 down(); | 80 down(); |
76 assertEquals(items[0], menu.root.activeElement); | 81 assertEquals(items[0], menu.root.activeElement); |
77 up(); | 82 up(); |
78 assertEquals(items[2], menu.root.activeElement); | 83 assertEquals(items[2], menu.root.activeElement); |
79 up(); | 84 up(); |
80 assertEquals(items[1], menu.root.activeElement); | 85 assertEquals(items[1], menu.root.activeElement); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
116 MockInteractions.keyDownOn(menu, key, [], key); | 121 MockInteractions.keyDownOn(menu, key, [], key); |
117 assertFalse(menu.open); | 122 assertFalse(menu.open); |
118 }); | 123 }); |
119 } | 124 } |
120 | 125 |
121 test('close on Tab', function() { return testFocusAfterClosing('Tab'); }); | 126 test('close on Tab', function() { return testFocusAfterClosing('Tab'); }); |
122 test('close on Escape', function() { | 127 test('close on Escape', function() { |
123 return testFocusAfterClosing('Escape'); | 128 return testFocusAfterClosing('Escape'); |
124 }); | 129 }); |
125 }); | 130 }); |
OLD | NEW |