<!DOCTYPE html> <html> <head> <title>Stale state 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 type="application/javascript" src="../common.js"></script> <script type="application/javascript" src="../role.js"></script> <script type="application/javascript" src="../states.js"></script> <script type="application/javascript" src="../events.js"></script> <script type="application/javascript"> function addChild(aContainerID) { this.containerNode = getNode(aContainerID); this.childNode = null; this.eventSeq = [ new invokerChecker(EVENT_REORDER, this.containerNode), ]; this.invoke = function addChild_invoke() { this.childNode = document.createElement("div"); // Note after bug 646216, a sole div without text won't be accessible // and would not result in an embedded character. // Therefore, add some text. this.childNode.textContent = "hello"; this.containerNode.appendChild(this.childNode); }; this.finalCheck = function addChild_finalCheck() { // no stale state should be set testStates(this.childNode, 0, 0, 0, EXT_STATE_STALE); }; this.getID = function addChild_getID() { return "add child for " + prettyName(aContainerID); }; } function removeChildChecker(aInvoker) { this.type = EVENT_HIDE; this.__defineGetter__("target", function() { return aInvoker.child; }); this.check = function removeChildChecker_check() { // stale state should be set testStates(aInvoker.child, 0, EXT_STATE_STALE); }; } function removeChild(aContainerID) { this.containerNode = getNode(aContainerID); this.child = null; this.eventSeq = [ new removeChildChecker(this), ]; this.invoke = function removeChild_invoke() { var childNode = this.containerNode.firstChild; this.child = getAccessible(childNode); this.containerNode.removeChild(childNode); }; this.getID = function removeChild_getID() { return "remove child from " + prettyName(aContainerID); }; } // gA11yEventDumpToConsole = true; //debugging var gQueue = null; function doTest() { gQueue = new eventQueue(); gQueue.push(new addChild("container")); gQueue.push(new removeChild("container")); gQueue.invoke(); // will call SimpleTest.finish() } SimpleTest.waitForExplicitFinish(); addA11yLoadEvent(doTest); </script> </head> <body role=""> <a target="_blank" title="Expose stale state on accessibles unattached from tree" href="https://bugzilla.mozilla.org/show_bug.cgi?id=676267">Mozilla Bug 676267</a> <p id="display"></p> <div id="content" style="display: none"></div> <pre id="test"> </pre> <div id="container"></div> </body> </html>