<
html>
<
head>
<
title>Accessible document focus event testing</
title>
<
link rel=
"stylesheet" type=
"text/css"
href=
"chrome://mochikit/content/tests/SimpleTest/test.css" />
<
script src=
"chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></
script>
<
script src=
"chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></
script>
<
script type=
"application/javascript"
src=
"../common.js"></
script>
<
script type=
"application/javascript"
src=
"../events.js"></
script>
<
script type=
"application/javascript"
src=
"../role.js"></
script>
<
script type=
"application/javascript"
src=
"../states.js"></
script>
<
script type=
"application/javascript">
var gQueue = null;
//
var gA11yEventDumpID =
"eventdump";
// gA11yEventDumpToConsole = true;
function doTests() {
// setup
var frameDoc = document.getElementById(
"iframe").contentDocument;
frameDoc.designMode =
"on";
var frameDocAcc = getAccessible(frameDoc, [nsIAccessibleDocument]);
var buttonAcc = getAccessible(
"b1");
var frame2Doc = document.getElementById(
"iframe2").contentDocument;
var frame2Input = frame2Doc.getElementById(
"input");
var frame2DocAcc = getAccessible(frame2Doc);
var frame2InputAcc = getAccessible(frame2Input);
// Test focus events.
gQueue = new eventQueue();
// try to give focus to contentEditable
frame twice to cover bug 512059
gQueue.push(new synthFocus(buttonAcc));
gQueue.push(new synthTab(frameDocAcc, new focusChecker(frameDocAcc)));
gQueue.push(new synthFocus(buttonAcc));
gQueue.push(new synthTab(frameDocAcc, new focusChecker(frameDocAcc)));
// focus on not editable document
gQueue.push(new synthFocus(frame2InputAcc));
var canTabMoveFocusToRootElement =
!SpecialPowers.getBoolPref(
"dom.disable_tab_focus_to_root_element");
if (canTabMoveFocusToRootElement) {
// Moves the focus to the root element
gQueue.push(new synthShiftTab(frame2DocAcc, new focusChecker(frame2DocAcc)));
} else {
// Skips the root element, so the focus got moved to buttonAcc2.
var buttonAcc2 = getAccessible(
"b2");
gQueue.push(new synthShiftTab(buttonAcc2, new focusChecker(buttonAcc2)));
}
gQueue.invoke(); // Will call SimpleTest.finish();
}
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doTests);
</
script>
</
head>
<
body>
<a target=
"_blank"
href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=512058"
title=
"Can't set focus to designMode document via accessibility APIs">
Mozilla Bug 512058
</a>
<a target=
"_blank"
href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=512059"
title=
"Accessibility focus event never fired for designMode document after the first focus">
Mozilla Bug 512059
</a>
<a target=
"_blank"
href=
"https://bugzilla.mozilla.org/show_bug.cgi?id=618046"
title=
"No focus change event when Shift+Tab at top of screen">
Mozilla Bug 618046
</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>