I some comments to the code review, but I'll summarize the API pieces for those following here.
The main issue is that I think there's a little too much overloading going on: * ControlInfo feels like it should be split into more concrete subtypes with separate parameters. * onOpen/Close should be split into onWindowOpen/onMenuOpen, etc. * type parameters should use a formal enum Erik On Wed, Dec 16, 2009 at 10:20 PM, Erik Kay <erik...@chromium.org> wrote: > +chromium-dev > > On Wed, Dec 16, 2009 at 1:15 PM, Dominic Mazzoni <dmazz...@google.com>wrote: > >> Hi, >> >> Here's an experimental proposal I'd like to throw out there. All types of >> suggestions, criticism, and questions are welcome. >> >> - Dominic >> * >> * >> *Overview* >> This experimental API exposes information about focused controls in the >> native ui, like dialog boxes and the location bar. Specifically, it allows >> an extension to determine the current focused control and listen to events >> such as changing focus, selecting controls, and text editing. It optionally >> allows for generating keyboard events, too. >> >> Existing screenreaders on Mac, Windows, and Linux do a good job of >> exposing simple dialog boxes, but a poor job of exposing complicated web >> pages. Javascript-based screenreaders can often provide much better support >> for browsing the web, but are poor at exposing the user interface of the >> browser. This solution empowers javascript-based screenreaders. >> >> *Use cases* >> 1. Build a complete screenreader as a Chrome extension, similar to the >> "FireVox" screenreader for Firefox (see http://www.firevox.clcworld.net/). >> This would enable developers to create custom accessibility solutions for >> people with all sorts of special needs, using JavaScript, that will run on >> Chrome on any platform. >> >> 2. Enable pure-javascript testing of browser user-interface elements, like >> interacting with controls in a dialog box. This could potentially simplify >> some ui tests. >> >> *Could this API be part of the web platform?* >> No. >> >> *Do you expect this API to be fairly stable?* >> Yes. >> >> *What UI does this API expose?* >> It does not have a UI of its own. >> >> *How could this API be abused?* >> I hope that exposing information about focused controls and listening to >> focus and text editing events should not be risky; most of the information >> in these controls is already exposed via other APIs. >> >> Enabling automation of keyboard events is risky; a malicious extension >> could control the user's browser. This should only be enabled for trusted >> extensions or via a flag. >> * >> **How would you implement your desired features if this API didn't exist? >> *** >> The only way to provide accessibility or UI automation now requires >> writing platform-specific, low-level code that is beyond the reach of most >> developers. This API could enable new innovation in accessibility. >> >> *Are you willing and able to develop and maintain this API?* >> Yes. >> >> *Draft API spec* >> This changelist contains the API spec and an implementation that exposes >> information about most of the controls in the Options dialog for GTK: >> http://codereview.chromium.org/402099 >> * >> * >> In a nutshell, the proposed API exposes two functions: >> * getFocusedControl >> * simulateKeyPress >> >> and five events: >> * onOpen (for a dialog or context menu, for example) >> * onClose >> * onFocus >> * onSelect >> * onText >> >> Accessibility APIs such as MSAA on Windows are significantly more >> complicated than this, as they need to support a huge range of possible >> applications, including applications that were not designed with >> accessibility in mind. The main reason that this API can be much simpler is >> that we assume that the entire user interface is already accessible via the >> keyboard (or should be). Instead of allowing tools to traverse the user >> interface hierarchy and determine how it should be presented to a disabled >> user, we can just expose information about the control the user has >> navigated to using the existing keyboard commands. >> * >> * >> > > -- Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev