test_struct_ariagrid.html (5375B)
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <title>Table accessible tree and table interface tests for ARIA grid</title> 6 <link rel="stylesheet" type="text/css" 7 href="chrome://mochikit/content/tests/SimpleTest/test.css" /> 8 9 <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> 10 11 <script type="application/javascript" 12 src="../common.js"></script> 13 <script type="application/javascript" 14 src="../role.js"></script> 15 <script type="application/javascript" 16 src="../table.js"></script> 17 18 <script type="application/javascript"> 19 function doTest() { 20 // //////////////////////////////////////////////////////////////////////// 21 // Pure ARIA grid 22 var cellsArray = [ 23 [kColHeaderCell, kColHeaderCell, kColHeaderCell], 24 [kRowHeaderCell, kDataCell, kDataCell], 25 [kRowHeaderCell, kDataCell, kDataCell], 26 ]; 27 28 testTableStruct("table", cellsArray); 29 30 // //////////////////////////////////////////////////////////////////////// 31 // HTML table based ARIA grid 32 cellsArray = [ 33 [kColHeaderCell, kColHeaderCell, kColHeaderCell], 34 [kDataCell, kDataCell, kDataCell], 35 [kDataCell, kDataCell, kDataCell], 36 ]; 37 38 testTableStruct("grid", cellsArray); 39 40 // //////////////////////////////////////////////////////////////////////// 41 // ARIA grid with HTML table elements 42 cellsArray = [ 43 [kColHeaderCell, kColHeaderCell], 44 [kDataCell, kDataCell], 45 ]; 46 47 testTableStruct("grid2", cellsArray); 48 49 // //////////////////////////////////////////////////////////////////////// 50 // ARIA grid of wrong markup 51 cellsArray = [ ]; 52 testTableStruct("grid3", cellsArray); 53 54 cellsArray = [ [] ]; 55 testTableStruct("grid4", cellsArray); 56 57 // //////////////////////////////////////////////////////////////////////// 58 // ARIA table with tr inside a shadow root (bug 1698097). 59 testTableStruct("tableShadow", [ [ kDataCell ] ]); 60 61 SimpleTest.finish(); 62 } 63 64 SimpleTest.waitForExplicitFinish(); 65 addA11yLoadEvent(doTest); 66 </script> 67 </head> 68 69 <body> 70 <a target="_blank" 71 title="ARIA grid based on HTML table" 72 href="https://bugzilla.mozilla.org/show_bug.cgi?id=491683">Mozilla Bug 491683</a> 73 <a target="_blank" 74 title="implement IAccessibleTable2" 75 href="https://bugzilla.mozilla.org/show_bug.cgi?id=512424">Mozilla Bug 512424</a> 76 <a target="_blank" 77 title="nsHTMLTableCellAccessible is used in dojo's ARIA grid" 78 href="https://bugzilla.mozilla.org/show_bug.cgi?id=513848">Mozilla Bug 513848</a> 79 <a target="_blank" 80 title="Crash [@ AccIterator::GetNext()]" 81 href="https://bugzilla.mozilla.org/show_bug.cgi?id=675861">Mozilla Bug 675861</a> 82 83 <p id="display"></p> 84 <div id="content" style="display: none"></div> 85 <pre id="test"> 86 </pre> 87 88 <!-- Not usual markup to avoid text accessible between cell accessibles --> 89 <div id="table" role="grid"> 90 <div role="row"><span 91 id="table_ch_1" role="columnheader">col_1</span><span 92 id="table_ch_2" role="columnheader">col_2</span><span 93 id="table_ch_3" role="columnheader">col_3</span></div> 94 <div role="row"><span 95 id="table_rh_1" role="rowheader">row_1</span><span 96 id="table_dc_1" role="gridcell">cell1</span><span 97 id="table_dc_2" role="gridcell">cell2</span></div> 98 <div role="row"><span 99 id="table_rh_2" role="rowheader">row_2</span><span 100 id="table_dc_3" role="gridcell">cell3</span><span 101 id="table_dc_4" role="gridcell">cell4</span></div> 102 </div> 103 104 <table role="grid" id="grid" border="1" cellpadding="10" cellspacing="0"> 105 <thead> 106 <tr role="row"> 107 <th role="columnheader">subject</td> 108 <th role="columnheader">sender</th> 109 <th role="columnheader">date</th> 110 </tr> 111 </thead> 112 <tbody> 113 <tr role="row"> 114 <td role="gridcell" tabindex="0">about everything</td> 115 <td role="gridcell">president</td> 116 <td role="gridcell">today</td> 117 </tr> 118 <tr role="row"> 119 <td role="gridcell">new bugs</td> 120 <td role="gridcell">mozilla team</td> 121 <td role="gridcell">today</td> 122 </tr> 123 </tbody> 124 </table> 125 126 <!-- ARIA grid containing presentational HTML:table with HTML:td used as ARIA 127 grid cells (focusable and not focusable cells) --> 128 <div role="grid" id="grid2"> 129 <div role="row"> 130 <table role="presentation"> 131 <tr> 132 <td role="columnheader">header1</td> 133 <td role="columnheader">header2</td> 134 </tr> 135 </table> 136 </div> 137 <div role="row"> 138 <table role="presentation"> 139 <tr> 140 <td role="gridcell">cell1</td> 141 <td role="gridcell" tabindex="-1">cell2</td> 142 </tr> 143 </table> 144 </div> 145 </div> 146 147 <!-- Wrong markup ARIA grid --> 148 <div role="grid" id="grid3"></div> 149 <div role="grid" id="grid4"><div role="row"></div></div> 150 151 <div id="tableShadow" role="table"></div> 152 <script> 153 let host = document.getElementById("tableShadow"); 154 let shadow = host.attachShadow({mode: "open"}); 155 let tr = document.createElement("tr"); 156 shadow.append(tr); 157 tr.setAttribute("role", "row"); 158 let td = document.createElement("td"); 159 tr.append(td); 160 td.textContent = "test"; 161 </script> 162 </body> 163 </html>