| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| <script src="../resources/common.js"></script> |
| <script src="../resources/picker-common.js"></script> |
| </head> |
| <body> |
| <select id="menu"> |
| <option>foo</option> |
| <option selected>bar</option> |
| <option hidden>baz</option> |
| <optgroup label="qux"> |
| <option>garply</option> |
| </optgroup> |
| </select> |
| <div id="console"></div> |
| <script> |
| var menu = document.getElementById('menu'); |
| var picker = null; |
| function openPickerErrorCallback() { |
| testFailed('picker didn\'t open') |
| finishJSTest(); |
| } |
| openPicker(menu, test1, openPickerErrorCallback); |
| |
| function test1() { |
| picker = window.internals.pagePopupWindow.global.picker; |
| shouldBeEqualToString('picker._selectElement.value', '1'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| |
| eventSender.keyDown('downArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '4'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| eventSender.keyDown('downArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '4'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| eventSender.keyDown('upArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '1'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| |
| eventSender.keyDown('upArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| |
| eventSender.keyDown('upArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| |
| eventSender.keyDown('\n'); |
| shouldBeNull('window.internals.pagePopupWindow'); |
| shouldBeEqualToString('menu.value', 'foo'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| |
| waitUntilClosing(function() { |
| openPicker(menu, test2, openPickerErrorCallback); |
| }); |
| } |
| |
| function test2() { |
| picker = window.internals.pagePopupWindow.global.picker; |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| |
| eventSender.keyDown('downArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '1'); |
| shouldBeEqualToString('menu.value', 'foo'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| |
| // Escape should close the popup and select that keyboard selected item. |
| eventSender.keyDown('escape'); |
| shouldBeNull('window.internals.pagePopupWindow'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| |
| waitUntilClosing(function() { |
| openPicker(menu, test3, openPickerErrorCallback); |
| }); |
| } |
| |
| function test3() { |
| picker = window.internals.pagePopupWindow.global.picker; |
| shouldBeEqualToString('picker._selectElement.value', '1'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| |
| eventSender.keyDown('g'); |
| shouldBeEqualToString('picker._selectElement.value', '4'); |
| shouldBeEqualToString('menu.value', 'bar'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| // Escape should close the popup and select that keyboard selected item. |
| eventSender.keyDown('escape'); |
| shouldBeNull('window.internals.pagePopupWindow'); |
| shouldBeEqualToString('menu.value', 'garply'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| waitUntilClosing(function() { |
| openPicker(menu, test4, openPickerErrorCallback); |
| }); |
| } |
| |
| function test4() { |
| picker = window.internals.pagePopupWindow.global.picker; |
| shouldBeEqualToString('picker._selectElement.value', '4'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| hoverOverElement(picker._selectElement.children[0]); |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('menu.value', 'garply'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| // Escape should close the popup. Simply hovering over an item should not select it. |
| eventSender.keyDown('escape'); |
| shouldBeNull('window.internals.pagePopupWindow'); |
| shouldBeEqualToString('menu.value', 'garply'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| waitUntilClosing(function() { |
| openPicker(menu, test5, openPickerErrorCallback); |
| }); |
| } |
| |
| function test5() { |
| picker = window.internals.pagePopupWindow.global.picker; |
| shouldBeEqualToString('picker._selectElement.value', '4'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| hoverOverElement(picker._selectElement.children[0]); |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('menu.value', 'garply'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| // leftArrow doesn't change the selection in the popup. So, |
| // selectMenuListText won't change. |
| eventSender.keyDown('leftArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('menu.value', 'garply'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| |
| eventSender.keyDown('escape'); |
| shouldBeNull('window.internals.pagePopupWindow'); |
| shouldBeEqualToString('menu.value', 'garply'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); |
| menu.selectedIndex = 0; |
| |
| waitUntilClosing(function() { |
| openPicker(menu, test6, openPickerErrorCallback); |
| }); |
| } |
| |
| function test6() { |
| picker = window.internals.pagePopupWindow.global.picker; |
| shouldBeEqualToString('picker._selectElement.value', '0'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| |
| eventSender.keyDown('downArrow'); |
| shouldBeEqualToString('picker._selectElement.value', '1'); |
| shouldBeEqualToString('menu.value', 'foo'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); |
| |
| clickElement(picker._selectElement.children[0]); |
| shouldBeNull('window.internals.pagePopupWindow'); |
| shouldBeEqualToString('menu.value', 'foo'); |
| shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); |
| |
| finishJSTest(); |
| } |
| </script> |
| </body> |
| </html> |