| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../../../resources/js-test.js"></script> | 4 <script src="../../../resources/js-test.js"></script> |
| 5 <script src="../resources/common.js"></script> | 5 <script src="../resources/common.js"></script> |
| 6 <script src="../resources/picker-common.js"></script> | 6 <script src="../resources/picker-common.js"></script> |
| 7 </head> | 7 </head> |
| 8 <body> | 8 <body> |
| 9 <select id="menu"> | 9 <select id="menu"> |
| 10 <option>foo</option> | 10 <option>foo</option> |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 var menu = document.getElementById('menu'); | 23 var menu = document.getElementById('menu'); |
| 24 var menu2 = document.getElementById('menu2'); | 24 var menu2 = document.getElementById('menu2'); |
| 25 var picker = null; | 25 var picker = null; |
| 26 function openPickerErrorCallback() { | 26 function openPickerErrorCallback() { |
| 27 testFailed('picker didn\'t open') | 27 testFailed('picker didn\'t open') |
| 28 finishJSTest(); | 28 finishJSTest(); |
| 29 } | 29 } |
| 30 openPicker(menu, test1, openPickerErrorCallback); | 30 openPicker(menu, test1, openPickerErrorCallback); |
| 31 | 31 |
| 32 function test1() { | 32 function test1() { |
| 33 debug('==> Arrow keys + Enter'); |
| 33 picker = window.internals.pagePopupWindow.global.picker; | 34 picker = window.internals.pagePopupWindow.global.picker; |
| 34 shouldBeEqualToString('picker._selectElement.value', '1'); | 35 shouldBeEqualToString('picker._selectElement.value', '1'); |
| 35 shouldBeEqualToString('menu.value', 'bar'); | 36 shouldBeEqualToString('menu.value', 'bar'); |
| 36 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); | 37 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 37 | 38 |
| 38 eventSender.keyDown('ArrowDown'); | 39 eventSender.keyDown('ArrowDown'); |
| 39 shouldBeEqualToString('picker._selectElement.value', '4'); | 40 shouldBeEqualToString('picker._selectElement.value', '4'); |
| 40 shouldBeEqualToString('menu.value', 'bar'); | 41 shouldBeEqualToString('menu.value', 'bar'); |
| 41 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 42 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 42 | 43 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 64 shouldBeNull('window.internals.pagePopupWindow'); | 65 shouldBeNull('window.internals.pagePopupWindow'); |
| 65 shouldBeEqualToString('menu.value', 'foo'); | 66 shouldBeEqualToString('menu.value', 'foo'); |
| 66 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); | 67 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| 67 | 68 |
| 68 waitUntilClosing(function() { | 69 waitUntilClosing(function() { |
| 69 openPicker(menu, test2, openPickerErrorCallback); | 70 openPicker(menu, test2, openPickerErrorCallback); |
| 70 }); | 71 }); |
| 71 } | 72 } |
| 72 | 73 |
| 73 function test2() { | 74 function test2() { |
| 75 debug('==> Arrow keys + ESC'); |
| 74 picker = window.internals.pagePopupWindow.global.picker; | 76 picker = window.internals.pagePopupWindow.global.picker; |
| 75 shouldBeEqualToString('picker._selectElement.value', '0'); | 77 shouldBeEqualToString('picker._selectElement.value', '0'); |
| 76 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); | 78 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| 77 | 79 |
| 78 eventSender.keyDown('ArrowDown'); | 80 eventSender.keyDown('ArrowDown'); |
| 79 shouldBeEqualToString('picker._selectElement.value', '1'); | 81 shouldBeEqualToString('picker._selectElement.value', '1'); |
| 80 shouldBeEqualToString('menu.value', 'foo'); | 82 shouldBeEqualToString('menu.value', 'foo'); |
| 81 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); | 83 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 82 | 84 |
| 83 // Escape should close the popup and select that keyboard selected item. | 85 // Escape should close the popup and select that keyboard selected item. |
| 84 eventSender.keyDown('Escape'); | 86 eventSender.keyDown('Escape'); |
| 85 shouldBeNull('window.internals.pagePopupWindow'); | 87 shouldBeNull('window.internals.pagePopupWindow'); |
| 86 shouldBeEqualToString('menu.value', 'bar'); | 88 shouldBeEqualToString('menu.value', 'bar'); |
| 87 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); | 89 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 88 | 90 |
| 89 waitUntilClosing(function() { | 91 waitUntilClosing(function() { |
| 90 openPicker(menu, test3, openPickerErrorCallback); | 92 menu.value = 'foo'; |
| 93 openPicker(menu, testProvisionalSelectionAndBlur, openPickerErrorCallbac
k); |
| 91 }); | 94 }); |
| 92 } | 95 } |
| 93 | 96 |
| 97 function testProvisionalSelectionAndBlur() { |
| 98 debug('==> Arrow keys + blur'); |
| 99 picker = window.internals.pagePopupWindow.global.picker; |
| 100 shouldBeEqualToString('picker._selectElement.value', '0'); |
| 101 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| 102 |
| 103 eventSender.keyDown('ArrowDown'); |
| 104 shouldBeEqualToString('picker._selectElement.value', '1'); |
| 105 shouldBeEqualToString('menu.value', 'foo'); |
| 106 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 107 |
| 108 // Blur should close the popup and select the provisonal item. |
| 109 menu.blur(); |
| 110 shouldBeNull('window.internals.pagePopupWindow'); |
| 111 shouldBeEqualToString('menu.value', 'bar'); |
| 112 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 113 |
| 114 openPicker(menu, test3, openPickerErrorCallback); |
| 115 } |
| 116 |
| 94 function test3() { | 117 function test3() { |
| 118 debug('==> Typeahead + ESC'); |
| 95 picker = window.internals.pagePopupWindow.global.picker; | 119 picker = window.internals.pagePopupWindow.global.picker; |
| 96 shouldBeEqualToString('picker._selectElement.value', '1'); | 120 shouldBeEqualToString('picker._selectElement.value', '1'); |
| 97 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); | 121 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 98 | 122 |
| 99 eventSender.keyDown('g'); | 123 eventSender.keyDown('g'); |
| 100 shouldBeEqualToString('picker._selectElement.value', '4'); | 124 shouldBeEqualToString('picker._selectElement.value', '4'); |
| 101 shouldBeEqualToString('menu.value', 'bar'); | 125 shouldBeEqualToString('menu.value', 'bar'); |
| 102 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 126 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 103 | 127 |
| 104 // Escape should close the popup and select that keyboard selected item. | 128 // Escape should close the popup and select that keyboard selected item. |
| 105 eventSender.keyDown('Escape'); | 129 eventSender.keyDown('Escape'); |
| 106 shouldBeNull('window.internals.pagePopupWindow'); | 130 shouldBeNull('window.internals.pagePopupWindow'); |
| 107 shouldBeEqualToString('menu.value', 'garply'); | 131 shouldBeEqualToString('menu.value', 'garply'); |
| 108 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 132 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 109 | 133 |
| 110 waitUntilClosing(function() { | 134 waitUntilClosing(function() { |
| 111 openPicker(menu, test4, openPickerErrorCallback); | 135 openPicker(menu, test4, openPickerErrorCallback); |
| 112 }); | 136 }); |
| 113 } | 137 } |
| 114 | 138 |
| 115 function test4() { | 139 function test4() { |
| 140 debug('==> Hover + ESC'); |
| 116 picker = window.internals.pagePopupWindow.global.picker; | 141 picker = window.internals.pagePopupWindow.global.picker; |
| 117 shouldBeEqualToString('picker._selectElement.value', '4'); | 142 shouldBeEqualToString('picker._selectElement.value', '4'); |
| 118 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 143 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 119 | 144 |
| 120 hoverOverElement(picker._selectElement.children[0]); | 145 hoverOverElement(picker._selectElement.children[0]); |
| 121 shouldBeEqualToString('picker._selectElement.value', '0'); | 146 shouldBeEqualToString('picker._selectElement.value', '0'); |
| 122 shouldBeEqualToString('menu.value', 'garply'); | 147 shouldBeEqualToString('menu.value', 'garply'); |
| 123 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 148 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 124 | 149 |
| 125 // Escape should close the popup. Simply hovering over an item should not se
lect it. | 150 // Escape should close the popup. Simply hovering over an item should not se
lect it. |
| 126 eventSender.keyDown('Escape'); | 151 eventSender.keyDown('Escape'); |
| 127 shouldBeNull('window.internals.pagePopupWindow'); | 152 shouldBeNull('window.internals.pagePopupWindow'); |
| 128 shouldBeEqualToString('menu.value', 'garply'); | 153 shouldBeEqualToString('menu.value', 'garply'); |
| 129 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 154 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 130 | 155 |
| 131 waitUntilClosing(function() { | 156 waitUntilClosing(function() { |
| 132 openPicker(menu, test5, openPickerErrorCallback); | 157 openPicker(menu, test5, openPickerErrorCallback); |
| 133 }); | 158 }); |
| 134 } | 159 } |
| 135 | 160 |
| 136 function test5() { | 161 function test5() { |
| 162 debug('==> Hover + Invalid arrow + ESC'); |
| 137 picker = window.internals.pagePopupWindow.global.picker; | 163 picker = window.internals.pagePopupWindow.global.picker; |
| 138 shouldBeEqualToString('picker._selectElement.value', '4'); | 164 shouldBeEqualToString('picker._selectElement.value', '4'); |
| 139 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 165 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 140 | 166 |
| 141 hoverOverElement(picker._selectElement.children[0]); | 167 hoverOverElement(picker._selectElement.children[0]); |
| 142 shouldBeEqualToString('picker._selectElement.value', '0'); | 168 shouldBeEqualToString('picker._selectElement.value', '0'); |
| 143 shouldBeEqualToString('menu.value', 'garply'); | 169 shouldBeEqualToString('menu.value', 'garply'); |
| 144 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 170 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 145 | 171 |
| 146 // ArrowLeft doesn't change the selection in the popup. So, | 172 // ArrowLeft doesn't change the selection in the popup. So, |
| 147 // selectMenuListText won't change. | 173 // selectMenuListText won't change. |
| 148 eventSender.keyDown('ArrowLeft'); | 174 eventSender.keyDown('ArrowLeft'); |
| 149 shouldBeEqualToString('picker._selectElement.value', '0'); | 175 shouldBeEqualToString('picker._selectElement.value', '0'); |
| 150 shouldBeEqualToString('menu.value', 'garply'); | 176 shouldBeEqualToString('menu.value', 'garply'); |
| 151 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 177 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 152 | 178 |
| 153 eventSender.keyDown('Escape'); | 179 eventSender.keyDown('Escape'); |
| 154 shouldBeNull('window.internals.pagePopupWindow'); | 180 shouldBeNull('window.internals.pagePopupWindow'); |
| 155 shouldBeEqualToString('menu.value', 'garply'); | 181 shouldBeEqualToString('menu.value', 'garply'); |
| 156 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); | 182 shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| 157 menu.selectedIndex = 0; | 183 menu.selectedIndex = 0; |
| 158 | 184 |
| 159 waitUntilClosing(function() { | 185 waitUntilClosing(function() { |
| 160 openPicker(menu, test6, openPickerErrorCallback); | 186 openPicker(menu, test6, openPickerErrorCallback); |
| 161 }); | 187 }); |
| 162 } | 188 } |
| 163 | 189 |
| 164 function test6() { | 190 function test6() { |
| 191 debug('==> Arrow key + Click'); |
| 165 picker = window.internals.pagePopupWindow.global.picker; | 192 picker = window.internals.pagePopupWindow.global.picker; |
| 166 shouldBeEqualToString('picker._selectElement.value', '0'); | 193 shouldBeEqualToString('picker._selectElement.value', '0'); |
| 167 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); | 194 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| 168 | 195 |
| 169 eventSender.keyDown('ArrowDown'); | 196 eventSender.keyDown('ArrowDown'); |
| 170 shouldBeEqualToString('picker._selectElement.value', '1'); | 197 shouldBeEqualToString('picker._selectElement.value', '1'); |
| 171 shouldBeEqualToString('menu.value', 'foo'); | 198 shouldBeEqualToString('menu.value', 'foo'); |
| 172 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); | 199 shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| 173 | 200 |
| 174 clickElement(picker._selectElement.children[0]); | 201 clickElement(picker._selectElement.children[0]); |
| 175 shouldBeNull('window.internals.pagePopupWindow'); | 202 shouldBeNull('window.internals.pagePopupWindow'); |
| 176 shouldBeEqualToString('menu.value', 'foo'); | 203 shouldBeEqualToString('menu.value', 'foo'); |
| 177 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); | 204 shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| 178 | 205 |
| 179 waitUntilClosing(() => { | 206 waitUntilClosing(() => { |
| 180 menu2.selectedIndex = -1; | 207 menu2.selectedIndex = -1; |
| 181 openPicker(menu2, testEnterWithoutSelection, openPickerErrorCallback); | 208 openPicker(menu2, testEnterWithoutSelection, openPickerErrorCallback); |
| 182 }); | 209 }); |
| 183 } | 210 } |
| 184 | 211 |
| 185 function testEnterWithoutSelection() { | 212 function testEnterWithoutSelection() { |
| 213 debug('==> Enter with no selected OPTION'); |
| 186 picker = window.internals.pagePopupWindow.global.picker; | 214 picker = window.internals.pagePopupWindow.global.picker; |
| 187 shouldBeEqualToString('picker._selectElement.value', ''); | 215 shouldBeEqualToString('picker._selectElement.value', ''); |
| 188 eventSender.keyDown('Enter'); | 216 eventSender.keyDown('Enter'); |
| 189 shouldBeNull('window.internals.pagePopupWindow'); | 217 shouldBeNull('window.internals.pagePopupWindow'); |
| 190 shouldBeEqualToString('menu2.value', ''); | 218 shouldBeEqualToString('menu2.value', ''); |
| 191 | 219 |
| 192 finishJSTest(); | 220 finishJSTest(); |
| 193 } | 221 } |
| 194 </script> | 222 </script> |
| 195 </body> | 223 </body> |
| 196 </html> | 224 </html> |
| OLD | NEW |