New issue
Advanced search Search tips
Starred by 1 user

Issue metadata

Status: Fixed
Owner: ----
Closed: Jul 13
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug
Team-Accessibility



Sign in to add a comment

a11y Windows: live region changes repeated or spoken at inappropriate times

Project Member Reported by leberly@chromium.org, Oct 26 2017

Issue description

Chrome 64.0.3246.2 (Official Build) canary (64-bit) (cohort: Clang-64). 
Windows 10 Enterprise Version 1607 Build 14393.1770
NVDA 2017.3
JAWS 2018.1710.36 

NVDA reads things three times after pressing space to invoke the button in these live regions. 

# Load these two sample websites, attached, showing live regions in both assertive and polite configurations.  
# Start JAWS or NVDA depending on the tests. 
# Navigate to buttons, check verbalizations and the status indicated on the page below the buttons. 
# Press space bar to invoke the button
# Check verbalizations and the status indicated on the page below the buttons.

Results reported in a table, attached here: CRBug778478Results.html   

Expected: "When live regions are marked as polite, assistive technologies should announce updates at the next graceful opportunity, such as at the end of speaking the current sentence or when the user pauses typing. When live regions are marked as assertive, assistive technologies should notify the user immediately. Because an interruption may disorient users or cause them to not complete their current task, authors should not use the assertive value unless the interruption is imperative."






 
CRBug778478Results.html
2.2 KB View Download
live-polite.html
1.0 KB View Download
live-assertive.html
1.0 KB View Download
Description: Show this description
Status: Started (was: Available)
Cc: dmazz...@chromium.org
Even clicking or hovering over a live region causes the LIVE_REGION_CHANGED to be fired, and the screen reader to speak. 

This is because the event type is not provided in the call to AXTree::Unserialize(), which is called from BrowserAccessibilityManager::OnAccessibilityEvents(). When AXEventGenerator::OnAtomicUpdateFinished() is finally called from Unserialize(), it sees any batch of events like any other. So whether it's a click or an actual change, the LIVE_REGION_CHANGED event is called.



Summary: a11y Windows: live region changes repeated or spoken at inappropriate times (was: a11y Windows: message repeated twice after button press in live region)
Labels: -Pri-2 Pri-1
Think about: for text inserted/removed on a static text, only fire them if in an editable area. Or, perhaps change the way we compute old/new text.
Labels: win-a11y
Labels: live-regions
Owner: ----
Status: Available (was: Started)
Status: Fixed (was: Available)
I believe this was fixed by  crbug.com/785347  - can you test again?

In particular the part where the live regions were speaking when clicking or hovering should be fixed.

If there are remaining issues, maybe open a new bug - possibly lower priority?


Status: Available (was: Fixed)
Chrome 65.0.3295.0 (Official Build) canary (64-bit) 
NVDA 2017.4

Original repro steps still result in NVDA announcing data three times:
"""
Button was pressed: button-1
1 
1 
Button was pressed: button-2
2 
2 
"""
Project Member

Comment 12 by bugdroid1@chromium.org, Jul 11

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0d103e4761986c5f14e7b904ddf0b143fb1b6799

commit 0d103e4761986c5f14e7b904ddf0b143fb1b6799
Author: Aaron Leventhal <aleventhal@chromium.org>
Date: Wed Jul 11 23:45:09 2018

No removed or inserted text events on static text nodes

Fire only 1 set of text removed/inserted events,
only on the parent hypertext (not on the static text).
This helps avoid redundant live region change announcements.

Bug:  778478 
Change-Id: Ic68aab54d46c98576169ecb2146cd6414413e6ac
Reviewed-on: https://chromium-review.googlesource.com/1134199
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574410}
[modify] https://crrev.com/0d103e4761986c5f14e7b904ddf0b143fb1b6799/content/test/data/accessibility/event/live-region-change-expected-win.txt
[modify] https://crrev.com/0d103e4761986c5f14e7b904ddf0b143fb1b6799/content/test/data/accessibility/event/text-changed-expected-win.txt
[modify] https://crrev.com/0d103e4761986c5f14e7b904ddf0b143fb1b6799/ui/accessibility/platform/ax_platform_node_win.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Jul 12

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a32928f26183dce010284f0abcee28508e44a6f8

commit a32928f26183dce010284f0abcee28508e44a6f8
Author: Aaron Leventhal <aleventhal@chromium.org>
Date: Thu Jul 12 13:04:40 2018

Avoid incomplete live region text change announcements

When a live region change occurs we sometimes fire text change events
for only part of the text. For example, if "car" changes to "cat", we
fire an event that makes it look like only the "t" changed.

This changes the heuristic so that when a live region occurs that is
not in an editor, it will prefer to indicate that entire text nodes
have changed.

Bug:  778478 
Change-Id: If87f1ac8c9c0b237bd422e8b7217d8d0347a13ab
Reviewed-on: https://chromium-review.googlesource.com/1134201
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574545}
[modify] https://crrev.com/a32928f26183dce010284f0abcee28508e44a6f8/content/test/data/accessibility/event/description-change-indirect-expected-win.txt
[modify] https://crrev.com/a32928f26183dce010284f0abcee28508e44a6f8/content/test/data/accessibility/event/name-change-indirect-expected-win.txt
[modify] https://crrev.com/a32928f26183dce010284f0abcee28508e44a6f8/content/test/data/accessibility/event/text-changed-expected-win.txt
[modify] https://crrev.com/a32928f26183dce010284f0abcee28508e44a6f8/ui/accessibility/platform/ax_platform_node_win.cc
[modify] https://crrev.com/a32928f26183dce010284f0abcee28508e44a6f8/ui/accessibility/platform/ax_platform_node_win.h

Project Member

Comment 14 by bugdroid1@chromium.org, Jul 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c

commit 7b9a34fe818b75df53e0839fe9613ac7f0bccd0c
Author: Aaron Leventhal <aleventhal@chromium.org>
Date: Fri Jul 13 10:14:48 2018

Repeated live region announcements on Windows

NVDA is announcing live region text changes multiple times. Only fire
one type of live region event at a time.
- Name from attribute change (e.g. from alt, aria-label, aria-labelledby,
etc.): fire only a name change event.
- Text contents change: fire only text removed/inserted events.

Bug:  778478 
Change-Id: I7dd17217826fe2ba18bd2c921839bcf19f7d63cf
Reviewed-on: https://chromium-review.googlesource.com/1134021
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574875}
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/browser/accessibility/browser_accessibility_com_win.cc
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/description-change-indirect-expected-win.txt
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-add-expected-win.txt
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-expected-win.txt
[add] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-innerhtml-expected-mac.txt
[add] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-innerhtml-expected-win.txt
[add] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-innerhtml.html
[add] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-innertext-expected-mac.txt
[add] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-innertext-expected-win.txt
[add] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/live-region-change-innertext.html
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/name-change-indirect-expected-win.txt
[modify] https://crrev.com/7b9a34fe818b75df53e0839fe9613ac7f0bccd0c/content/test/data/accessibility/event/text-changed-expected-win.txt

Status: Fixed (was: Available)
We now fire 1 live region event for each change, and NVDA/JAWS will only speak the live region once. There were up to 4 per events fired before. In addition, we make sure to fire it with the complete text of the node now (e.g. if "car" changes to "cat" we fire it with the whole word, not just the "t" that changed).

Sign in to add a comment