Closed Bug 806536 Opened 7 years ago Closed Last year

Accessibility support for windowless plugins in Windows 8

Categories

(Core :: Disability Access APIs, defect)

x86_64
Windows 8
defect
Not set

Tracking

()

RESOLVED WONTFIX

People

(Reporter: jimm, Unassigned)

References

(Depends on 1 open bug)

Details

I'm sure there are plenty of bugs filed on this already, so maybe this can be a tracking bug. We would like to use windowless mode for all flash plugin instances on Windows 8, both in the classic and metro browsers. To do this we need to scope out the state of plugin accessibility support in windowless mode.

We might want to file a separate bug on IME support as well, which I think is separate.
All relevant plugins would need to be updated. I don't think there is any Firefox plugin that supports accessibility in windowless mode at present.

In Windows 8, there are two new interfaces:
* IAccessibleWindowlessSite: Allows a windowless control to acquire object IDs for its exclusive use and to retrieve the parent accessible. http://msdn.microsoft.com/en-us/library/windows/desktop/hh448752%28v=vs.85%29.aspx
* IAccessibleWindowlessControl: Allows a windowless control to provide the accessible for a particular win event. http://msdn.microsoft.com/en-gb/subscriptions/hh448750
This is how IE 10 on Win8 makes windowless Flash accessible.

I'm not sure this can be applied to Firefox, as I'm not sure how the plugin would retrieve the IAccessibleWindowlessSite interface. I imagine this works nicely for ActiveX because it is COM-based. Perhaps a similar technique could be used, even if not COM-based. I know nothing of NPAPI, so I'm not sure. The advantage of inventing a different API is that this could work on earlier versions of Windows.

The technique works like this:
1. The plugin requests a range of object IDs from the browser.
2. If a caller asks the plugin's top level IAccessible for its parent, the caller asks the browser for the appropriate parent IAccessible and returns that.
3. The plugin fires all win events using object IDs in its acquired range.
4. When the browser receives WM_GETOBJECT with an object ID in a plugin's range, it requests an IAccessible from the relevant plugin, passing it the event parameters. It then returns that IAccessible to the caller.

Another option is to have all plugins implement a hidden HWND just for the purposes of firing and returning IAccessibles for win events. Some ATs may not like that though because it generally doesn't make sense to process events from hidden HWNDs. Also, there's still the problem of returning the correct parent IAccessible, which is broken even for windowed plugins (bug 646360).

Flash is dead. This is never going to happen.

Status: NEW → RESOLVED
Closed: Last year
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.