Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cab0b7e28656803df363cfdecec9624985665214
https://github.com/WebKit/WebKit/commit/cab0b7e28656803df363cfdecec9624985665214
Author: Tyler Wilcock <[email protected]>
Date: 2026-02-23 (Mon, 23 Feb 2026)
Changed paths:
A LayoutTests/accessibility/aria-owns-grid-parts-expected.txt
A LayoutTests/accessibility/aria-owns-grid-parts.html
M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
Log Message:
-----------
AX: VoiceOver isn't able to access aria-owned rows and their cells in grids /
tables
https://bugs.webkit.org/show_bug.cgi?id=306130
rdar://168770938
Reviewed by Joshua Hoffman.
This commit updates AccessibilityNodeObject::computeCellSlots() to look for and
handle aria-owned elements of the
table we are computing cell slots for, mostly fixing the bug. Even after this
though, I noticed VoiceOver still
wouldn't navigate into the table testcases in new test
aria-owns-grid-parts.html.
The reason for that was because we were returning an empty frame for the grid,
and VoiceOver generally ignores things
with an empty frame. This makes sense — the isolated tree gets geometry from
paint, and these grids have no actual DOM
children, just aria-owns children, so they don't have any meaningful geometry
from non-ARIA means.
Fix this by adding more robust frame fallbacks in
AXIsolatedObject::relativeFrame. The tests verify we don't return
an empty frame for any of these grids.
* LayoutTests/accessibility/aria-owns-grid-parts-expected.txt: Added.
* LayoutTests/accessibility/aria-owns-grid-parts.html: Added.
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::computeCellSlots):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::relativeFrame const):
Canonical link: https://commits.webkit.org/308087@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications