2

Accessibility Insights for Windows shows the following property:

ControlType Group(50026)

when I hover over a search box that is an <input /> html tag.
I used Google Chrome Version 80.0.3987.87 (Official Build) (64-bit).

How does AI4W determine the control type of the html tag?

The accessibility insights doc says the control type is a concept from the Microsoft UI automation accessibility framework. You can look up the 50026 id for Group on this reference page.

It is not yet clear to me how AI4W determined the exact control type. I suspect Chrome implements a Client-Side (Proxy) UI Automation Provider but I am not sure about it. If it does, how does the implementation deduce the control types?

Related questions:

Konrad Jamrozik
  • 3,254
  • 5
  • 29
  • 59

2 Answers2

1

As described on this Chrome accessibility page, Chrome exposes HTML and ARIA control types/roles through an accessibility API called IAccessible2.

As of Windows 10.0.1903, Windows translates IAccessible2 into UIA. I was unable to find any documentation which specifically describes the mapping of IAccessible and IAccessible2 roles to UIA control types, but it is probably very close to the mapping recommended by the W3C.

Accessibility Insights displays the UIA control type after Windows has converted the IAccessible2 data to UIA.

Rob Gallo
  • 21
  • 2
  • Rob, thank you for your answer. If you don't mind I will accept my own answer, as it builds upon yours, adding some useful information. – Konrad Jamrozik Mar 03 '20 at 20:35
0

To add to Rob Gallo's answer:

To determine the exact accessibility provider used by the browser:

  1. Start Accessibility Insights for Windows.
  2. Select live inspect and point to element of interest.
  3. Set the tool to always show following properties: FrameworkId and ProviderDescription (use the cogwheel in upper right of pane containing the Properties table).
  4. Observe the value.

For example, this:

FrameworkId: Chrome 
ProviderDescription: [pid:33748,providerId:0x0 Main(parent link):Microsoft: MSAA Proxy (IAccessible2) (unmanaged:UIAutomationCore.DLL)]

means that UIA is translating to its format the data exposed by Chrome as IAccessible2, as explained in UI Automation: An Incomplete Guide for UI builders – Part 1. There are more possible UIA providers even when using the same browser. Knowing the right UIA provider is required for root causing problems with the UIA hierarchy. See the linked article for details.

In addition, the HTML Accessibility API Mappings 1.0 spec section on accessibility APIs links to UI Automation for W3C Accessible Rich Internet Applications Specification which explains specified ControlTypes for given ARIA roles, which are defined in this spec (v1.1).

A good article providing additional context for this discussion: https://sarahmhigley.com/writing/roles-and-relationships/

Konrad Jamrozik
  • 3,254
  • 5
  • 29
  • 59