Mac:Accessibility
From MozillaWiki
This page covers the effort to make Gecko accessible on Mac OS X.
Note! This page has been reported to cause Safari to crash, if VoiceOver on. The bug has been reported to Apple as RADAR #4534388. To avoid the crash, turn off VoiceOver or try another browser.
Contents |
Accessibility Features in Mac OS X
Mac OS X ships with many great accessibility features. To name a few of them:
- For users with low or no vision there's a built-in screen reader called VoiceOver. It can speak what's under the mouse, the current focus, what is currently typed and so on. It can even be configured to use different voices for different kinds of content.
- Zoom. With a keyboard shortcut, the user can zoom the current contents of the screen.
- Features such as Sticky Keys, Slow Keys and controlling the cursor with the keyboard provide alternative ways to use the mouse and keyboard.
- Speakable Items is a way to control the system with voice commands (e.g., "Quit this application" or "Switch to Firefox"). An application can provide any number of custom actions.
These are just a few of the built-in features. For more information about built-in features in Mac OS X or third-party accessibility software, see Apple's accessibility webpage.
Access-enabling Gecko
How do we integrate this technology into Gecko? There's a lot to be done. Today, if you're using VoiceOver to navigate the screen Firefox is just a big window with unknown content in it. Indeed, any other XUL application -- including future XULRunner-based apps -- will have this limitation unless something is done.
We need to implement support for the Universal Access APIs in Gecko, to expose web content and XUL in a way that Mac OS X and third-party apps can make sense of.
See the TODO list for this work, as of November 2006.
Universal Access vs MSAA and ATK
Universal Access (UA) is the name of Apple's accessibility framework. For developers familiar with accessibility programming, there's a brief introduction and quick reference here. After that, developers used to ATK may find the mapping of a few ATK interfaces to UA interesting.
Before we decided to implement UA support in Gecko we did a lot of comparisons to make sure that OS X's accessibility APIs had most of the same features as the Windows and Linux accessibility APIs. Go here to see the comparison tables in detail.
The conclusion is that UA has most of the things MSAA does, so there should be nothing hindering basic accessibility support; UA was designed to make desktop applications, and their widgets, accessible.
In the longer term we'd like to have more advanced UA attributes that help us to access-enable DHTML and AJAX web pages, and we would therefore need to extend UA. WebKit has already done some extensions, and with cooperation there it's possible that we could extend further.
How to build Firefox with accessibility
To enable Mac accessibility support in your tree, just append --enable-accessibility to your mozconfig file.
For detailed build instructions on how to build Firefox, XULRunner or any other Mozilla-derived product, see Mozilla's developer pages.
Relevant Bugs
The main tracking bug for major accessibility features to implement on Mac OS X is bug 342989. Implementing Universal Access support would make it possible to fix many of them. Also see the TODO list.
Discussion
For further discussion, please use the mozilla.dev.accessibility newsgroup. For comments on this document, please email HÃ¥kan Waara.
