<html>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();
</script>
<body id="body">
    
    <table cellpadding="0" cellspacing="0" border="1" width="100%">
        <thead>
            <tr>
                <th class="jive-first-last">
                    <table cellpadding="0" cellspacing="0" border="1" width="100%">
                        <thead>
                            <tr>
                                <th width="1%"> Test </th>
                            </tr>
                        </thead>
                    </table>
                </th>
            </tr>
        </thead>
    </table>
    
    <div id="result"></div>
    
    <script>
        if (window.accessibilityController) {
            var body = document.getElementById("body");
            body.focus();
            var table = accessibilityController.focusedElement.childAtIndex(0);
            var row = table.childAtIndex(0);
            var cell = row.childAtIndex(0);
            var table2 = cell.childAtIndex(0);

            result.innerText += "Test passes if there is no crash\n\n";            
        }
    </script>
</body>
</html>
