<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/js-test.js"></script>
</head>
<body>

<div id="content" role="group" />

<script>
    if (window.accessibilityController) {
        description("This tests that trying to retrieve AX objects deeper than the 512 level allowed in the DOM tree fails gracefully.");

        // Add a 500 levels deep hierarchy and enssure that deepest AX object can be retrieved successfully.
        let parent = document.getElementById("content");
        let child = null;
        for (let i = 0; i < 500; ++i) {
            child = document.createElement("div");
            child.setAttribute("role", "group");
            parent.appendChild(child);
            parent = child;
        }
        child.id = "deepest-child";
        child.innerText = "deepest child";
        var axChild = accessibilityController.accessibleElementById("deepest-child");
        if (accessibilityController.platformName == "mac")
            shouldBe("axChild.childAtIndex(0).stringValue", "'AXValue: deepest child'");
        else if (accessibilityController.platformName == "atspi")
            shouldBe("axChild.stringValue", "'AXValue: deepest child'");

        // Add an additional 10 levels to the tree and check that trying to retrieve the deepest AX object fails gracefully.
        for (let i = 0; i < 10; ++i) {
            child = document.createElement("div");
            child.setAttribute("role", "group");
            parent.insertBefore(child, parent.firstChild);
            parent = child;
        }
        child.id = "deepest-deepest-child";
        child.innerText = "deepest deepest child";
        axChild = accessibilityController.accessibleElementById("deepest-deepest-child");
        shouldBe("axChild", "null");
    }
</script>
</body>
</html>
