UI Automation

UI Automation (UIA) is the modern accessibility API on Windows. The Chromium UIA provider is currently under development. It can be enabled via the --enable-features=UiaProvider browser command line switch.

Key Features

Clients and Providers

UI Automation exposes two different sets of interfaces. One is intended for clients such as assistive technologies and automation frameworks. The other is intended for providers such as UI widget frameworks and applications that render their own content. Chromium implements the UI Automation provider APIs.

Clients and providers do not talk directly to one another. Instead, the operating system gathers data from providers to present a unified tree view across all open applications to the client.

Further reading:

Views of the UI Automation tree

Clients have the ability to filter the UI Automation tree to various subsets of nodes. Tools such as Windows Narrator take advantage of this capability to skip over structural details that might be interesting to an automation framework but aren't relevant to a screen reader.

Providers can set two properties on a node to determine which views it appears in: IsControlElement and IsContentElement. Getting the value of these properties right is critical to ensuring assistive technologies can get the information they need. Despite the names, there are many cases where nodes that might not be considered a “control” should appear in the Control view of the tree. A good litmus test is: if there's a reason a screen reader might be interested in a node, it should appear in the control view.

Further reading:

TextPattern

In addition to the tree view, UI Automation exposes a linear reading view through an API known as TextPattern. This API allows a screen reader to navigate text in more natural ways - characters, words, sentences, paragraphs, pages - without worrying about the underlying tree structure. Windows Narrator relies heavily on TextPattern for reading.

Further reading: