232 lines
9.2 KiB
HTML
232 lines
9.2 KiB
HTML
<html>
|
|
<head>
|
|
<title>SELECT pop-up page keys test</title>
|
|
<script>
|
|
function log(s)
|
|
{
|
|
document.getElementById('console').appendChild(document.createTextNode(s + "\n"));
|
|
}
|
|
|
|
function sendKey(element, key) {
|
|
if (window.testRunner) {
|
|
key = key.substr(0,1).toLowerCase() + key.substr(1); // lowercase 1st letter for eventSender
|
|
eventSender.keyDown(key);
|
|
} else {
|
|
var event = document.createEvent("KeyboardEvents");
|
|
event.initKeyboardEvent("keydown", true, true, document.defaultView, key, 0,
|
|
false, false, false, false, false);
|
|
element.dispatchEvent(event);
|
|
}
|
|
}
|
|
|
|
function sendKeyAndExpectIndex(selectId, key, initialIndex, expectedIndex) {
|
|
var select = document.getElementById(selectId);
|
|
clearSelection(select);
|
|
select.focus();
|
|
select.selectedIndex = initialIndex;
|
|
if (select.selectedIndex != initialIndex) {
|
|
log("FAIL: can't set selectedIndex to " + initialIndex + ' (is '
|
|
+ select.selectedIndex + ')');
|
|
return false;
|
|
}
|
|
sendKey(select, key);
|
|
if (select.selectedIndex != expectedIndex) {
|
|
log('FAIL: selectedIndex should be ' + expectedIndex + ' (is ' +
|
|
select.selectedIndex + ') after a ' + key +
|
|
' from index ' + initialIndex);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function clearSelection(select) {
|
|
for (i = 0; i < select.options.length; i++)
|
|
select.options[i].selected = false;
|
|
}
|
|
|
|
function testPageDownNoDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 0, 3) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 1, 4) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 2, 5) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 3, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 4, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 5, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageDown", 6, 6) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testPageDownNoDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testPageUpNoDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 6, 3) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 5, 2) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 4, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 3, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 2, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 1, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "PageUp", 0, 0) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testPageUpNoDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testHomeNoDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 6, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 5, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 4, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 3, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 2, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 1, 0) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "Home", 0, 0) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testHomeNoDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testEndNoDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ss', "End", 6, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "End", 5, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "End", 4, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "End", 3, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "End", 2, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "End", 1, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ss', "End", 0, 6) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testEndNoDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testPageDownWithDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ssd', "PageDown", 1, 4) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageDown", 2, 5) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageDown", 4, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageDown", 5, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageDown", 6, 6) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testPageDownWithDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testPageUpWithDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ssd', "PageUp", 6, 2) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageUp", 5, 2) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageUp", 4, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageUp", 2, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "PageUp", 1, 1) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testPageUpWithDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testHomeWithDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 7, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 6, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 5, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 4, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 3, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 2, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 1, 1) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "Home", 0, 1) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testHomeWithDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function testEndWithDisabledElements() {
|
|
var passed = true;
|
|
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 7, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 6, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 5, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 4, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 3, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 2, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 1, 6) && passed;
|
|
passed = sendKeyAndExpectIndex('ssd', "End", 0, 6) && passed;
|
|
|
|
if (passed)
|
|
log('PASS: testEndWithDisabledElements passed');
|
|
return passed;
|
|
}
|
|
|
|
function test()
|
|
{
|
|
try{
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
var passed = true;
|
|
passed = testPageDownNoDisabledElements() && passed;
|
|
passed = testPageUpNoDisabledElements() && passed;
|
|
passed = testHomeNoDisabledElements() && passed;
|
|
passed = testEndNoDisabledElements() && passed;
|
|
|
|
passed = testPageDownWithDisabledElements() && passed;
|
|
passed = testPageUpWithDisabledElements() && passed;
|
|
passed = testHomeWithDisabledElements() && passed;
|
|
passed = testEndWithDisabledElements() && passed;
|
|
|
|
if (passed)
|
|
log('\nPASS: ALL TESTS SUCCEEDED');
|
|
else
|
|
log('\nFAIL: SOME TESTS FAILED (SEE ABOVE)');
|
|
log('');
|
|
} catch (exception) {
|
|
log('\nFAIL: Threw exception: ' + exception);
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="test()">
|
|
<p>This test verifies that the Home/End/PageUp/PageDown keys work correctly
|
|
for pop-up <select> elements that have focus but are not currently popped-up.</p>
|
|
<p>Output below is a series of PASS or FAIL lines showing expected and actual selection indexes,
|
|
followed by a single PASS or FAIL for the status of the entire test.<p>
|
|
<p>NOTE: This test will fail on Mac OS, on which these keys are NOT supposed to change
|
|
the selection of a focused pop-up.</p>
|
|
<hr>
|
|
<form>
|
|
<select name="singleselect" id="ss">
|
|
<option value="0">0 </option>
|
|
<option value="1">1 </option>
|
|
<option value="2">2 </option>
|
|
<option value="3">3 </option>
|
|
<option value="4">4 </option>
|
|
<option value="5">5 </option>
|
|
<option value="6">6 </option>
|
|
</select>
|
|
<select name="singleselectwithdisabled" id="ssd">
|
|
<option value="0" disabled="true">0 </option>
|
|
<option value="1">1 </option>
|
|
<option value="2">2 </option>
|
|
<option value="3" disabled="true">3 </option>
|
|
<option value="4">4 </option>
|
|
<option value="5">5 </option>
|
|
<option value="6">6 </option>
|
|
<option value="7" disabled = "true">7 </option>
|
|
</select>
|
|
</form>
|
|
<pre id="console"></pre>
|
|
</body>
|
|
</html>
|