Report busy indicator (PR #13428)
Fixes #10644
Summary:
On the web, widgets with `role="progressbar"` and no `aria-valuenow` were reported by NVDA as "progress bar half checked zero".
These widgets are exposed by the browser with:
- IAccessible accRole `ROLE_SYSTEM_PROGRESSBAR`
- IAccessible accState `STATE_SYSTEM_MIXED, STATE_SYSTEM_INDETERMINATE`.
In chrome accValue is always "0" in this case.
Note, in firefox, if `aria-valuetext` is provided, `STATE_SYSTEM_INDETERMINATE` is not set and `accValue` has the `aria-valuetext`.
Changes:
An 'indeterminate' progress bar has no value attribute, it can not convey progress, only activity.
Rather than reporting as a progress bar it is given a new NVDA role of "busy indicator" and its value ("zero") is no longer reported.
Technical details.
- Code to convert decode the bit flags (integer) supplied by IA / IA2 into a set of NVDA States was repeated, this has been extracted to a function, centralized in IAccessibleHandler, and optimized.
- accValue was used as the text node in the virtual buffer, now for this case , " " (space) is used.