Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7fc011a98165013068d21d572cb7f3bb7795a939
https://github.com/WebKit/WebKit/commit/7fc011a98165013068d21d572cb7f3bb7795a939
Author: Tyler Wilcock <[email protected]>
Date: 2026-06-26 (Fri, 26 Jun 2026)
Changed paths:
A
LayoutTests/accessibility/mac/local-frame-presentational-iframe-content-expected.txt
A
LayoutTests/accessibility/mac/local-frame-presentational-iframe-content.html
A LayoutTests/accessibility/resources/presentational-iframe-content.html
M Source/WebCore/accessibility/AXCoreObject.cpp
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
Log Message:
-----------
AX: VoiceOver cannot reach the content of a presentational local iframe
https://bugs.webkit.org/show_bug.cgi?id=317808
rdar://179822336
Reviewed by Dominic Mazzoni.
With ENABLE(ACCESSIBILITY_LOCAL_FRAME), a presentational iframe's frame root --
an
accessibility-ignored AXScrollArea -- was spliced into the host frame as-is,
which
causes trouble for VoiceOver and other ATs, since it resulted in a parent-child
mismatch in the accessibility tree, and leaves the iframe with no reachable
parent.
Fix this by hoisting the ignored iframes content in the accessibility
tree rather than exposing the ignored iframe root in the tree directly.
In the isolated tree, cache the cross-frame parent linkage in the always-run
base-property path (an ignored root skips the needsAllProperties branch that
set it),
and have crossFrameUnignoredChildrenInRange() delegate to
crossFrameUnignoredChildren()
for cross-frame hosts -- detected via a cached hasCrossFrameChild flag --
keeping the
cheap ranged slice otherwise.
*
LayoutTests/accessibility/mac/local-frame-presentational-iframe-content-expected.txt:
Added.
* LayoutTests/accessibility/mac/local-frame-presentational-iframe-content.html:
Added.
* LayoutTests/accessibility/resources/presentational-iframe-content.html: Added.
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::crossFrameUnignoredChildren):
(WebCore::AXCoreObject::crossFrameParentObjectUnignored const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::ensureCachedUnignoredChildren):
(WebCore::AXIsolatedObject::crossFrameUnignoredChildrenInRange):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::createIsolatedObjectData):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(handleParentAttribute):
Canonical link: https://commits.webkit.org/315933@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications