summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/chrome/test_focus_anons.xul
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/tests/chrome/test_focus_anons.xul')
-rw-r--r--toolkit/content/tests/chrome/test_focus_anons.xul119
1 files changed, 119 insertions, 0 deletions
diff --git a/toolkit/content/tests/chrome/test_focus_anons.xul b/toolkit/content/tests/chrome/test_focus_anons.xul
new file mode 100644
index 000000000..848590887
--- /dev/null
+++ b/toolkit/content/tests/chrome/test_focus_anons.xul
@@ -0,0 +1,119 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
+
+<window title="Tests for focus on elements with anonymous focusable children"
+ onload="SimpleTest.waitForFocus(runTests);"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
+
+<label accesskey="a" control="menulist"/>
+<label accesskey="b" control="textbox"/>
+<label accesskey="c" control="scale"/>
+
+<menulist id="menulist" editable="true">
+ <menupopup>
+ <menuitem label="One"/>
+ </menupopup>
+</menulist>
+<textbox id="textbox"/>
+<scale id="scale"/>
+
+<script class="testbody" type="application/javascript">
+<![CDATA[
+
+SimpleTest.waitForExplicitFinish();
+
+var gBlurs = 0, gFocuses = 0;
+var gExpectedBlur = "";
+var gExpectedFocus = "";
+
+function blurOccurred(event) {
+ gBlurs++;
+ is(event.originalTarget, gExpectedBlur, "blur " + gBlurs + "," + event.originalTarget.localName);
+}
+
+function focusOccurred(event) {
+ gFocuses++;
+ is(event.originalTarget, gExpectedFocus, "focus " + gFocuses + "," + event.originalTarget.localName);
+}
+
+function runTests()
+{
+ addEventListener("focus", focusOccurred, true);
+ addEventListener("blur", blurOccurred, true);
+
+ gExpectedBlur = null;
+ gExpectedFocus = $("menulist").inputField;
+ $("menulist").focus();
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = $("textbox").inputField;
+ $("textbox").focus();
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = document.getAnonymousNodes($("scale"))[0];
+ $("scale").focus();
+
+ var accessKeyDetails = (navigator.platform.indexOf("Mac") >= 0) ?
+ { altKey: true, ctrlKey : true } :
+ { altKey : true, shiftKey: true };
+
+ gExpectedBlur = document.getAnonymousNodes($("scale"))[0];
+ gExpectedFocus = $("menulist").inputField;
+ synthesizeKey("a", accessKeyDetails);
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = $("textbox").inputField;
+ synthesizeKey("b", accessKeyDetails);
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = document.getAnonymousNodes($("scale"))[0];
+ synthesizeKey("c", accessKeyDetails);
+
+ if (navigator.platform.indexOf("Mac") == -1) {
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = $("textbox").inputField;
+ synthesizeKey("VK_TAB", { shiftKey: true });
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = $("menulist").inputField;
+ synthesizeKey("VK_TAB", { shiftKey: true });
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = $("textbox").inputField;
+ synthesizeKey("VK_TAB", { });
+
+ gExpectedBlur = gExpectedFocus;
+ gExpectedFocus = document.getAnonymousNodes($("scale"))[0];
+ synthesizeKey("VK_TAB", { });
+
+ is(gBlurs, 9, "correct number of blurs");
+ is(gFocuses, 10, "correct number of focuses");
+ }
+ else {
+ is(gBlurs, 5, "correct number of blurs");
+ is(gFocuses, 6, "correct number of focuses");
+ }
+
+ removeEventListener("focus", focusOccurred, true);
+ removeEventListener("blur", blurOccurred, true);
+
+ SimpleTest.finish();
+}
+
+]]>
+</script>
+
+<body xmlns="http://www.w3.org/1999/xhtml">
+<p id="display">
+</p>
+<div id="content" style="display: none">
+</div>
+<pre id="test">
+</pre>
+</body>
+
+</window>