Thursday, March 22, 2012

Firefox 13 for AT developers

Several days ago Firefox 13 entered into aurora channel. No active development on it anymore so it's time to give it a try.

Firefox 13 looks much more interesting from AT perspective than Firefox 12. Let's run through the changes.


We implemented the canvas fallback content accessibility.

Table data vs layout algorithm was enriched by extending the list of legitimate data table structures. So if @headers, @scope and @abbr attributes are specified on HTML table cell or the table cell contains HTML abbr element as a single child element then the table is treated as data table. Thanks to our new contributor Mark Capella who implemented this.


As you probably know that ARIA doesn't provide a way to expose accessible actions on ARIA widgets and therefore Firefox makes a guess about actions depending on ARIA role. This release got a fix for role="button" which is exposed with press action now.

We dropped ARIA role="label" support which was removed from the spec.

ARIA role="listitem" doesn't longer support aria-selected and aria-checked. ARIA role="combobox" doesn't allow aria-valuemin/aria-valuemax attributes that were maintained by mistake I believe over certain period. 

Text attributes

In Firefox 13 the font-family text attribute represents the actual used font. Previously the value was exactly the same what the user specified by CSS font-family property. Note, the range still might be not correct on case by case basis, for example, when font-family is changed within a single text node.

New text-underline-color and text-line-through-color text attributes were implemented. Check out IAccessible2 spec for details.

The text-position text attribute is restricted to spec allowed values: baseline, super and sub. Other enum values of CSS vertical-align used to expose this text attribute are ignored.

Object attributes

Now we expose D2D object attribute on Windows. If hardware acceleration is turned on then you can see D2D:true object attribute on application accessible.

We expose margin-left/right/top/bottom object attributes. Thanks to Mark Capella who volunteered to fix this issue.

Work in progress and randoms

Got more progress on OS X accessibility. Probably not a giant step but no doubts we moving forward. Not a part of default build still.

We addressed few issues with text interface like wrong behavior of caretOffset. We fixed some regressions in hit testing and accessible coordinates for zoomed pages. Fixed a major issue when we missed parts of accessible tree under certain circumstances. The patch was back ported to Firefox 12.

On ATK the application accessible object name is a real application name. Prior this fix it was application brand name. To make things clear we expose now 'Firefox' not 'Nightly', for example, in case of nightly Firefox build. That was done because ATK doesn't have an option to expose application name the way as IAccessible2 does and AT had hard times to figure out that the running nightly Firefox is Firefox actually.

Virtual cursor

Last but not least. At XPCOM level we introduced traversal API and virtual cursor support. That's a major step on the way to make screen readers running in the browser. Now you can manage the virtual cursor from JS. This is pure API thing, i.e. the virtual cursor doesn't have any visual presentation so as Firefox add-on developer you should take care about this. This work was influenced by Firefox accessibility on Android. Anyway this item deserves own post so no many details here.

1 comment:

  1. Useful article, thank you for sharing the article!!!

    Website và website giúp bạn giải đáp mọi thắc mắc.