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

<div id="hidden" style="display:none">hidden label</div>

<span id="heading1" role="heading" aria-label="test label">visible text</span>
<span id="heading2" role="heading">visible text</span>
<span id="heading3" role="heading" aria-labelledby="hidden">visible text</span>

<h2 id="heading4"><span>text1</span><a id="link" href="">link</a></h2>

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

<script>

    description("This tests that if heading has aria-label, it will override the visible text as necessary.");

    if (window.accessibilityController) {

        var heading1Text = accessibilityController.accessibleElementById("heading1").childAtIndex(0);
        var heading2Text = accessibilityController.accessibleElementById("heading2").childAtIndex(0);
        var heading3Text = accessibilityController.accessibleElementById("heading3").childAtIndex(0);
        
        // Get the trait so that the label will be set.
        shouldBeTrue("heading1Text.traits == heading2Text.traits");
        shouldBeTrue("heading3Text.traits == heading2Text.traits");
        
        shouldBe("heading1Text.description", "'AXLabel: test label'");
        shouldBe("heading2Text.description", "'AXLabel: visible text'");
        shouldBe("heading3Text.description", "'AXLabel: hidden label'");
        
        // When a heading has multiple children, ensure the children's
        // labels are correct if aria-label is NOT set.
        var heading4 = accessibilityController.accessibleElementById("heading4");
        var heading4Text1 = heading4.childAtIndex(0);
        var linkText = accessibilityController.accessibleElementById("link").childAtIndex(0);
        
        shouldBe("heading4Text1.description", "'AXLabel: text1'");
        shouldBe("linkText.description", "'AXLabel: link'");
    }

    successfullyParsed = true;
</script>

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

