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

UIAHandler: Do not use UIA for Chrome_RenderWidgetHostHWND windows #10675

Merged
merged 2 commits into from Jan 13, 2020

Conversation

@michaelDCurran
Copy link
Contributor

michaelDCurran commented Jan 13, 2020

This is based on beta as Edge (with Chrome) will become stable very soon.

Link to issue number:

Fixes #10638

Summary of the issue:

The new Microsoft Edge browser (that uses Chrome) has turned on their UI automation implementation by default. However, NVDA seems to freeze when accessing document content in the browser. Although these freezes should be addressed, they do seem specifically related to the UIA implementation in Chrome, and NvDA already works very well with the existing IAccessible2 implementation, thus NVDA for now should avoid using UIA for any Chromium document content.

Description of how this pull request fixes the issue:

NVDA now refuses to use UIA coming from any window with a class of Chrome_RenderWidgetHostHWND, thus falling back to IAccessible2 for any Chroium document content.
Note that in Edge, the outer chrome (address bar etc) will still use UIA, but documents themselves will use IAccessible2.

Testing performed:

Launched Edge dev with its UIA implementation enabled. Visited www.nvaccess.org/. Ensured that once the document loaded, NVDA started reading the document, and the user could move around the document in browse mode, and interact with links etc.

Known issues with pull request:

None.

Change log entry:

None needed.

… their UIA implementation is not complete, and our IA2 support for Chrome is much better.
@michaelDCurran michaelDCurran requested review from leonardder and feerrenrut Jan 13, 2020
@AppVeyorBot

This comment has been minimized.

Copy link

AppVeyorBot commented Jan 13, 2020

See test results for failed build of commit c37d4e4288

@josephsl

This comment has been minimized.

Copy link
Collaborator

josephsl commented Jan 13, 2020

Hi,

At least this workaround works - tested independently via an "msedge" app module with isBadUIAWindow told to return True if the offending window class is found.

Thanks.

Copy link
Collaborator

leonardder left a comment

Looks good to me. Interesting to see that the IA2 interfaces are still available on the IA objects even when UIA is enforced within Edge or Chrome.

I think that performance wise, IA2 will still be preferred for a long time, so I'd like to suggest reintroducing native UIA support gradually, hidden behind a test flag.

@michaelDCurran michaelDCurran merged commit b8347bd into beta Jan 13, 2020
1 check passed
1 check passed
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
@nvaccessAuto nvaccessAuto added this to the 2019.3 milestone Jan 13, 2020
@Brian1Gaff

This comment has been minimized.

Copy link

Brian1Gaff commented Jan 13, 2020

@gdata1

This comment has been minimized.

Copy link

gdata1 commented Jan 17, 2020

Hello. will there be UIA support in the future? I noticed that when i use it, nvda reads more data with a mouse. I tested different versions of edge and different versions of nvda. nvda 2019.2 despite freezing reads more with your mouse If you're on the "Native UI Automation. alpha-19498,669ae5ac reads very poorly. I tested the 81.0.395.0 canary version and the stable version. that's why I think it's important that nvda support the "Native UI Automation" because in some scenarios its behavior is better.

@josephsl

This comment has been minimized.

Copy link
Collaborator

josephsl commented Jan 17, 2020

@gdata1

This comment has been minimized.

Copy link

gdata1 commented Jan 17, 2020

@josephsl I hope so, too. The reason I described above. The new edge and chrome have problems with nvda when navigating with a mouse. UI Automation improves this experience. Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
7 participants
You can’t perform that action at this time.