Report: Best of LSR and ARIA Support in Orca Milestone 4
ARIA Widget and Live Region Support
By Scott Haeger
This milestone period encompassed four areas: continued work on ARIA widget support, live region support, Collection bug fixes and Collection integration into Orca. Each topic will be covered below.
ARIA widget support continued from the fourth milestone period and is at a point where I consider it finished. This milestone period included adding support for alerts/tooltips, coordinating with developers to tweak several Dojo and UIUC widgets, and creation of several Orca ARIA related regression tests. The current support level for ARIA widgets is now best seen at the Orca ARIA Widgets wiki. The three tables listed show the support level of Orca and the ATSPI support level in Firefox for each widget type.
ARIA Widget Test Sets
In previous milestone periods I defined three sets of ARIA widgets that I would use for testing. These test sets include preexisting and newly developed Mozilla developer test widgets, The Dojo Widget Toolkit, and the Illinois Center for Information Technology Accessibility (UIUC) ARIA widget examples. Orca now has a set of regression tests that can verify Orca support for most of the ARIA widgets in each set.
The current support level for live regions in Orca is best seen on the Orca Live Region wiki. In summary, live region support for both properly marked up web pages and pages without proper ARIA markup has been in Orca for a couple weeks now and is working quite well. In addition, I wrote a few Greasemonkey scripts, which 'inject' live region markup for a few popular sports scoreboards that do not function well without proper markup.Orca live region support is now quite good for popular finance, scoreboards and web based chat sites.
The level of Collection integration into Orca is best seen on the Orca Collection Integration wiki. In summary, the page summary feature and many of the 'go to' user navigation functions in the Gecko script now have an alternative implementation using Collection. A global Orca variable allows the user to toggle the use of the new implementation and backward compatibility is maintained so the user is not forced to use the trunk version of at spi. Overall, the Collection interface gives about a 57 times performance increase for the navigation functions.
Collection Bug Fixes
It was essential that two critical Collection bugs be fixed before the Orca integration work. I was instrumental in fixing both of the following bugs:
- 496232 – Add traverse flag to Collection.getMatches[From|To]
- 517761 – Collection match rules not working for attributes
Collection Integration into Orca
The following bug reports were used to track the integration into Orca work:
- 490568 – Implement Firefox page summary using Collection
- 491837 – Implement Gecko 'go to' functions using Collection
- 519587 – Navigating nested lists with Collection not functioning properly
The following wiki pages have been maintained during this milestone period:
Orca ARIA Widget Support – This page describes ARIA widgets to the Orca user community, gives links to examples, and lists the level of support for each widget type.
Orca Live Region Support – This page describes Live Regions to the Orca user community, gives links to examples, describes Greasemonkey and it's potential solution for Live Regions markup, and describes the level of support for popular websites containing Live Region.
Orca Collection Interface Integration – This page describes the Collection Interface to the Orca user community and describes what features have been upgraded using the Collection Interface.
Mozilla Developer's Center ARIA page – Validated all widgets for ATSPI support.
In addition, the new Mozilla Developer's Guide to Live Regions has been added during this milestone period. This provides a set of guidelines an AT developer can reference when implementing live regions.
Bug Report and Code Submittal
The following is a list of bugs that I have submitted since the beginning of my grant:
- 390298 - ATK hierarchy inconsistent for ARIA spinners
- 392061 - Live region object attributes are not being persisted for AT- SPI
- 393279 - ARIA checkboxTriState do not trigger object:state- changed:checked events
- 394318 - ARIA trees are triggering an unnecessary ATK caret- moved event
- 395041 - STATE_SELECTED should be used in single select containers that use activedescendant
- 395699 - relations not working when pointing to a <span>
- 395900 - Image frame changes causes recreation of ATK objects
- 395902 - children-changed event points to wrong child for lists
- 397485 - Embed characters to children not 1:1
- 402049 - ARIA tooltips triggering many repeated AT-SPI events
- 402597 - AT-SPI Accessibility:Event.user_data None for ARIA tooltips/alerts
- 412288 - Toolbar menus do not have ATK state focusable
- 412965 - ARIA sliders and progressbars should not support ATK IText
- 413394 - ARIA role="presentation" adds whitespace to AT-SPI IText output
- 415069 - ARIA alerts triggering events with :system
- 415776 - AT-SPI Collection Interface crashes Firefox
- 415919 - No AT-SPI focus event when returning focus to Firefox
- 417249 - AT-SPI document load complete events not triggered everytime
The dependency tree for the Orca ARIA support bug is the best view of the ARIA bugs and the dependency tree for the Orca Collection support bug is the best view of the Collection bug that I have been working on for Orca. Peer reviewed source code was submitted to the trunk branch of Orca's Subversion repository. ARIA widget support appeared in Orca versions as it was made available. Major Live Region support was added to the 2.21.90 and minor changes were added to the 2.21.92 release. Collection support is targeted for the 2.22.0 release.