Tables with an intermediary block frame element confuse VoiceOver.
Categories
(Core :: Disability Access APIs, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox84 | --- | verified |
People
(Reporter: MarcoZ, Assigned: MarcoZ)
References
Details
(Whiteboard: [Mac2020_2])
Attachments
(2 files)
Found while investigating Google Drive, see bug 1676339. Steps:
- Open
data:text/html,<div role="table"><span style="display: block;"><div role="row"><div role="cell">Cell 1</div><div role="cell">Cell 2</div></div></span><span style="display: block;"><div role="row"><div role="cell">Cell 3</div><div role="cell">Cell 4</div></div></span></div>
. - Investigate this with VoiceOver.
- Expected: VoiceOver should read all four cells in both rows.
- Actual: VoiceOver announces that this is a table with two rows and two columns, which is correct, but then only reads the first row and then cannot move any further to the second row.
Google Drive inserts an intermediary block frame element between the table and table rows using its c-wiz
tag which is some prorietary JavaScript framework thing. However, the above test case reproduces the bug the same way.
The same is true for some level deeper, between the table cells and table row. The consequences here are not as severe, though, only causes a lot of groupings that one has to go into and out of with VoiceOver.
Assignee | ||
Comment 1•4 years ago
|
||
Jamie, I was thinking that such block level elements in such particular cases could be treated like presentational accessibles. We do have our own boundaries because of the table rows anyway, so stripping these from the a11y tree does sound like a reasonable measure, or would you disagree?
Assignee | ||
Comment 2•4 years ago
|
||
Updated•4 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
Depends on D96532
Updated•4 years ago
|
Comment 4•4 years ago
|
||
It's not unreasonable, but it's worth noting that while this would fix this particular case, it doesn't fix the underlying problem, which is that VoiceOver (or is it our Mac implementation?) can't handle intermediate Accessibles in tables. So, for example, if you add tabindex="-1" to those block spans, we absolutely shouldn't treat those as presentational... but that'll still break VoiceOver. And while you can argue an author shouldn't use tabindex="-1" in such a silly place, there are other ways an Accessible might be forced here; e.g. a scrollable area or a title attribute.
I'd be interested to know what Chrome and Safari do for this case:
data:text/html,<div role="table"><span tabindex="-1" style="display: block;"><div role="row"><div role="cell">Cell 1</div><div role="cell">Cell 2</div></div></span><span style="display: block;" tabindex="-1"><div role="row"><div role="cell">Cell 3</div><div role="cell">Cell 4</div></div></span></div>
Chrome on Windows does expose Accessibles for the spans in this case.
Comment 6•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/3de7612b6c50
https://hg.mozilla.org/mozilla-central/rev/ef4c4a545e35
Updated•4 years ago
|
Comment 7•4 years ago
|
||
Reproduced the issue with Firefox 84.0a1 (20201110220109) on macOS 10.12 and STR from comment 0.
The issue is verified with Firefox 84.0b3 (20201119195818) on macOS 10.12. All the cells are readable using VoiceOver.
Description
•