blob: 2a3262bf6a0ea1b2cac3f29227693a5d40785aa7 [file] [log] [blame]
<html>
<head>
<script src="../resources/js-test.js"></script>
</head>
<body>
<p>Before</p>
<iframe id="iframe" title="InnerFrame"></iframe>
<p>After</p>
<p>End of test</p>
<p id="description"></p>
<div id="console"></div>
<script>
description("This tests that when an iframe finishes loading, it sends a notification.");
if (window.testRunner)
testRunner.waitUntilDone();
else
debug("This test requires window.accessibilityController and must be run in content_shell with --run-layout-test.")
window.jsTestIsAsync = true;
function runTest()
{
if (window.accessibilityController) {
// Initially, the iframe should not be loaded, so we shouldn't be able to find this button.
shouldBeUndefined("accessibilityController.accessibleElementById('innerbutton')");
window.accessibilityController.addNotificationListener(function (target, notification) {
if (!target.parentElement() || !target.parentElement().parentElement())
return;
// Ignore this notification if it's not within the subtree of the iframe.
var frameTarget = target.parentElement().parentElement();
if (frameTarget.name.indexOf("InnerFrame") == -1)
return;
// Even still we'll get LayoutComplete notifications sooner than we want.
if (!accessibilityController.accessibleElementById('innerbutton'))
return;
// Check that the button within the iframe is now reachable from the root.
shouldBeDefined("accessibilityController.accessibleElementById('innerbutton')");
if (window.accessibilityController)
accessibilityController.removeNotificationListener();
finishJSTest();
});
}
// Load content into the iframe. This will trigger the event
// handler above, which will check that the accessibility tree
// was updated with new content.
document.getElementById("iframe").src = "data:text/html,<body><button id='innerbutton'>InnerButton</button></body>";
}
window.addEventListener('load', runTest);
</script>
</body>
</html>