blob: 18ce294f38237f4e1f5c6101f00e30d9337eaeb1 [file] [log] [blame]
<!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>