diff options
Diffstat (limited to 'accessible/tests/mochitest/states/test_stale.html')
-rw-r--r-- | accessible/tests/mochitest/states/test_stale.html | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/accessible/tests/mochitest/states/test_stale.html b/accessible/tests/mochitest/states/test_stale.html new file mode 100644 index 0000000000..3218a2125a --- /dev/null +++ b/accessible/tests/mochitest/states/test_stale.html @@ -0,0 +1,108 @@ +<!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> |