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

<h1 hidden id="heading1_1">heading1.1</h1>
<h1 aria-hidden="true" id="heading1_2">heading1.2</h1>
<h1 hidden aria-hidden="true" id="heading1_3">heading1.3</h1>

<h1 hidden aria-hidden="false" id="heading2">heading2</h1>
<h1 style="display:none;" aria-hidden="false" id="heading3">heading3</h1>
<h1 style="visibility:hidden;" aria-hidden="false" id="heading4">heading4</h1>

<div hidden aria-hidden="false" id="hiddenDiv">HiddenText1</div>
<input type="text" aria-labelledby="hiddenDiv" id="textFieldWithHiddenLabeller">

<div aria-hidden="false">
<video id="video">
Hidden content
</video>
</div>

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

<script>

    description("This tests ensures that aria-hidden=false will allow a node to be in the AX hierarchy even if it's not rendered or visible");

    if (window.accessibilityController) {

        // First groups of headings are actually hidde.n
        var heading1_1 = accessibilityController.accessibleElementById("heading1_1");
        shouldBeTrue("!heading1_1 || !heading1_1.isValid");

        var heading1_2 = accessibilityController.accessibleElementById("heading1_2");
        shouldBeTrue("!heading1_2 || !heading1_3.isValid");

        var heading1_3 = accessibilityController.accessibleElementById("heading1_3");
        shouldBeTrue("!heading1_3 || !heading1_3.isValid");

        // These headings should be in AX tree despite being hidden.
        var heading2 = accessibilityController.accessibleElementById("heading2");
        shouldBe("heading2.role", "'AXRole: AXHeading'");

        // Check that the order of these elements is correct based on DOM order.
        var parent = heading2.parentElement();
        shouldBeTrue("parent.childAtIndex(0).isEqual(heading2)");

        var heading3 = accessibilityController.accessibleElementById("heading3");
        shouldBe("heading3.role", "'AXRole: AXHeading'");
        shouldBeTrue("parent.childAtIndex(1).isEqual(heading3)");

        var heading4 = accessibilityController.accessibleElementById("heading4");
        shouldBe("heading4.role", "'AXRole: AXHeading'");
        shouldBeTrue("parent.childAtIndex(2).isEqual(heading4)");

        // The aria-labelledby attribute should work even though hidden.
        var textField = accessibilityController.accessibleElementById("textFieldWithHiddenLabeller");
        debug("Textfield Title: " + textField.title);
        
        // aria-hidden="false" need to be on each parent, including rendered parents.
        var video = accessibilityController.accessibleElementById("video");
        shouldBe("video.childrenCount", "0");
    }

</script>

<script src="../resources/js-test-post.js"></script>
</body>
</html>
