chromium/docs/accessibility/browser/uiautomation.md

# UI Automation

[UI Automation (UIA)](https://docs.microsoft.com/en-us/windows/win32/winauto/entry-uiauto-win32)
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:

* [UI Automation Provider Programmer's Guide](https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-providerportal)
* [UI Automation Client Programmer's Guide](https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-clientportal)

### 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:

* [UI Automation Tree Overview](https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-treeoverview)

### 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:

* [Text and TextRange Control Patterns](https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-implementingtextandtextrange)