Bug 470455 - test_database_sync_embed_visits.js leaks, r=sdwilsh
[wine-gecko.git] / accessible / tests / mochitest / test_nsIAccessible_focus.html
blob2755c5cd599ff34f977427c303a309ff88dd1341
1 <html>
3 <head>
4 <title>nsIAccessible::takeFocus testing</title>
6 <link rel="stylesheet" type="text/css"
7 href="chrome://mochikit/content/tests/SimpleTest/test.css" />
9 <script type="application/javascript"
10 src="chrome://mochikit/content/MochiKit/packed.js"></script>
11 <script type="application/javascript"
12 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
13 <script type="application/javascript"
14 src="chrome://mochikit/content/a11y/accessible/common.js"></script>
16 <script type="application/javascript">
17 ////////////////////////////////////////////////////////////////////////////
18 // Test
20 function doTest()
22 // focus ARIA link
23 var ID = "aria-link";
24 var linkAcc = getAccessible(ID);
26 gFocusManager.listenElement(linkAcc, ID, doTest2);
27 linkAcc.takeFocus();
30 function doTest2()
32 // focus first child of ARIA link
33 var ID = "aria-link2";
34 var linkAcc = getAccessible(ID);
36 gFocusManager.listenElement(linkAcc, ID, doTest3);
37 linkAcc.firstChild.takeFocus();
40 function doTest3()
42 // focus html:a
43 var ID = "link";
44 var linkAcc = getAccessible(ID);
46 gFocusManager.listenElement(linkAcc, ID, finishTest);
47 linkAcc.takeFocus();
50 function finishTest()
52 SimpleTest.finish();
55 SimpleTest.waitForExplicitFinish();
56 addLoadEvent(doTest);
58 ////////////////////////////////////////////////////////////////////////////
59 // Helpers
61 var gFocusManager =
63 // Public
64 listenElement: function listenElement(aAccOrID, aPrettyName, aCallback)
66 registerA11yEventListener(nsIAccessibleEvent.EVENT_FOCUS, this);
68 var elmObj = {};
69 this.mAcc = getAccessible(aAccOrID, null, elmObj);
70 this.mElm = elmObj.value;
71 this.mName = aPrettyName ? aPrettyName : aAccOrID;
72 this.mCallback = aCallback;
74 window.setTimeout(
75 function(aFocusMgr)
77 aFocusMgr.checkWasFocusHandled();
78 }, 0, this);
81 // Private
82 handleEvent: function handleEvent(aAccEvent)
84 var node = aAccEvent.DOMNode;
85 if (node == this.mElm)
86 this.mIsFocusHandled = true;
89 checkWasFocusHandled: function checkWasFocusHandled()
91 window.setTimeout(
92 function(aFocusMgr)
94 unregisterA11yEventListener(nsIAccessibleEvent.EVENT_FOCUS, this);
96 ok(aFocusMgr.mIsFocusHandled,
97 "Focus wasn't recieved for element with ID " + aFocusMgr.mName + ".");
99 var states = {}, extraStates = {};
100 aFocusMgr.mAcc.getState(states, extraStates);
101 // XXX see bug 455840. Only fails on aria-link, the other two are OK.
102 // When fixing this bug, remove the if statement and else block and "todo" statement.
103 if (states.value & nsIAccessibleStates.STATE_FOCUSED)
104 ok(states.value & nsIAccessibleStates.STATE_FOCUSED,
105 "No focused state for element with ID " + aFocusMgr.mName + ".");
106 else
107 todo(states.value & nsIAccessibleStates.STATE_FOCUSED,
108 "No focused state for element with ID " + aFocusMgr.mName + ".");
110 aFocusMgr.mCallback();
111 }, 0, this);
114 mAcc: null,
115 mElm: null,
116 mName: "",
117 mIsFocusHandled: false
119 </script>
120 </head>
122 <body>
124 <a target="_blank"
125 href="https://bugzilla.mozilla.org/show_bug.cgi?id=452710"
126 title="nsIAccessible::takeFocus testing">
127 Mozilla Bug 452710
128 </a>
129 <p id="display"></p>
130 <div id="content" style="display: none"></div>
131 <pre id="test">
132 </pre>
134 <span id="aria-link" role="link" tabindex="0">link</span>
135 <span id="aria-link2" role="link" tabindex="0">link</span>
137 <a id="link" href="">link</span>
139 </body>
140 </html>