Skip to content
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

Support UI Automation in Microsoft Edge Chromium and Google Chrome #10555

Closed
codeofdusk opened this issue Nov 28, 2019 · 22 comments
Closed

Support UI Automation in Microsoft Edge Chromium and Google Chrome #10555

codeofdusk opened this issue Nov 28, 2019 · 22 comments
Assignees
Labels
api/uia Feature or bug requires an understanding of UIA app/chrome feature/browse-mode z app/edge (archived) use app/edge/anaheim
Milestone

Comments

@codeofdusk
Copy link
Contributor

codeofdusk commented Nov 28, 2019

Is your feature request related to a problem? Please describe.

When starting Chrome with the --enable-experimental-ui-automation flag, browse mode is not functional.

Describe the solution you'd like

Support for UIA Chrome, including browse mode and full functionality of all widgets.

Describe alternatives you've considered

Continue to use the IA2 implementation and forcibly ignore UIA (similar to #7497) if UIA becomes no longer behind a feature flag. However, UIA would likely improve performance on large pages.

@josephsl
Copy link
Collaborator

josephsl commented Nov 28, 2019 via email

@LeonarddeR
Copy link
Collaborator

I closed the other issue.

@Nikita34196
Copy link

The native UI Automation is enabled by default in microsoft edge starting with version 80.0.355.0 (Official Build) canary.

@LeonarddeR LeonarddeR changed the title Support UI Automation in Google Chrome Support UI Automation in Microsoft Edge Chromium and Google Chrome Dec 18, 2019
@LeonarddeR
Copy link
Collaborator

Even in the stable build of edge, UIA now turns out to be the default.

@Nikita34196
Copy link

I reported it to Microsoft. they said there should be UIA support on the nvda side. they also offer to turn it off manually, but not everyone knows how to do it. I don't think a lot of people will be able to turn it off in edge.

@LeonarddeR
Copy link
Collaborator

LeonarddeR commented Dec 18, 2019 via email

@Adriani90
Copy link
Collaborator

In Edge Cromium 81 which is the last stable version, UIA is enabled by default and browse mode seems to work as expected.
@codeofdusk can you confirm?

@codeofdusk
Copy link
Contributor Author

On my machine (Chrome 83) with the --enable-experimental-ui-automation flag, NVDA now seems to force IAccessible 2.

@josephsl
Copy link
Collaborator

josephsl commented Apr 19, 2020 via email

@codeofdusk
Copy link
Contributor Author

Makes sense, so this issue is still not resolved (we still need to implement support for UIA in Chrome).

@Adriani90
Copy link
Collaborator

CC: @feerrenrut after our private discussion I think this is maybe nice to keep an eye on for the future.

@feerrenrut feerrenrut added the z app/edge (archived) use app/edge/anaheim label May 1, 2020
@LeonarddeR
Copy link
Collaborator

Personally, I think a first pr should address two things:

  1. Ad a flag to NVDA's advanced settings to enforce IA2 in Edge and Chrome, which is enabled by default
  2. Implement a basic browse mode tree interceptor for UIA in Edge/Chrome that's active when UIA is used.

@codeofdusk
Copy link
Contributor Author

Ad a flag to NVDA's advanced settings to enforce IA2 in Edge and Chrome, which is enabled by default

Why enforce IA2? Wouldn't it make sense to make the flag be for enabling UIA, similar to Word and Windows Console?

@feerrenrut
Copy link
Contributor

For these feature flags its important to additionally include an explicit "use default" option, so for a binary decision, it becomes ternary:

  • The current NVDA default (most users should / will stay on this option) the outcome of this option can change in future. It may result in X in this release and Y in the next.
  • Explicitly X
  • Explicitly Y

This is particularly important if developers can foresee that the default setting may need to change. It allows developers to take the users explicit preferences into account during an upgrade procedure.

@codeofdusk
Copy link
Contributor Author

codeofdusk commented May 1, 2020

Yes, but like UIA console, don't expose this option in the GUI until it becomes default (compare the current checkbox to the combo box in #10964).

@feerrenrut
Copy link
Contributor

Yes, but like UIA console, don't expose this option in the GUI until it becomes default.

No. This does not solve the problem I outlined. It must be exposed in the GUI otherwise the user is missing one of the explicit choices. They are left with only:

  • Explicit X
  • Current default Y

If the user specifically wants to use Y until some amount of time after X has become the default doing this will break their config. To provide an effective update path you need three options for a binary setting:

  • Explicit X
  • Explicit Y
  • Current default (Y now, X later)

This allows those who just want the recommended settings to get them. Those who want to try the latest thing to do so, and those who want to stay on the "tried and true" as long as possible to do so also.

@k-kolev1985
Copy link

I don't know how important it is, but recently I was looking for the setting "Native UI Automation" in "edge://flags" in 64-bit Microsoft Edge Canary version 84.0.499.0 and did not find it by searching for "Native UI Automation" from within the provided search field. Could it be that the setting was removed and now UIA is the default and could not be changed as we could in the past? I don't know if this matters for this discussion, but I decided to share it with you just in case it does matter.

@LeonarddeR
Copy link
Collaborator

I will do so in #11079, though now it is still binary, and really broken if enabled. I actually followed @codeofdusk's suggestion and worded it positively towards UIA instead.

@LeonarddeR
Copy link
Collaborator

I implemented a prototype in #11079 that works somehow. However, it looks like browse mode is pretty broken in that it keeps bouncing all over the page in complexer documents. Therefore, I don't consider it good enough to go into a release build.

May be either @feerrenrut or @michaelDCurran could elaborate on what the current plans are with Chromium and UIA. I see several solution.

  1. Abandon this ticket for now and close Add advanced setting to allow UIA in chromium based browsers #11079. It could serve as a reference for future attempts
  2. Only keep the Add advanced setting to allow UIA in chromium based browsers #11079 part that adds the flag to advanced settings, but clearly document that browse mode is not available. While being useless for most people, I think this might serve developers to rapidly test the state of the UIA implementation in test builds of Edge.
  3. Keep this as is, of course with a code quality review, but clearly document that browse mode is far from usable yet and that this implementation only serves development of Edge/Chromium. It might be suitable for Edge and Chromium accessibility devs to test their implementation based on what NVDA expects from it.

@codeofdusk
Copy link
Contributor Author

I vote for option 3 if the freeze can be fixed.

@feerrenrut feerrenrut added the api/uia Feature or bug requires an understanding of UIA label May 2, 2020
@feerrenrut
Copy link
Contributor

Just to document it, and it might be handy to know about for UIA in Chrome is the docs for "Runtime two way IAccessible2 to UI Automation elements look up via unique id": https://chromium.googlesource.com/chromium/src/+/master/docs/accessibility/ia2_to_uia.md

@feerrenrut
Copy link
Contributor

Should have been closed with PR #12025

@feerrenrut feerrenrut added this to the 2021.1 milestone Feb 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api/uia Feature or bug requires an understanding of UIA app/chrome feature/browse-mode z app/edge (archived) use app/edge/anaheim
Projects
None yet
Development

No branches or pull requests

8 participants