<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
</head>
<body id="body">
<p id="description">This tests that if aria-labelledby is used, then aria-label attributes are not used.</p>

<button id="using-none">Alpha</button>
<button id="using-label" aria-label="Gamma">Beta</button>
<button id="using-labelledby" aria-labelledby="epsilon" aria-label="Zeta">Delta</button>
<button id="using-labeledby" aria-labeledby="theta" aria-label="Iota">Eta</button>
<span id="epsilon">Epsilon</span>
<span id="theta">Theta</span>

<ul id="results"></ul>
<div id="console"></div>

<script>
    function getAccessibilityObject(id) {
        var element = document.getElementById(id);
        element.focus();
        return accessibilityController.focusedElement;
    }

    function output(str) {
        var results = document.getElementById("results");
        var li = document.createElement("li");
        li.appendChild(document.createTextNode(str));
        results.appendChild(li);
    }

    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    if (window.accessibilityController) {
        var usingNone = getAccessibilityObject("using-none");
        output("usingNone.title: [" + usingNone.title + "]");
        output("usingNone.description:  [" + usingNone.description + "]");

        var usingLabel = getAccessibilityObject("using-label");
        output("usingLabel.title: [" + usingLabel.title + "]");
        output("usingLabel.description:  [" + usingLabel.description + "]");

        var usingLabelledby = getAccessibilityObject("using-labelledby");
        output("usingLabelledby.title: [" + usingLabelledby.title + "]");
        output("usingLabelledby.description:  [" + usingLabelledby.description + "]");

        var usingLabeledby = getAccessibilityObject("using-labeledby");
        output("usingLabeledby.title: [" + usingLabeledby.title + "]");
        output("usingLabeledby.description:  [" + usingLabeledby.description + "]");
    }

    successfullyParsed = true;
</script>

</body>
</html>
