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

UIA API versioning #8182

Closed
codeofdusk opened this issue Nov 6, 2020 · 4 comments
Closed

UIA API versioning #8182

codeofdusk opened this issue Nov 6, 2020 · 4 comments
Assignees
Labels
Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Needs-Tag-Fix Doesn't match tag requirements Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Resolution-Won't-Fix We're just really obstinate about this. There's probably a good reason.

Comments

@codeofdusk
Copy link
Contributor

Description of the new feature/enhancement

Since its initial implementation, UIA in conhost has had various levels of completeness and bugginess. To account for this, NVDA must slightly change its behaviour for the various versions. Selected examples:

Historically, NVDA has checked the Windows build number to determine which workarounds were needed. However, since newer OpenConsole can be run on older Windows, this is no longer sufficient. NVDA should be able to check which version of conhost is in use, perhaps by an API version (incremented for breaking UIA changes) in the automation ID for the text area.

Proposed technical implementation details (optional)

  • The automation ID is set in ScreenInfoUiaProviderBase::GetPropertyValue().
  • Note: You might consider localizing the name set in this function. NVDA specifically ignores the console's name (as it isn't localized and unnecessary for us), but other screen readers (such as Narrator) might not.
@codeofdusk codeofdusk added the Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. label Nov 6, 2020
@ghost ghost added Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Needs-Tag-Fix Doesn't match tag requirements labels Nov 6, 2020
@DHowett
Copy link
Member

DHowett commented Nov 6, 2020

Is this a common way to version UIA support in an application? I'd rather not do something strange that nobody else does here...

@DHowett
Copy link
Member

DHowett commented Nov 6, 2020

We also do not officially recommend running OpenConsole anywhere but "on your dev machine, for a short period of time". It's not supported and likely won't be until a while after #7414 lands in the OS.

@codeofdusk
Copy link
Contributor Author

The docs say:

An AutomationId is not necessarily guaranteed to be stable across different releases or builds of an application.

If not the AutomationId, how then can we detect different builds of the console?

For whatever it's worth, @carlos-zamora and I discussed this (offline) and he supported the idea...

@DHowett
Copy link
Member

DHowett commented Nov 20, 2020

I wrote up a few of my thoughts on the versioning issue here: nvaccess/nvda#11796 (comment)

In short, Joseph suggests that we shouldn't use the automation ID for a version, and I explain a little bit about our philosophy on conhost/openconsole versioning.

I'm gonna reject this one for now, but as always I am willing to hear more info on it 😄

@DHowett DHowett added the Resolution-Won't-Fix We're just really obstinate about this. There's probably a good reason. label Nov 20, 2020
@DHowett DHowett closed this as completed Nov 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Needs-Tag-Fix Doesn't match tag requirements Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Resolution-Won't-Fix We're just really obstinate about this. There's probably a good reason.
Projects
None yet
Development

No branches or pull requests

3 participants