Accessibility/Accessible Table Implementation: Difference between revisions

Line 31: Line 31:
* getIndexAt(0,0) returns the child index under the table accessible of the top-left data cell. Again, row and column headers cannot be fetched using this method.
* getIndexAt(0,0) returns the child index under the table accessible of the top-left data cell. Again, row and column headers cannot be fetched using this method.
* getRowHeader(n), getColumnHeader(n) return the accessible representing the header on the nth row and nth column. I have not found a XUL table with more than one header.
* getRowHeader(n), getColumnHeader(n) return the accessible representing the header on the nth row and nth column. I have not found a XUL table with more than one header.
* getRowDescription(n), getColumnDescription(n) getRowDescription(n), getColumnDescription(n) return the accessible text or name on the one and only one header on the nth row and nth column. This is equivalent to getRowHeader(n).name or getRowHeader(n).queryInterface(<whatever the text idd is>).getText(0,-1). I can't tell which one gail is doing for us without looking at the gail code.
* getRowDescription(n), getColumnDescription(n) return the accessible text or name on the one and only one header on the nth row and nth column. This is equivalent to getRowHeader(n).name or getRowHeader(n).queryInterface(<whatever the text idd is>).getText(0,-1). I can't tell which one gail is doing for us without looking at the gail code.
* Cells the visually span columns (e.g., a separator in the bookmarks tree table), exist as separate cells in the table. getRowExtentAt(r,c) and getColumnExtentAt(r,c) return 1 for all rows and columns falling into the spanning cell.
* Cells that visually span columns (e.g., a separator in the bookmarks tree table), exist as separate cells in the table. getRowExtentAt(r,c) and getColumnExtentAt(r,c) return 1 for all rows and columns falling into the spanning cell.
* The table container fires no events. Moving the active selection box up and down within the table causes focus events on the cells in the first column. Focus cannot traverse other columns.
* The table container fires no events. Moving the active selection box up and down within the table causes focus events on the cells in the first column. Focus cannot traverse other columns.
== Firefox ARIA table ==
http://www.mozilla.org/access/dhtml/spreadsheet
*  getAccessibleAt(0, 0) returns the top-left cell, even if it is marked as a header in the HTML and has ROLE_COLUMN_HEADER in AT-SPI.
* getIndexAt(0,0) returns the child index under the table accessible of the top-left cell. Again, row and column headers are fetched using this method.
* getRowHeader(n), getColumnHeader(n) always return None.
* getRowDescription(n), getColumnDescription(n) always return an empty string.
* '''This example does not have any spanning cells for me to test.'''
* Pressing Tab first causes focus: to fire on an unknown accessible even though the focus border appears on the table. Pressing Tab again fires two focus: events in succession, one on the table container and the other on the top-left cell in the table. Arrowing around the table causes additional focus: events to fire.
Oddly enough, when I keep arrowing down, out of the bottom of the table, Firefox caret mode stays on.


== Firefox static HTML ==
== Firefox static HTML ==
Line 39: Line 52:
*  getAccessibleAt(0, 0) returns the top-left cell, even if it is marked as a header in the HTML source.
*  getAccessibleAt(0, 0) returns the top-left cell, even if it is marked as a header in the HTML source.
* getIndexAt(0,0) returns the child index under the table accessible of the top-left cell. Again, row and column headers are fetched using this method.
* getIndexAt(0,0) returns the child index under the table accessible of the top-left cell. Again, row and column headers are fetched using this method.
* getColumnHeader(n) returns the accessible representing the one and only one header on the nth column. getRowHeader(n) returns nothing, at least when row headers are marked with <th>. '''Test multiple headers'''
* getColumnHeader(n) returns the accessible representing the one and only one header on the nth column. getRowHeader(n) returns nothing, at least when row headers are marked with <th>. '''I still need to test multiple headers'''
* getRowDescription(n), getColumnDescription(n) always return an empty string.
* getRowDescription(n), getColumnDescription(n) always return an empty string.
* getRowExtentAt(r,c) and getColumnExtentAt(r,c) return the appropriate extents for all row and column offsets falling in the same cell.
* getRowExtentAt(r,c) and getColumnExtentAt(r,c) return the appropriate extents for all row and column offsets falling in the same cell.
17

edits