Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a90848164db6573df50ccfbb8e145f8e03c3c216
https://github.com/WebKit/WebKit/commit/a90848164db6573df50ccfbb8e145f8e03c3c216
Author: Tyler Wilcock <[email protected]>
Date: 2026-07-15 (Wed, 15 Jul 2026)
Changed paths:
A LayoutTests/accessibility/ios-simulator/iframe-exit-traversal-expected.txt
A LayoutTests/accessibility/ios-simulator/iframe-exit-traversal.html
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
Log Message:
-----------
AX: iOS VoiceOver can't swipe past the last element inside iframes or render
a cursor for iframe content
https://bugs.webkit.org/show_bug.cgi?id=319459
rdar://179279930
Reviewed by Chris Fleizach.
With ENABLE(ACCESSIBILITY_LOCAL_FRAME), each frame gets its own AXObjectCache
and
an iframe's root AccessibilityScrollView reports isRoot() == true, so its
parentObject() returns null. On iOS, -[WebAccessibilityObjectWrapper
accessibilityContainer] climbed the tree with the non-cross-frame
parentObjectUnignored(), which therefore dead-ended at the iframe root
This broken link means it can neither advance past the last iframe element
nor resolve the view/window needed to draw its focus cursor.
Fix accessibilityContainer to ascend with crossFrameParentObjectUnignored(),
matching macOS. It crosses the local frame boundary at the iframe root and
behaves identically to parentObjectUnignored() elsewhere and when the flag is
off.
* LayoutTests/accessibility/ios-simulator/iframe-exit-traversal-expected.txt:
Added.
* LayoutTests/accessibility/ios-simulator/iframe-exit-traversal.html: Added.
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityContainer]):
Canonical link: https://commits.webkit.org/317285@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications