Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
<html>
<head>
<title>Accessible document focus event testing</title>
<link rel="stylesheet" type="text/css"
<script type="application/javascript"
src="../common.js"></script>
<script type="application/javascript"
src="../promisified-events.js"></script>
<script type="application/javascript"
src="../role.js"></script>
<script type="application/javascript"
src="../states.js"></script>
<script type="application/javascript">
// var gA11yEventDumpID = "eventdump";
// gA11yEventDumpToConsole = true;
async function doTests() {
// setup
const frameDoc = document.getElementById("iframe").contentDocument;
frameDoc.designMode = "on";
const frameDocAcc = getAccessible(frameDoc, [nsIAccessibleDocument]);
const buttonAcc = getAccessible("b1");
const frame2Doc = document.getElementById("iframe2").contentDocument;
const frame2Input = frame2Doc.getElementById("input");
const frame2InputAcc = getAccessible(frame2Input);
let focused = waitForEvent(EVENT_FOCUS, buttonAcc);
buttonAcc.DOMNode.focus();
await focused;
testStates(buttonAcc, STATE_FOCUSED);
focused = waitForEvent(EVENT_FOCUS, frameDocAcc);
synthesizeKey("KEY_Tab", { shiftKey: false });
await focused;
testStates(frameDocAcc, STATE_FOCUSED);
focused = waitForEvent(EVENT_FOCUS, buttonAcc);
buttonAcc.DOMNode.focus();
await focused;
testStates(buttonAcc, STATE_FOCUSED);
focused = waitForEvent(EVENT_FOCUS, frameDocAcc);
synthesizeKey("KEY_Tab", { shiftKey: false });
await focused;
testStates(frameDocAcc, STATE_FOCUSED);
// focus on not editable document
focused = waitForEvent(EVENT_FOCUS, frame2InputAcc);
frame2InputAcc.DOMNode.focus();
await focused;
testStates(frame2InputAcc, STATE_FOCUSED);
// Skips the root element, so the focus got moved to buttonAcc2.
const buttonAcc2 = getAccessible("b2");
focused = waitForEvent(EVENT_FOCUS, buttonAcc2);
synthesizeKey("KEY_Tab", { shiftKey: true });
await focused;
testStates(buttonAcc2, STATE_FOCUSED);
SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doTests);
</script>
</head>
<body>
<a target="_blank"
title="Can't set focus to designMode document via accessibility APIs">
</a>
<a target="_blank"
title="Accessibility focus event never fired for designMode document after the first focus">
</a>
<a target="_blank"
title="No focus change event when Shift+Tab at top of screen">
</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
</pre>
<div id="eventdump"></div>
<div id="testContainer">
<button id="b1">a button</button>
<iframe id="iframe" src="about:blank"></iframe>
<button id="b2">a button</button>
<iframe id="iframe2" src="data:text/html,<html><input id='input'></html>"></iframe>
</div>
</body>
</html>