blob: dc38ba20f0ac99aa3d9fe48dbe704ddd31ce24bd [file] [log] [blame]
<html>
<script src="../resources/js-test.js"></script>
<script src="../resources/accessibility-helper.js"></script>
<body>
<p id="before">Before</p>
<iframe id="iframe" src="data:text/html,<body><button>Click me</button></body>"></iframe>
<p id="after">After</p>
<p>End of test</p>
<p id="description"></p>
<div id="console"></div>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
function runTest()
{
description("This tests that deleting an iframe doesn't cause the accessibility cache to be destroyed and recreated.");
if (window.accessibilityController) {
window.before = accessibilityController.accessibleElementById('before');
window.iframe = accessibilityController.accessibleElementById('iframe');
window.after = accessibilityController.accessibleElementById('after');
window.root = before.parentElement();
window.frameBody = iframe.childAtIndex(0);
window.frameBodyRole = frameBody.role;
window.frameGroup = frameBody.childAtIndex(0);
window.frameGroupRole = frameGroup.role;
window.frameButton = frameGroup.childAtIndex(0);
window.frameButtonRole = frameButton.role;
document.getElementById("console").innerText += "\nBefore:\n";
buildAccessibilityTree(root, 0, 1);
// Remove the iframe.
document.body.removeChild(document.getElementById("iframe"));
// Force layout now so that the childAtIndex calls below
// reflect the new render tree.
document.body.offsetTop;
window.newBefore = accessibilityController.accessibleElementById('before');
window.newAfter = accessibilityController.accessibleElementById('after');
window.newRoot = newBefore.parentElement();
document.getElementById("console").innerText += "\nAfter:\n";
buildAccessibilityTree(newRoot, 0, 1);
document.getElementById("console").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("before.isEqual(newBefore)");
shouldBeTrue("after.isEqual(newAfter)");
}
debug('<br /><span class="pass">TEST COMPLETE</span>');
if (window.testRunner)
testRunner.notifyDone();
}
window.addEventListener('load', function() {
setTimeout(runTest, 10);
}, false);
</script>
</body>
</html>