<!DOCTYPE html>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=410052
-->
<head>
  <title>nsIAccesible selection methods testing for ARIA grid</title>
  <link rel="stylesheet" type="text/css"
        href="chrome://mochikit/content/tests/SimpleTest/test.css" />

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>

  <script type="application/javascript"
          src="../common.js"></script>
  <script type="application/javascript"
          src="../role.js"></script>
  <script type="application/javascript"
          src="../states.js"></script>
  <script type="application/javascript"
          src="../table.js"></script>

  <script type="application/javascript">
    function doTest()
    {
      //////////////////////////////////////////////////////////////////////////
      // ARIA grid
      var cellsArray =
      [
        [ true, true,  false, true],
        [ true, false, true,  true],
        [ true, false, false, true],
        [ true, true,  true,  true],
        [ true, true,  true,  true]
      ];

      testTableSelection("table", cellsArray);
      testUnselectTableColumn("table", 3, cellsArray);
      testUnselectTableRow("table", 3, cellsArray);
      testSelectTableColumn("table", 0, cellsArray);
      testSelectTableRow("table", 0, cellsArray);

      //////////////////////////////////////////////////////////////////////////
      // a bit crazy ARIA grid
      cellsArray =
      [
        [ false, false],
        [ false, false]
      ];

      testTableSelection("grid2", cellsArray);
      testSelectTableColumn("grid2", 0, cellsArray);
      testSelectTableRow("grid2", 0, cellsArray);
      testUnselectTableColumn("grid2", 0, cellsArray);
      testUnselectTableRow("grid2", 0, cellsArray);

      //////////////////////////////////////////////////////////////////////////
      // ARIA grid (column and row headers)

      cellsArray =
      [
        [ undefined, true, false],
        [ undefined, true, false]
      ];

      testTableSelection("grid3", cellsArray);
      testSelectTableColumn("grid3", 0, cellsArray);
      testSelectTableRow("grid3", 0, cellsArray);
      testUnselectTableColumn("grid3", 0, cellsArray);
      testUnselectTableRow("grid3", 0, cellsArray);

      SimpleTest.finish();
    }

    SimpleTest.waitForExplicitFinish();
    addA11yLoadEvent(doTest);
  </script>
</head>
<body>

  <a target="_blank"
     title="implement nsIAccessibleTable selection methods for ARIA grids"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=410052">Bug 410052</a>
  <a target="_blank"
     title="nsHTMLTableCellAccessible is used in dojo's crazy ARIA grid"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=513848">Bug 513848</a>
  <a target="_blank"
     title="ARIA columnheader/rowheader shouldn't be selectable by default"
     href="https://bugzilla.mozilla.org/show_bug.cgi?id=888247">Bug 888247</a>

  <p id="display"></p>
  <div id="content" style="display: none"></div>
  <pre id="test">
  </pre>

  <div role="grid" id="table">
    <div role="row">
      <span role="gridcell" aria-selected="true">cell1</span>
      <span role="gridcell" aria-selected="true">cell2</span>
      <span role="gridcell">cell3</span>
      <span role="gridcell" aria-selected="true">cell4</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-selected="true">cell5</span>
      <span role="gridcell">cell6</span>
      <span role="gridcell" aria-selected="true">cell7</span>
      <span role="gridcell" aria-selected="true">cell8</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-selected="true">cell9</span>
      <span role="gridcell">cell10</span>
      <span role="gridcell">cell11</span>
      <span role="gridcell" aria-selected="true">cell12</span>
    </div>
    <div role="row" aria-selected="true">
      <span role="gridcell">cell13</span>
      <span role="gridcell">cell14</span>
      <span role="gridcell">cell15</span>
      <span role="gridcell">cell16</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-selected="true">cell17</span>
      <span role="gridcell" aria-selected="true">cell18</span>
      <span role="gridcell" aria-selected="true">cell19</span>
      <span role="gridcell" aria-selected="true">cell20</span>
    </div>
  </div>

  <div role="grid" id="grid2">
    <div role="row">
      <table role="presentation">
        <tr>
          <td role="columnheader" aria-selected="false">header1</td>
          <td role="columnheader" aria-selected="false">header2</td>
        </tr>
      </table>
    </div>
    <div role="row">
      <table role="presentation">
        <tr>
          <td role="gridcell">cell1</td>
          <td role="gridcell" tabindex="-1">cell2</td>
        </tr>
      </table>
    </div>
  </div>

  <div role="grid" id="grid3">
    <div role="row">
      <div role="columnheader" id="colheader_default">col header1</div>
      <div role="columnheader" id="colheader_selected" aria-selected="true">col header2</div>
      <div role="columnheader" id="colheader_notselected" aria-selected="false">col header3</div>
    </div>
    <div role="row">
      <div role="rowheader" id="rowheader_default">row header1</div>
      <div role="rowheader" id="rowheader_selected" aria-selected="true">row header2</div>
      <div role="rowheader" id="rowheader_notselected" aria-selected="false">row header3</div>
    </div>
  </div>
</body>
</html>