<html>
<script>
    if (window.layoutTestController)
        layoutTestController.dumpAsText();
</script>
<body id="body">
    
    <!-- the AXGroup that comes from the <td> should have the <th> as its title ui element 
         In the 2nd case, it should not have a title ui element -->

    <table width="90" border="0">
    <tr>
    <th>Header for button</th>
    <td><input type="button" value="button"></td>
    </tr>
    </table>

    <table width="90" border="0">
    <tr>
    <td>Header for button</td>
    <td><input type="button" value="button"></td>
    </tr>
    </table>
    
    <div id="result"></div>
    
    <script>
        if (window.accessibilityController) {
            var result = document.getElementById("result");

            var body = document.getElementById("body");
            body.focus();
            var group = accessibilityController.focusedElement.childAtIndex(1);
            var group2 = accessibilityController.focusedElement.childAtIndex(3);

            if (group.titleUIElement().allAttributes() != "" && group2.titleUIElement().allAttributes() == "")
                result.innerText += "Pass";
            else
                result.innerText += "Fail";
        }
    </script>
</body>
</html>
