<html>
<head>
<script src="../resources/js-test.js"></script>
<script>
    jsTestIsAsync = true;

    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);

        finishJSTest();
    }

    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>
