AT APIs Support

Introduction

Documentation is in progress still. But in the meantime it more up-to-date and contains more details than existed analogues for AT-SPI and MSAA

This documentation explains how makers of screen readers, voice dictation packages, onscreen keyboards, magnification software and other assitive technologies can support Gecko-based software. We provide for them the support of these products on Windows, Linux/Unix and OS X platforms.

Accessible Gecko

Gecko is a rendering engine that Firefox, SeaMonkey, Netscape and yelp use. Gecko can render a variety of content, not just HTML and supports key web standards such as Cascading Style Sheets, Javascript and the W3C DOM. Gecko also handles the users keystrokes and mouse clicks. Gecko is the core architecture that we are adding accessibility to, in order to support basic accessibility in all applications that are based on it.

Gecko Based Applications

Gecko can be used in two ways to create application:

Embedded Clients

Embedded clients use Gecko only in the content window, at the moment for HTML and generic XML only. They typically use standard Windows controls for their user interface -- the area outside of the client content window, plus the context menu.

  • on Windows platform
    • MFCEMBED testing client - this is a very simple package, great for testing basic HTML accessibility with your products and the Gecko rendering engine (please contact us for a copy).
    • K-Meleon - light, ultra-fast and more advanced (fully configurable) Gecko-based web browser available on the Windows platform
  • on Linux/Unix platform
    • Yelp help viewer - the help viewer in Gnome
    • Evolution email - provides integrated mail, addressbook and calendaring functionality to users of the GNOME desktop.
  • on Mac platform
    • Camino - web browser for OS X

XUL Applications

XUL applications make full use of the Gecko architecture, not only for HTML content, but also for the entire user interface. Widgets such as menus, tab panels, tree views and dialogs are provided via an XML language called XUL (eXtensible User-interface Language). None of the user interface contains standard OS controls. This is done to ensure a common look and feel across all supported platforms, and to allow for different skins (appearances). Developing a XUL window is not that different from developing a web page, but the elements available to add widgets are more powerful and designed to be similar to desktop widgets.

Examples of XUL applications:

  • Firefox - web-browser
  • Thunderbird - email client
  • Seamonkey - web-browser, advanced e-mail and newsgroup client, IRC chat client, and HTML editing made simple
  • Sunbird - cross-platform calendar application
  • KompoZer - a complete Web Authoring System for Linux Desktop, Microsoft Windows and Macintosh users to rival programs like FrontPage and Dreamweaver.
  • Open Komodo - platform for building developer environments
  • Miro - a free, open source internet tv and video player
  • Any XulRunner application (Songbird media player, etc.)
  • Extensions to other XUL apps (e.g. Firefox extensions)

Gecko Version

For Firefox and all other Gecko-based products: this documentation applies to up-to-date product builds based on Gecko 1.9.2 -- currently not available on official releases. However most of described features are supported starting from Gecko 1.9.0 (Firefox 3.0). However it's preferable to grab the current build of Firefox or any other Gecko-based product to be up to dated:

Determining if Accessibility is Enabled in a Firefox

Accessibility is enabled on Windows and Linux platforms by default. As well you might find helpful the about:accessibilityenabled Firefox extension.

Supported AT APIs

AT APIs terms

Microsoft Active Accessibility (MSAA)
an API devised by Microsoft so that accessibility aids can track what's going on inside the user interface of any software package that supports it. If you seriously need to understand MSAA, you'll need to read the docs on MSDN and play with the sample apps and code that come with MSAA SDK 1.3. (I recommend SDK 1.3 because the MSAA SDK 2.0 doesn't come with the source code to the testing tools. The other differences are not important).
IAccessible2 (IA2)
IAccessible2 is a new accessibility API which complements Microsoft's earlier work on MSAA. This API fills critical accessibility API gaps in the MSAA offering.
Assistive Technology Service Provider Interface (AT-SPI)
an API devised by Sun Microsystems so that accessibility aids can track what's going on inside the user interface of any software package that supports it. If you seriously need to understand AT-SPI, you'll need to read the docs on gnome.org and play with the available sample apps and code, such as at-poke. Please note that the web docs are sometimes out of date, and the latest AT-SPI is available on CVS.
Universal Access (UA)
Universal Access (UA) is the Apple's accessibility framework.

Windows platform

We support MSAA (Microsoft Active Accessibility) and IAccessible2 on Windows. Also we expose MS COM interfaces ISimpleDOM* to provide an access to DOM tree.

IAccessible2 is a set of interfaces that overlay the MSAA (IAccessible) and DOM (ISimpleDOM*) interface support. Any object that supports IAccessible will also support IAccessible2 and possibly any of the other IA2 interfaces.

Linux/Unix platform

We support ATK/AT-SPI interfaces on Linux.

Mac platform

We currently support only a subset of Universal Access. The rest of the Mozilla Universal Access support is in progress.

Accessible Web Standards

Gecko exposes the number of XML languages including HTML to AT. Refer to accessible web specifications page to learn what and how markup languages are exposed.

AT APIs Implementation Details

Refer to implementation details page to see how Gecko supports interesting AT API. There you will find information how AT API interfaces, roles, states and etc are mapped into Gecko accessibility API and visa versa.

Keyboard User Interface and API

Fortunately, Gecko uses the standard keyboard API's for each supported platform. The Mozilla keyboard shortcuts for content are similar to what is used in other browsers. Here is a list of Firefox keyboard shortcuts.

Test Tools

Here you will find a list of tools to test accessibility Gecko-based applications.

  • MSAA
    • MSAA SDK tools - version 1.3 is recommended instead of 2.0 because it includes source code for the tools
  • IAccessible2
  • ATK/AT-SPI
    • Accerciser - interactive Python accessibility explorer for the GNOME desktop
  • Gecko
    • DOM Inspector has an ability to test Gecko accessibility layer, supports base features.
    • Firebug

Screen Readers

Here's a list of screen readers we are oriented to in the first place.

Contacts

Please discuss accessibility issues on the Mozilla Accessibility groups or on the Mozilla Accessibility IRC channel.