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

<label id="label1" for="input" aria-label="aria label">Some text</label>
<input id="input" type="text" size=20>

<label id="label2" for="input2">Some other text</label>
<input id="input2" type="text" size=20>

<label id="label3" for="input3" hidden aria-label="hidden aria label">hidden text</label>
<input id="input3" type="text">

<p id="p1">aria</p>
<p id="p2">labelledby</p>
<label for="input4" aria-labelledby="p1 p2">Some text</label>
<input id="input4" type="text" size=20>

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

<script>

    description("This tests that the aria-label attribute works on <label> element.");

    if (window.accessibilityController) {
    
        // aria-label on the <label> element return a title for the input, instead of a title ui element.
        // For ATSPI, it should return both, with the title ui element being the label element.
        var input1 = accessibilityController.accessibleElementById("input");
        var titleUIElement1 = input1.titleUIElement();
        if (accessibilityController.platformName != "atspi")
            shouldBeTrue("!titleUIElement1");
        else
            shouldBeTrue("titleUIElement1.isEqual(accessibilityController.accessibleElementById('label1'))");

        shouldBe("input1.title", "'AXTitle: aria label'");
        
        // Normal case.
        var input2 = accessibilityController.accessibleElementById("input2");
        var titleUIElement2 = input2.titleUIElement();
        shouldBeTrue("titleUIElement2.isEqual(accessibilityController.accessibleElementById('label2'))");
        
        // Make sure when the input element has no rendered label, it won't cause crash.
        var input3 = accessibilityController.accessibleElementById("input3");
        shouldBe("input3.title", "'AXTitle: hidden aria label'");
        
        // aria-labelledby also works.
        var input4 = accessibilityController.accessibleElementById("input4");
        shouldBe("input4.title", "'AXTitle: aria labelledby'");
    }

</script>

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