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

<div id="content">

<!-- First row is hidden -->
<table id="table1" border=1>
  <tr><th hidden>header 1</th><th hidden>header 2</th></tr>
  <tr><td id="table1cell">foo</td><td>bar</td></tr>
</table>

<!-- First section is hidden -->
<table id="table2" border=1>
  <thead><th hidden>header 1</th><th hidden>header 2</th></thead>
  <tr><td id="table2cell">foo</td><td>bar</td></tr>
</table>

<!-- First and middle section is hidden -->
<table id="table3" border=1>
  <thead><tr><th hidden>header 1</th><th hidden>header 2</th></tr></thead>
  <tr><td hidden>foo</td><td hidden>bar</td></tr>
  <tfoot><tr><td id="table3cell">foot</td><td>foot</td></tr></tfoot>
</table>

</div>

<script>

    description("This tests that cellForRowAndColumn work as expected when cells are hidden in sections and rows.");

    if (window.accessibilityController) {

        debug("\nTable1 has a hidden first row. Verify accessing cells works as expected.");
        var table1 = accessibilityController.accessibleElementById("table1");
        shouldBe("table1.rowCount", "2");
        var table1cell1 = table1.cellForColumnAndRow(0, 0);
        shouldBeTrue("!table1cell1 || !table1cell1.isValid");
        var table1cell2 = table1.cellForColumnAndRow(0, 1);
        shouldBeTrue("table1cell2.isEqual(accessibilityController.accessibleElementById('table1cell'))");
        shouldBe("table1cell2.rowIndexRange()", "'{1, 1}'");
        shouldBe("table1cell2.columnIndexRange()", "'{0, 1}'");

        debug("\nTable2 has a hidden first section. Verify accessing cells works as expected.");
        var table2 = accessibilityController.accessibleElementById("table2");
        shouldBe("table2.rowCount", "2");
        var table2cell1 = table2.cellForColumnAndRow(0, 0);
        shouldBeTrue("!table2cell1 || !table2cell1.isValid");
        var table2cell2 = table2.cellForColumnAndRow(0, 1);
        shouldBeTrue("table2cell2.isEqual(accessibilityController.accessibleElementById('table2cell'))");
        shouldBe("table2cell2.rowIndexRange()", "'{1, 1}'");
        shouldBe("table2cell2.columnIndexRange()", "'{0, 1}'");

        debug("\nTable3 only has a footer section.");
        var table3 = accessibilityController.accessibleElementById("table3");
        shouldBe("table3.rowCount", "3");
        var table3cell1 = table3.cellForColumnAndRow(0, 0);
        shouldBeTrue("!table3cell1 || !table3cell1.isValid");
        var table3cell2 = table3.cellForColumnAndRow(0, 2);
        shouldBeTrue("table3cell2.isEqual(accessibilityController.accessibleElementById('table3cell'))");
        shouldBe("table3cell2.rowIndexRange()", "'{2, 1}'");
        shouldBe("table3cell2.columnIndexRange()", "'{0, 1}'");
      
        // Clear the HTML for better results.
        document.getElementById("content").innerHTML = "";  
    }


</script>

</body>
</html>

