You’re a table, and I don’t care what lies underneath

Over the past couple of weeks, Alex, David and I have been hard at work refactoring, discussing, and implementing better support for accessible tables in Gecko. Some of this has seen the light in Firefox 3.6alpha, but the heart of the work is currently only in mozilla-central (AKA Firefox 3.7). Update: As of October 29, these changes have also been ported to the Firefox 3.6 AKA the Gecko 1.9.2 branch and will be in the final release of Firefox 3.6. It will not yet appear in the upcoming release of Firefox 3.6b1, since that was branched off before we landed the IAccessibleTable2 support.

The goal was to:

  1. Refactor our code to become more maintainable.
  2. Expose the same kind of interface to assistive technologies regardless of what lies underneath is a true HTML table, an ARIA table, an ARIA data grid, a XUL tree table etc. There are so many commonalities that ATs should be able to expect similar, if not identical, information from any of these table types.
  3. Implement the IAccessibleTable2 interface that was defined within the IA2 group over the summer.
  4. Get rid of many “todo” items in our Mochitest unit tests.

For The Minefield (Firefox 3.7a1pre) nightly build that will come out today, Friday September 11, the patch that implements IAccessibleTable2 has landed. All header/table cell relations are now defined through proper method calls rather than special forms of accessible relations. This was a big patch with almost 550 kb in size. A quarter of this were IDL changes for IA2, but the rest was all code that had to be reviewed and super-reviewed. It’s definitely the biggest patch I’ve been working on so far since I started working for Mozilla.

Over the past few weeks, Alex also refactored our XUL tree exposure to better meet our goal. With 235 KB, this was the second biggest patch I have been working on so far.

Other changes that went in concern selection of cells, rows, unselecting parts of tables etc. Some of these have caused our long “to do” item list of around 80 items to drop to a mere 7 throughout the whole a11y test suite. The table tests were among the first written when we started doing automated tests on a11y some 20 months ago, and it’s cool to finally see this area of the code properly addressed!

With these changes, our number of passing tests is now at 10205 and a total of 7 to-do items.

And this is where you come in! If you’re an accessible tables junkie, know a lot about HTML table make-up, or know of very weird tables out in the wild, go download the latest nightly build and throw the tables at it! Let us know your results, for example by commenting here on the blog, and if you find something that definitely isn’t exposed right, file a bug! We appreciate any and all help you can give us here!

If you’re an AT vendor and plan on implementing support for IAccessibleTable2, here’s a model you can use!

Finally, I’d like to thank all the cool people (module peers and super reviewers) who helped us accomplish what we’ve accomplished so far! With their knowledge and wisdom about the inner workings of Gecko and their respective modules, they helped make our code faster, better and more robust. Keep on rockin’!

This entry was posted in Accessibility, ARIA, Firefox. Bookmark the permalink.
Skip to top

Comments

16 Responses to You’re a table, and I don’t care what lies underneath

  1. Twitter Comment


    RT @MarcoZehe Interested in accessible HTML tables? The Mozilla a11y team could use your help! [link to post]

    Posted using Chat Catcher

  2. Twitter Comment


    RT @MarcoZehe Interested in accessible HTML tables? The Mozilla a11y team could use your help! [link to post] RT @ScreenOrigami

    Posted using Chat Catcher

  3. Twitter Comment


    Marco Zehe: You’re a table, and I don’t care what lies underneath: Over the past couple of weeks, Alex, David an.. [link to post]

    Posted using Chat Catcher

  4. Twitter Comment


    You’re a table, and I don’t care what lies underneath « Marco’s accessibility blog [link to post]

    Posted using Chat Catcher

  5. Hermann Bender says:

    Which effects does this have for the users? E.g.: Can I see any difference
    when viewing certain tables using FF 3.5.3 and the 3.7 nightlies?
    I use Jaws 9.0 and NVDA.

  6. Marco says:

    @Hermann, with JAWS 9, you’ll probably not notice a difference. IAccessibleTable2 needs to be implemented in assistive technologies first before users will notice increased accuracy in recognizing headings and other info in properly marked up data tables. Also, in the future, working with message tables such as the one found in Thunderbird should become more reliable, because we’ll expose the same kind of information. It’s a table, regardless of the underlying markup.

  7. Hermann Bender says:

    Regarding Thunderbird: Are you talking about the message list in TB’s
    inbox?
    If so, would it then be possible to scroll through the mail haeadings as in
    a table? That means, can you then scroll through all senders, subjects
    etc.?

  8. Marco says:

    That is the ultimate goal, yes.

  9. Pingback: The current state of accessible Firefox on the Mac, your help is appreciated! « Marco’s accessibility blog

  10. Marco says:

    Note that I updated the contents of this post. The IAccessibleTable2 and other related bug fixes and new features were backported to the Firefox 3.6 branch on October 29 and have been included in the 20091029 nightly builds of Firefox 3.6.

  11. Twitter Comment


    RT @MarcoZehe Tables in Firefox updated to support IAccessibleTable2 – call for testing by a11y devs [link to post] #fb

    Posted using Chat Catcher

  12. Pingback: New accessibility features in 3.6 « Marco’s accessibility blog

  13. Pingback: New accessibility features in Firefox 3.6 « AccessTech News

  14. Pingback: New accessibility features in Firefox 3.6 « The BAT Channel

  15. Pingback: Roundup: What is the Mozilla Accessibility Team working on? « Marco’s accessibility blog

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>