blob: 2ba567239a622a03501e832bb5b2fe9c90cb7ef8 [file] [log] [blame]
<html>
<!--
This test ensures the correctness of Spatial Navigation (SNav) algorithm over single select list element.
* Pre-conditions:
1) DRT support for SNav enable/disable.
* Navigation steps:
1) Loads this page, focus goes to "start" automatically.
2) Focus moves away from select in 4 different directions to neighbor nodes and back.
-->
<head>
<script src="../../resources/js-test.js"></script>
<script src="resources/spatial-navigation-utils.js"></script>
<script type="application/javascript">
var resultMap = [
["Down", "start"],
["Down", "start"],
["Down", "start"],
["Down", "8"],
["Up", "start"],
["Up", "start"],
["Up", "start"],
["Up", "2"],
["Down", "start"],
["Right", "6"],
["Left", "start"],
["Left", "4"],
["Right", "start"],
["DONE", "DONE"]
];
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.overridePreference("WebKitTabToLinksPreferenceKey", 1);
testRunner.overridePreference("WebKitSpatialNavigationEnabled", 1);
testRunner.waitUntilDone();
}
function runTest()
{
// starting the test itself: get to a known place.
document.getElementById("start").focus();
initTest(resultMap, additionalTest);
}
function additionalTest()
{
document.getElementById("start").focus(); //move to 1st item
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
eventSender.keyDown("ArrowDown"); //move to 2nd item
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
eventSender.keyDown(" "); //nothing should change
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
eventSender.keyDown("ArrowDown"); //move to 4th item (3rd item is disabled)
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "true");
eventSender.keyDown(" "); //nothing should change
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "true");
eventSender.keyDown("ArrowUp"); //move back to 2nd item
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
eventSender.keyDown(" "); //noting should change
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
eventSender.keyDown("ArrowUp"); //move back to 1st item
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
eventSender.keyDown("ArrowDown", ["shiftKey"]); //shift-down to 2nd item
shouldBe("gFocusedDocument.getElementById(\"start\").options[0].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[1].selected", "true");
shouldBe("gFocusedDocument.getElementById(\"start\").options[2].selected", "false");
shouldBe("gFocusedDocument.getElementById(\"start\").options[3].selected", "false");
testCompleted();
}
function testCompleted()
{
if (window.testRunner)
testRunner.notifyDone();
}
window.onload = runTest;
</script>
</head>
<body id="some-content" xmlns="http://www.w3.org/1999/xhtml">
<table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="1">
<tbody>
<tr>
<td style="vertical-align: top; text-align: center;"></td>
<td style="vertical-align: top; text-align: center;"><a id="2" href="a">2</a></td>
<td style="vertical-align: top; text-align: center;"></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: center;"><a id="4" href="a">4</a></td>
<td style="vertical-align: top; text-align: center;"><select id="start" size=4><option>1</option><option>2</option><option disabled>3</option><option>4</option></select></td>
<td style="vertical-align: top; text-align: center;"><a id="6" href="a">6</a></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: center;"></td>
<td style="vertical-align: top; text-align: center;"><a id="8" href="a">8</a></td>
<td style="vertical-align: top; text-align: center;"></td>
</tr>
</tbody>
</table>
<div id="console"></div>
</body>
</html>