[Bug 24679] Addition and improvements to the table over (non-)layout table heuristics

https://www.w3.org/Bugs/Public/show_bug.cgi?id=24679

--- Comment #10 from Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no> ---
http://lists.w3.org/Archives/Public/public-html-a11y/2014Feb/0063

James pointed to Webkit:

> Just copy what the open source browsers are doing already. For example:
> 
> AccessibilityTable::isDataTable()
> http://trac.webkit.org/browser/trunk/Source/WebCore/accessibility/AccessibilityTable.cpp#L93

What Webkit does, based on that page (summary based on code comments):

1)  [L.98] Table is not data table if @role is present.
2) [L.102] Except if table is inside contentEditable secion = always data table
3) [L.108] Heuristic section.
           Assumption: table is not data tab. unless data table signals present
   [L.117] CAPTION/@summary/THEAD/TFOOT = most certainly a data table
   [L.122] // if someone used "rules" attribute than the table should appear
   [L.126] // if there's a colgroup or col element, it's probably a data table.
   [L.132] // go through … cell's … check for tell-tale signs of "data" table …
           // … borders, or … attributes like headers, abbr, scope or axis
   [L.142] // If there's only one cell, it's not a good AXTable candidate.
   [L.146] // If there are at least 20 rows, we'll call it a data table.
   [L.150] Zebra striping and other signals:
// Store … background color of … table to check against cell's background …
// check enough of the cells to find if the table matches our criteria
// Criteria:
//   1) must have at least one valid cell (and)
//   2) at least half of cells have borders (or)
//   3) at least half of cells have different bg colors than the table,
        and there is cell spacing
   [L.189] // first row is comprised of all <th> tags, assume it is a data
table
   [L.193] // first column is … all <th> tags, assume it is a data table.
   [L.197] explicitly assigned a "data" table attribute [double checking to see
           if @abbr, @axis, @headers, @abbr is empty????]
   [L.206] // If the empty-cells style is set, we'll call it a data table
   [L.210] //If a cell has matching bordered sides, 
             call it a (fully) bordered cell.
   [L.215] // Also keep track of each individual border, 
              so we can catch tables where most
           // cells have a bottom border, for example.
   [L.226] // If the cell has a different color from the table and there
              is cell spacing,
           // then it is probably a data table cell (spacing and colors 
              take the place of borders).
   [L.230] // If we've found 10 "good" cells, we don't need to keep searching.
   [L.237] // For the first 5 rows, cache the background color so we can check
              if this table has zebra-striped rows.
   [L.256] // if there is less than two valid cells, it's not a data table
   [L.260] // half of the cells had borders, it's a data table
   [L.269] // half had different background colors, it's a data table
   [L.273] // Check if there is an alternating row background color indicating 
              a zebra striped style pattern.
   [L.299] // If the developer assigned an aria role to this, then we
           // shouldn't expose it as a table, unless, of course, the aria
           // role is a table.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Saturday, 22 February 2014 17:36:57 UTC