Open Bug 368873 (ia2) Opened 17 years ago Updated 2 years ago

[meta] IAccessible2 API support


(Core :: Disability Access APIs, defect)






(Reporter: aaronlev, Unassigned)


(Depends on 7 open bugs)


(Keywords: access, meta)

For the actual API see

** Why a new API?

The need for the development of this new accessibility API was clear:
1) Crucial features added: the first generation Windows accessibility API, called MSAA or IAccessible, lacked crucial features, such as support for the caret and selection, accessible relations, rich text editing, multiple actions and many other features necessary for quality support in assistive technologies.
2) Accessibility efforts preserved: an evolutionary path was needed for applications which already had MSAA (IAccessible) support, to support these new features. Rather than throw away the MSAA support that applications already had, it was considered less expensive for both applications and assistive technologies to grow new solutions on top of today's code.
3) Harmonized with other platforms: an API was needed that did not require separate accessibility implementations for each platform. The amount of different code between the ATK/AT-SPI implementations for UNIX accessibility, and IAccessible2 implementations, will be minimized, thus saving resources.

This API draft was developed with consultation from a number of groups, including assistive technology vendors, application developers from Mozilla (Aaron Leventhal), developers working on ODF accessibility, and others.

What is IAccessible2?

With the new API, an assistive technology will be able to QueryInterface from an IAccessible*, to IAccessible2*, and to any other supported interfaces.

The IAccessible2 interface itself collects important ATK features from other areas, as well some completely new methods and features. These tend to be methods that you may need on any object. For the most part, features were added either to bring Windows capabilities up to the level of ATK/AT-SPI, or in order to support the features of ARIA (previously known of DHTML accessibility). For more information on ARIA, see the links at the end of this email.

There are also specialized interfaces which are used only on objects with the given capabilities of that interface. These interfaces generally have a very close equivalent under ATK.  In the following list of interface matchups, ATK interfaces are prefaced with "Atk" and IAccessible2 are prefaced with "IAccessible":

AtkText ~= IAccessibleText
AtkEditableText ~= IAccessibleEditableText
AtkHyperText ~= IAccessibleHyperText
AtkHyperlink ~= IAccessibleHyperlink
AtkImage ~= IAccessibleImage
AtkTable  ~= IAccessibleTable
AtkAction ~= IAccessibleAction
AtkValue ~= IAccessibleValue
AtkRelation ~= IAccessibleRelation

That should give a rough idea that what we're doing is expanding MSAA while matching ATK/AT-SPI to a very helpful degree.

For more detail than that, please see the draft interfaces, available here:

How does IAccessible2 help Mozilla?

1) Support AJAX applications. for example, we will now have the ability to provide any information necessary for completely accessible live regions. There are features for the deliver of advanced ARIA features, such as extensible roles, relations and actions.
2) Support selection and caret. this will help with features such as "select and say" in Dragon Naturally Speaking -- which is currently not supported. It will also remove the need for screen reader hacks to find the caret. Currently, Windows screen readers must replace the video driver on the system and look for screen draws of vertical blinking lines. Over the long term, IAccessible2 is a rich API that will simplify screen reader maintenance, and it will minimize interference with the low level drivers on end user systems. It will also help provide much better screen reader support for rich text editing.
3) Maximize code reuse. in the summer of this year (2006), we moved most of the ATK/AT-SPI support code out of the Linux-only files into a cross-platform area. The code now supports ATK, but it is ready to help support the IAccessible2 interfaces.
Alias: ia2
Depends on: 78296
Depends on: 166994
Depends on: 335668
Depends on: 345780
Depends on: 357430
Depends on: 369082
Depends on: 369777
Depends on: 370276
Depends on: 346146
Depends on: 363230
Depends on: 289188
Depends on: 370676
Depends on: 370790
Depends on: 371273
Depends on: 371591
No longer depends on: 369082
Depends on: 372708
Depends on: winable
Depends on: 373329
Depends on: 373364
Depends on: 373531
Depends on: 374487
Depends on: 374790
Depends on: 375534
Depends on: 376032
Depends on: 376832
Depends on: 377285
Depends on: 377294
Depends on: 377302
Depends on: 378038
Depends on: 379366
Depends on: 379579
Depends on: 379585
Depends on: 379608
Depends on: 380021
Depends on: 380022
Depends on: 380038
Depends on: 380508
Depends on: 380524
Depends on: 380836
Depends on: 381049
Depends on: 381302
Depends on: 381312
Depends on: 383095
Depends on: 383608
Depends on: 385573
Depends on: 387857
Depends on: 390212
Depends on: 390414
Depends on: 391592
Depends on: 391617
Depends on: 391622
Depends on: 392153
Depends on: 392895
Depends on: 393897
Depends on: 394117
Depends on: 392626
Depends on: 395077
Depends on: 395081
No longer depends on: 380836
Depends on: 405747
Depends on: 405756
Depends on: 406959
Depends on: 407589
Depends on: 407592
Depends on: 385317
Depends on: 417018
Mass un-assigning bugs assigned to Aaron.
Assignee: aaronleventhal → nobody
Keywords: meta
Summary: Support IAccessible2 API → [meta] Support IAccessible2 API
Depends on: 684141
we support this api
Closed: 13 years ago
Resolution: --- → WORKSFORME
(In reply to Trevor Saunders (:tbsaunde) from comment #2)
> we support this api

we support but aren't free from IA2 specific bugs (see unfixed blockings), it's good to keep meta for this
Resolution: WORKSFORME → ---
Summary: [meta] Support IAccessible2 API → [meta] IAccessible2 API support
Depends on: 614571
Depends on: 754230
Depends on: 433667
Depends on: 877985
I have a question about IAccessible2 support in Firefox and any NPAPI based add-on/plug-in which also support this interface. Right now, as we have seen, when you hover over this plug-in, firefox is returning "embedded Object" as a response back, and doesn't give a chance to the underlying application.  Any way to tell Firefox that the plug-in supports IA2 and let it take care of sending control information?
I should say the bug is not right place to ask generic questions, you need to do to this at mail list like Plugins implement accessibility itself by answering WM_GETOBJECT message (windowless plugin are not accessible).
Depends on: 1233118
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.