-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update UIA aria-readonly mappings #203
Conversation
Closes #127 The UIA Implementation
As an aside, if you want to observe this mapping in Blink, you'll need to use Edge or run Chromium with UIAutomation enabled - the UIAutomation bridge will not map IA2 |
index.html
Outdated
@@ -7486,7 +7486,9 @@ <h4 id=ariaReadonlyTrue><code>aria-readonly</code>=<code>true</code></h4> | |||
<tr> | |||
<th><abbr title="User Interface Automation">UIA</abbr></th> | |||
<td> | |||
<span class="property">Property: <code>Value.IsReadOnly</code>: <code>true</code></span> | |||
<span class="property">Property: <code>Value.IsReadOnly</code>: <code>true</code>, if the element implements <a href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.automation.provider.ivalueprovider?view=windowsdesktop-7.0"><code>IValueProvider</code></a>.</span><br> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: Can we remove the "?view=windowsdesktop-7.0" parameters from the URLs? I counted 8 instances.
index.html
Outdated
<span class="property">Property: <code>Value.IsReadOnly</code>: <code>false</code></span> | ||
<span class="property">Property: <code>Value.IsReadOnly</code>: <code>false</code>, if the element implements <a href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.automation.provider.ivalueprovider?view=windowsdesktop-7.0"><code>IValueProvider</code></a>.</span><br> | ||
<span class="property">Property: <code>RangeValue.IsReadOnly</code>: <code>false</code>, if the element implements <a href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.automation.provider.irangevalueprovider?view=windowsdesktop-7.0"><code>IRangeValueProvider</code></a>.</span><br> | ||
<span class="property">Property: <code>AriaProperties.readonly</code>: <code>false</code>, if the element implements neither <a href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.automation.provider.ivalueprovider?view=windowsdesktop-7.0"><code>IValueProvider</code></a> or <a href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.automation.provider.irangevalueprovider?view=windowsdesktop-7.0"><code>IRangeValueProvider</code></a>.</span> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we absolutely certain about this? Our approach in Chromium is to always expose the AriaProperties in this property, regardless of whether it is already exposed in other more relevant UIA properties. I believe this is also what the documentation indicates as well: https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-ariaspecification#w3c-aria-states-and-properties-mapped-to-microsoft-active-accessibility-and-ui-automation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for that link - I got the impression from 4.3 Exposing attributes that do not directly map to accessibility API properties that AriaProperties
is supposed to be used purely to expose unsupported semantics. I guess I would be curious why these properties are exposed in AriaProperties
when there are UIAutomation mappings that described them just as well, but in any case it's probably best to just align with the with the UIAutomation documentation.
As an aside, I notice that there are a lot of properties in that link that seem to need AriaProperties
exposure, but aren't documented in the Core-AAM as such. I guess that's an issue we can address separately.
Edit: Ahh, I see - this is the problem you brought up here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Your interpretation of it is not wrong. 4.3 specifically says
When WAI-ARIA roles, states and properties do not directly map to an accessibility API, and there is a mechanism in the API to expose the WAI-ARIA role, states, and properties and their values, user agents MUST expose the WAI-ARIA data using that mechanism as follows
and later says
User agents MUST also expose the entire role string through this mechanism and MAY also expose WAI-ARIA attributes and values through this mechanism even when there is a direct mapping to an accessibility API.
In this case, I believe the UIA documentation is more restrictive than the Core-AAM one, but both can be respected if we add AriaProperties on all aria attributes.
Addressed comments - as you mentioned in the UIA |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Thank you, Sayan.
spectranaut marked as non substantive for IPR from ash-nazg. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great, thanks :)
I opened a new issue for the lack of AriaProperties entries: #209
SHA: 5490c20 Reason: push, by spectranaut Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Closes #127
I accidentally closed #192 messing around with my fork (woops), so I'm resubmitting - sorry for the trouble 🙁.
Duplicating the original PR's content here.
Preview | Diff