report busy indicator#13428
Conversation
Rather than test all 32 bits, just check the values NVDA maps from. Reduces IA states calculation to 18 comparisons Reduces IA2 states calculation to 10 comparisons
A fallback option if 'busy indicator' isn't accepted.
Edge Focus mode: 'loading busy indicator zero' Browse mode: 'loading busy indicator zero` Firefox Focus mode: 'loading busy indicator 50" Browse mode: 'loading busy indicator 50"
This comment was marked as outdated.
This comment was marked as outdated.
|
I am afraid this new role can create confusion. Is there a busy indicator object in one of the various interface specifications (IAccessible, UIA, etc.) From a user point of view, busy indicator may let think to the unrelated following concepts:
And overall, we lose the information that the "busy indicator" is actually a progress bar. In case of collaboration with a sighted person, this creates communication difficulties. I have not followed all the discussion but could the following solutions be implemented instead? |
Qchristensen
left a comment
There was a problem hiding this comment.
bsyind for Braille looks good.
seanbudd
left a comment
There was a problem hiding this comment.
Hi @feerrenrut,
I've added a couple of minor notes but otherwise LGTM.
Would you like a secondary review for the c++ code? It's a fairly straightforward change in my opinion.
Also, in case you missed it - a unit test needs fixing: https://ci.appveyor.com/project/NVAccess/nvda/builds/42786502/tests
This test exists to ensure each state/role has a display string, but I see that this is unnecessary for State.INDETERMINATE?
|
@CyrilleB79 These kinds of progress bars do not convey progress visually and they can be presented in lots of different ways.
These are related concepts. The main intent of an indeterminate progress bar is to reassure the user that something is happening, even though the amount of work / time remaining is unknown.
The main argument against is an indeterminate progress bar widgets do not convey progress, they have no 'value' attribute, so they can't. Announcing "progress bar working" is longer than it needs to be, the role is misleading and the state is redundant. Essentially, an indeterminate progress bar is a mono-state control. |
OK Thanks. Since you mention a great variety of presentations, the busy indicator makes sense. My last remaining concern is the situation where a progress bar transitions from half-checked (undeterminate) state to (determinate) value = 100%. That is, when a task is in progress without any estimation of the advancement and then is completed.
Should this situation be common, I think that the role change may be misleading from a user point of view. |
Yes, it could. This, would be author intent though, there may be valid reasons to want to do this.
I doubt it. It's certainly an edge case.
Currently, NVDA will report the final beep and "100%" (depending on the user's setting for presentation, progress bar output). |
This comment was marked as outdated.
This comment was marked as outdated.
Use in: - calculateNvdaStates - calculateNvdaRole Also correct IA2States -> IAStates.
Link to issue number:
fixes #10644
Summary of the issue:
On the web, widgets with
role="progressbar"and noaria-valuenoware reported by NVDA as "progress bar half checked zero".These widgets are exposed by the browser with:
ROLE_SYSTEM_PROGRESSBARSTATE_SYSTEM_MIXED, STATE_SYSTEM_INDETERMINATE.In chrome the value is always "0" in this case.
Note, in firefox, if
aria-valuetextis provided,STATE_SYSTEM_INDETERMINATEis not set andaccValuehas thearia-valuetext.Test cases on code pen editor, full
Description of how this pull request fixes the issue:
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.
Commits:
Value was exposed as the text node in the virtual buffer, in this case space is now used.
Testing strategy:
Test cases on code pen editor, full
Known issues with pull request:
None
Change log entries:
New features
Changes
Code Review Checklist: