4 <script src=
"../../../resources/js-test.js"></script>
5 <script src=
"../resources/common.js"></script>
6 <script src=
"../resources/picker-common.js"></script>
11 <option selected
>bar
</option>
12 <option hidden
>baz
</option>
13 <optgroup label=
"qux">
14 <option>garply
</option>
18 var menu
= document
.getElementById('menu');
20 function openPickerErrorCallback() {
21 testFailed('picker didn\'t open')
24 openPicker(menu
, test1
, openPickerErrorCallback
);
27 picker
= window
.internals
.pagePopupWindow
.global
.picker
;
28 shouldBeEqualToString('picker._selectElement.value', '1');
29 shouldBeEqualToString('menu.value', 'bar');
30 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
32 eventSender
.keyDown('downArrow');
33 shouldBeEqualToString('picker._selectElement.value', '4');
34 shouldBeEqualToString('menu.value', 'bar');
35 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
37 eventSender
.keyDown('downArrow');
38 shouldBeEqualToString('picker._selectElement.value', '4');
39 shouldBeEqualToString('menu.value', 'bar');
40 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
42 eventSender
.keyDown('upArrow');
43 shouldBeEqualToString('picker._selectElement.value', '1');
44 shouldBeEqualToString('menu.value', 'bar');
45 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
47 eventSender
.keyDown('upArrow');
48 shouldBeEqualToString('picker._selectElement.value', '0');
49 shouldBeEqualToString('menu.value', 'bar');
50 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
52 eventSender
.keyDown('upArrow');
53 shouldBeEqualToString('picker._selectElement.value', '0');
54 shouldBeEqualToString('menu.value', 'bar');
55 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
57 eventSender
.keyDown('\n');
58 shouldBeNull('window.internals.pagePopupWindow');
59 shouldBeEqualToString('menu.value', 'foo');
60 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
62 waitUntilClosing(function() {
63 openPicker(menu
, test2
, openPickerErrorCallback
);
68 picker
= window
.internals
.pagePopupWindow
.global
.picker
;
69 shouldBeEqualToString('picker._selectElement.value', '0');
70 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
72 eventSender
.keyDown('downArrow');
73 shouldBeEqualToString('picker._selectElement.value', '1');
74 shouldBeEqualToString('menu.value', 'foo');
75 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
77 // Escape should close the popup and select that keyboard selected item.
78 eventSender
.keyDown('escape');
79 shouldBeNull('window.internals.pagePopupWindow');
80 shouldBeEqualToString('menu.value', 'bar');
81 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
83 waitUntilClosing(function() {
84 openPicker(menu
, test3
, openPickerErrorCallback
);
89 picker
= window
.internals
.pagePopupWindow
.global
.picker
;
90 shouldBeEqualToString('picker._selectElement.value', '1');
91 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
93 eventSender
.keyDown('g');
94 shouldBeEqualToString('picker._selectElement.value', '4');
95 shouldBeEqualToString('menu.value', 'bar');
96 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
98 // Escape should close the popup and select that keyboard selected item.
99 eventSender
.keyDown('escape');
100 shouldBeNull('window.internals.pagePopupWindow');
101 shouldBeEqualToString('menu.value', 'garply');
102 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
104 waitUntilClosing(function() {
105 openPicker(menu
, test4
, openPickerErrorCallback
);
110 picker
= window
.internals
.pagePopupWindow
.global
.picker
;
111 shouldBeEqualToString('picker._selectElement.value', '4');
112 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
114 hoverOverElement(picker
._selectElement
.children
[0]);
115 shouldBeEqualToString('picker._selectElement.value', '0');
116 shouldBeEqualToString('menu.value', 'garply');
117 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
119 // Escape should close the popup. Simply hovering over an item should not select it.
120 eventSender
.keyDown('escape');
121 shouldBeNull('window.internals.pagePopupWindow');
122 shouldBeEqualToString('menu.value', 'garply');
123 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
125 waitUntilClosing(function() {
126 openPicker(menu
, test5
, openPickerErrorCallback
);
131 picker
= window
.internals
.pagePopupWindow
.global
.picker
;
132 shouldBeEqualToString('picker._selectElement.value', '4');
133 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
135 hoverOverElement(picker
._selectElement
.children
[0]);
136 shouldBeEqualToString('picker._selectElement.value', '0');
137 shouldBeEqualToString('menu.value', 'garply');
138 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
140 // leftArrow doesn't change the selection in the popup. So,
141 // selectMenuListText won't change.
142 eventSender
.keyDown('leftArrow');
143 shouldBeEqualToString('picker._selectElement.value', '0');
144 shouldBeEqualToString('menu.value', 'garply');
145 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
147 eventSender
.keyDown('escape');
148 shouldBeNull('window.internals.pagePopupWindow');
149 shouldBeEqualToString('menu.value', 'garply');
150 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply');
151 menu
.selectedIndex
= 0;
153 waitUntilClosing(function() {
154 openPicker(menu
, test6
, openPickerErrorCallback
);
159 picker
= window
.internals
.pagePopupWindow
.global
.picker
;
160 shouldBeEqualToString('picker._selectElement.value', '0');
161 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');
163 eventSender
.keyDown('downArrow');
164 shouldBeEqualToString('picker._selectElement.value', '1');
165 shouldBeEqualToString('menu.value', 'foo');
166 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar');
168 clickElement(picker
._selectElement
.children
[0]);
169 shouldBeNull('window.internals.pagePopupWindow');
170 shouldBeEqualToString('menu.value', 'foo');
171 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo');