Improve speech output for UIA notifications, honoring all NotificationProcessing_* constants #16381
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
this is a prototype to see how NVDA's UIA notification support can be improved, both for the bennofit of UIA notifications in general, but also laying groundwork for supporting the proposed ariaNotify specification allowing web authors to instruct screen readers to speak messages without resorting to live regions: https://github.com/WICG/aom/blob/gh-pages/notification-api.md
Link to issue number:
None
Summary of the issue:
Currently, NVDA's speech output for UIA notifications is very basic in that it just cancels speech and then speaks the display string. It does not honor the importants, or whether only the most recent notification should be spoken etc.
NVDA should appropriately support all NotificationProcessing_* constants:
Description of user facing changes
NVDA now honors the importants of UI Automation notifications sent by applications.
Description of development approach
ui.message: add optional arguments:
UIA NvDAObject's event_UIA_notify: suitably map the UIA notificationProgress argument to appropriate values for speakOnlyMostRecentIfSameID and interuptCurrentIfSameID. Also map them to an appropriate speech priority. E.g.:
Testing strategy:
Private testing done, but will be outlined when browser prototypes become public.
Known issues with pull request:
this is a prototype draft. It is functional, but the code could be better abstracted.
Code Review Checklist: