blob: d3dcb714dcfb6a9b574a0acf909ede1470be93ef [file] [log] [blame]
<html>
<head>
<script src="../resources/js-test-pre.js"></script>
<script>
if (window.testRunner)
testRunner.waitUntilDone();
function buildAccessibilityTree(accessibilityObject, indent) {
var str = "";
for (var i = 0; i < indent; i++)
str += " ";
str += accessibilityObject.role;
str += " " + accessibilityObject.stringValue;
if (accessibilityObject.role == '')
str += accessibilityObject.allAttributes();
str += "\n";
document.getElementById("console").innerText += str;
if (accessibilityObject.stringValue.indexOf('End of test') >= 0)
return false;
var count = accessibilityObject.childrenCount;
for (var i = 0; i < count; ++i) {
if (!buildAccessibilityTree(accessibilityObject.childAtIndex(i), indent + 1))
return false;
}
return 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.body = root.childAtIndex(0);
window.before = body.childAtIndex(0).childAtIndex(0);
window.iframe = body.childAtIndex(1).childAtIndex(0);
window.after = body.childAtIndex(2).childAtIndex(0);
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("console").innerText += "\nBefore:\n";
buildAccessibilityTree(root, 0);
// Remove the iframe.
document.body.removeChild(document.getElementById("iframe"));
window.newRoot = accessibilityController.rootElement;
window.newBody = newRoot.childAtIndex(0);
window.newBefore = newBody.childAtIndex(0).childAtIndex(0);
window.newAfter = newBody.childAtIndex(1).childAtIndex(0);
document.getElementById("console").innerText += "\nAfter:\n";
buildAccessibilityTree(newRoot, 0);
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("root.isEqual(newRoot)");
shouldBeTrue("body.isEqual(newBody)");
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>
</head>
<body>
<p>Before</p>
<iframe id="iframe" src="data:text/html,<body><button>Click me</button></body>"></iframe>
<p>After</p>
<p>End of test</p>
<p id="description"></p>
<div id="console"></div>
</body>
</html>