Bug 38882 - Implement support for IAccessible2
Summary: Implement support for IAccessible2
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Accessibility (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows 7
: P2 Normal
Assignee: Brent Fulgham
URL:
Keywords: InRadar, PlatformOnly
Depends on: 117311 117561 117761
Blocks:
  Show dependency treegraph
 
Reported: 2010-05-10 19:09 PDT by James Teh
Modified: 2015-02-03 09:03 PST (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description James Teh 2010-05-10 19:09:18 PDT
MSAA alone is insufficient for reliable, fully functional access to web content by assistive technologies such as screen readers. Some major issues that cannot be resolved using MSAA are:
1. The ability to obtain a unique identifier for an object. This is necessary to enable comparison of objects and caching of object information. Among other things, comparison of objects is required to associate events with the correct object if the AT has cached some information about that object. Note that while the IAccessibleComparable interface is currently provided, this requires the AT to hold references to all objects rather than just storing the unique identifiers.
2. The ability to retrieve a specific object given a unique identifier. This is necessary to allow retrieval of a cached object when an action needs to be performed on that object. The convention is to let the unique identifier be the same as the accessible child ID so that AccessibleObjectFromEvent() can be used to retrieve an object by unique identifier.
3. Caret tracking in editable text controls. MSAA only exposes the text of editable text controls. It does not provide a way for the AT to determine the position of the caret within that text. This means that cursoring around or deleting characters in the control is not accessible with ATs.
4. Access to table information. MSAA does not provide a standard way to expose table information, such as row and column counts and coordinates.

IAccessible2 (http://www.linuxfoundation.org/collaborate/workgroups/accessibility/iaccessible2) complements MSAA (IAccessible), facilitating the missing functionality outlined above and much more. Implementing IAccessible2 in WebKit would facilitate access by the NVDA screen reader (http://www.nvda-project.org/) and potentially improved access for other ATs and screen readers.
Comment 1 chris fleizach 2010-10-28 23:26:56 PDT
Jon, can you comment on these issues
Comment 2 chris fleizach 2010-10-28 23:44:59 PDT
This looks handy
http://doxygen.db48x.net/mozilla-full/html/d5/dc5/interfaceIAccessible2.html
Comment 3 Jon Honeycutt 2010-10-29 15:14:06 PDT
James is correct about these limitations to MSAA, and we should add IAccessible2 support.

<rdar://problem/8476150&8476182>
Comment 4 James Teh 2012-07-24 01:37:06 PDT
Serotek Corporation implemented a subset of IAccessible2 which solves issues 1 and 2 outlined in the description. Their patch is against r56859 of WebKit from June 2010. It can't be submitted as is upstream because of the lack of unit tests. Unfortunately, they don't have the resources to devote to furthering this. I mention it here as a base reference should anyone wish to pursue it. The patch can be found here:
r56859.diff">http://download.samobile.net/opensource/webkit/webkit-r56859.diff
Comment 5 Brent Fulgham 2013-06-19 11:50:04 PDT
(In reply to comment #4)
> Serotek Corporation implemented a subset of IAccessible2 which solves issues 1 and 2 outlined in the description. Their patch is against r56859 of WebKit from June 2010. It can't be submitted as is upstream because of the lack of unit tests. Unfortunately, they don't have the resources to devote to furthering this. I mention it here as a base reference should anyone wish to pursue it. The patch can be found here:
> r56859.diff">http://download.samobile.net/opensource/webkit/webkit-r56859.diff

I have merged in some of their work, but found that some of the AccessibleDocument changes caused stack overflow problems.