| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| <script src="../resources/accessibility-helper.js"></script> |
| <script> |
| jsTestIsAsync = true; |
| |
| function runTest() |
| { |
| description("This tests that deleting an iframe doesn't cause the accessibility cache to be destroyed and recreated."); |
| |
| if (window.accessibilityController) { |
| window.root = accessibilityController.rootElement; |
| window.stopElement = accessibilityController.accessibleElementById("stopElement"); |
| |
| window.body = root.childAtIndex(0); |
| window.before = body.childAtIndex(0); |
| window.iframe = body.childAtIndex(1).childAtIndex(0); |
| window.after = body.childAtIndex(2); |
| |
| window.frameBody = window.iframe.childAtIndex(0); |
| window.frameBodyRole = window.frameBody.role; |
| window.frameGroup = window.frameBody.childAtIndex(0); |
| window.frameGroupRole = window.frameGroup.role; |
| window.frameButton = window.frameGroup.childAtIndex(0); |
| window.frameButtonRole = window.frameButton.role; |
| |
| document.getElementById("tree").innerText += "\nBefore:\n"; |
| dumpAccessibilityTree(root, stopElement, 0, true); |
| |
| // Remove the iframe. |
| document.body.removeChild(document.getElementById("iframe")); |
| |
| window.newRoot = accessibilityController.rootElement; |
| window.newBody = newRoot.childAtIndex(0); |
| window.newBefore = newBody.childAtIndex(0); |
| window.newAfter = newBody.childAtIndex(1); |
| |
| document.getElementById("tree").innerText += "\nAfter:\n"; |
| dumpAccessibilityTree(newRoot, stopElement, 0, true); |
| document.getElementById("tree").innerText += "\n"; |
| |
| // Make sure that the accessibility objects from the iframe's nodes |
| // are now invalid by checking that their role is changed - this |
| // is because they've been deleted. |
| shouldBeFalse("frameBodyRole == frameBody.role"); |
| shouldBeFalse("frameGroupRole == frameGroup.role"); |
| shouldBeFalse("frameButtonRole == frameButton.role"); |
| |
| // Make sure that the other nodes are unchanged. |
| shouldBeTrue("root.isEqual(newRoot)"); |
| shouldBeTrue("body.isEqual(newBody)"); |
| shouldBeTrue("before.isEqual(newBefore)"); |
| shouldBeTrue("after.isEqual(newAfter)"); |
| } |
| |
| finishJSTest(); |
| } |
| |
| window.addEventListener('load', function() { |
| setTimeout(runTest, 10); |
| }, false); |
| |
| </script> |
| </head> |
| <body> |
| |
| <p>Before</p> |
| |
| <iframe id="iframe" src="data:text/html,<body><button>Click me</button></body>"></iframe> |
| |
| <p>After</p> |
| |
| <p id="stopElement">End of test</p> |
| |
| <p id="description"></p> |
| <pre id="tree"></pre> |
| <div id="console"></div> |
| |
| </body> |
| </html> |