<html>
<head>
<link rel="stylesheet" href="../fast/js/resources/js-test-style.css">
<script src="../fast/js/resources/js-test-pre.js"></script>
<script>
    if (window.testRunner)
        testRunner.waitUntilDone();

    function walkAccessibilityTree(accessibilityObject) {
        var count = accessibilityObject.childrenCount;
        for (var i = 0; i < count; ++i)
            walkAccessibilityTree(accessibilityObject.childAtIndex(i));
    }

    function runTest() {
        description("This tests that having an anonymous render block in a continuation doesn't cause a crash when walking the accessibility tree.");

        window.root = accessibilityController.rootElement;
        walkAccessibilityTree(root);

        debug('<br /><span class="pass">TEST COMPLETE</span>');
        if (window.testRunner)
            testRunner.notifyDone();
    }

    if (window.testRunner && window.accessibilityController) {
        window.addEventListener('load', function() {
            setTimeout(runTest, 10);
        }, false);
    }
</script>
</head>
<body>

<li><span>x<ul><li>y</ul></span>z</li>

End of test.

<p id="description"></p>
<div id="console"></div>

</body>
</html>
