Index: LayoutTests/accessibility/loading-iframe-sends-notification.html |
diff --git a/LayoutTests/accessibility/loading-iframe-sends-notification.html b/LayoutTests/accessibility/loading-iframe-sends-notification.html |
index e133e9472656569e5029997a3952c7c8bfea065f..5ce8e0268b89d7d3c8948bae5ab2c4c708cb3d4e 100644 |
--- a/LayoutTests/accessibility/loading-iframe-sends-notification.html |
+++ b/LayoutTests/accessibility/loading-iframe-sends-notification.html |
@@ -20,51 +20,45 @@ |
if (window.testRunner) |
testRunner.waitUntilDone(); |
+ else |
+ debug("This test requires window.accessibilityController and must be run in content_shell with --dump-render-tree.") |
window.jsTestIsAsync = true; |
function runTest() |
{ |
- window.gotIframeNotification = false; |
- |
if (window.accessibilityController) { |
// Initially, the iframe should not be loaded, so we shouldn't be able to find this button. |
- shouldBeFalse("accessibilityController.accessibleElementById('innerbutton') != null"); |
+ shouldBeUndefined("accessibilityController.accessibleElementById('innerbutton')"); |
window.accessibilityController.addNotificationListener(function (target, notification) { |
- // Ignore this notification if it's not on the iframe. |
- if (target.description.indexOf("InnerFrame") == -1) |
+ if (!target.parentElement() || !target.parentElement().parentElement()) |
return; |
- debug("Got notification on iframe."); |
- gotIframeNotification = true; |
+ // Ignore this notification if it's not within the subtree of the iframe. |
+ var frameTarget = target.parentElement().parentElement(); |
+ if (frameTarget.description.indexOf("InnerFrame") == -1) |
+ return; |
- // Check that the button within the iframe is now reachable from the root. |
- shouldBeTrue("accessibilityController.accessibleElementById('innerbutton') != null"); |
- }); |
- } |
+ // Even still we'll get LayoutComplete notifications sooner than we want. |
+ if (!accessibilityController.accessibleElementById('innerbutton')) |
+ return; |
- window.iframeElement = document.getElementById("iframe"); |
- iframeElement.addEventListener("load", function() { |
- window.setTimeout(function() { |
- shouldBeTrue("gotIframeNotification"); |
+ // Check that the button within the iframe is now reachable from the root. |
+ shouldBeDefined("accessibilityController.accessibleElementById('innerbutton')"); |
if (window.accessibilityController) |
accessibilityController.removeNotificationListener(); |
finishJSTest(); |
- }, 10); |
- }, false); |
+ }); |
+ } |
// Load content into the iframe. This will trigger the event |
// handler above, which will check that the accessibility tree |
// was updated with new content. |
- window.iframeElement.src = "data:text/html,<body><button id='innerbutton'>InnerButton</button></body>"; |
+ document.getElementById("iframe").src = "data:text/html,<body><button id='innerbutton'>InnerButton</button></body>"; |
} |
- |
- window.addEventListener('load', function() { |
- setTimeout(runTest, 10); |
- }, false); |
- |
+ window.addEventListener('load', runTest); |
</script> |
</body> |