Mac:Accessibility Tasks

From MozillaWiki
Jump to: navigation, search

Current state of Mac Accessibility, as of November, 2006

Firefox can now display all mozilla accessible objects through the mac accessibility APIs. One can inspect and see the accessible objects of a whole web page in debug tools such as Accessibility Inspector.app. This is the first major step towards accessibility on mac.

It's a proof that these items are now "visible" to the OS, although they need to be further worked on to also be better comprehensible for any application using the Universal Access APIs.

A simple XUL test document featuring buttons, textfields, checkboxes and radiobuttons can be successfully used and spoken in VoiceOver. This is what I have been using as a testcase for demonstration.

The main Google search page can also be used, to some extent, barring performance problems (read below). This was showcased on the Mozilla Accessibility Hackfest in Boston, October, 2006.

The widgets that are now explicitly in place are: checkbox, radiobutton, button, textfield, and the generic "everything else"-widget. The everything else widget dynamically has the right behavior, based on its role. To make this work better, customized subclasses need to be made inheriting from the main accessibility class.

Tasks & Issues

The 1 minute-version of the TODO list

Here's the short version, covering what needs to be done, and where more progress is waiting for Apple to advice or resolve the issue.

What I'm currently focusing on

  1. Improve compatibility with VoiceOver
    • Work out how Mozilla can be as close to documentation as possible
    • Raise all remaining major issues with Apple, and make sure bugs are filed
  2. Finish implementing main XUL and HTML elements
    • Popupmenus, tabs, and scrollbars are some that are still unimplemented.

Need help with:

  1. Implement better text handling
    • Need to make styled text, embedded objects (etc.) accessible
  2. Improve performance

Details about VoiceOver and OS X issues

There are a number of problems that are blocking support for VoiceOver. In this section I will summarize them.

Performance problems

Reported to Apple as Bug ID# 4875210

Web pages are comprised of so many more elements than a simple window, and an AT has to parse a lot of data to do something useful with it.

VoiceOver has notably bad performance with larger test sets. I have raised this problem on Apple's accessibility-developer list without any reply so far.

This is making most web pages unusable and too slow, as VoiceOver is busy trying to parse the information about every element in a webpage before it allows for browsing it.

Ignores notifications

Reported to Apple as Bug ID# 4875222 (and a request for better documentation of notifications as Bug ID# 4875225)

Most changes to an accessibility hierarchy seem to be ignored. For example, if we fire a ValueChanged notification when the value in a textfield changes, the new value is not spoken. This bug was recently confirmed by an Apple engineer on the accessibility list.

It seems that ATs can't sign up to get notifications from custom elements, so this very much affects us (since Mozilla's accessibility support is 100% custom).

Extension manager restart confuses the OS

After Firefox has done its so-called EM_RESTART (a restart of the application it does after a new extension has been installed) accessibility in Firefox stops working. For some reason no communication can be done after this restart.

It looks like the way the restart is done confuses the OS. bug 352646

Changing web pages makes ATs confused

When we change webpage, a big chunk of accessibility objects go away, and new ones take place in the window. I think OS X's accessibility support and its ATs, are not used to this; apps usually keep the interface more or less static.

After we switch webpage, many accessibility tools get confused. There must be some way around this, since Safari can do it. Also this problem has been raised on the list, but there are no replies as of this writing.


Further links and pointers

-- Page written by HakanW