Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 199c27a50c096c48bd68cdc6ac692776cc4a8141
https://github.com/WebKit/WebKit/commit/199c27a50c096c48bd68cdc6ac692776cc4a8141
Author: Tyler Wilcock <[email protected]>
Date: 2026-02-07 (Sat, 07 Feb 2026)
Changed paths:
M LayoutTests/accessibility/ios-simulator/focus-change-notifications.html
A
LayoutTests/http/tests/site-isolation/accessibility/focus-in-remote-frame-expected.txt
A
LayoutTests/http/tests/site-isolation/accessibility/focus-in-remote-frame.html
A
LayoutTests/http/tests/site-isolation/resources/iframe-with-text-input.html
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXLogger.cpp
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
M Source/WebCore/accessibility/AXUtilities.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp
M Source/WebCore/accessibility/cocoa/AXCoreObjectCocoa.mm
M Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/accessibility/playstation/AXObjectCachePlayStation.cpp
M Source/WebCore/accessibility/win/AXObjectCacheWin.cpp
M Source/WebCore/page/FocusController.cpp
M Source/WebCore/page/Frame.h
M Source/WebCore/page/LocalFrame.h
M Source/WebCore/page/RemoteFrame.cpp
M Source/WebCore/page/RemoteFrame.h
M Source/WebCore/page/cocoa/PageCocoa.mm
M Source/WebCore/platform/ScrollView.h
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h
M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
Log Message:
-----------
AX: VoiceOver typing echo doesn't work in remote frames with site isolation
enabled
https://bugs.webkit.org/show_bug.cgi?id=306807
rdar://169478834
Reviewed by Joshua Hoffman.
Prior to this commit, VoiceOver typing echo didn't work in remote frames
with site isolation enabled. This happened because when focus moved into
a remote frame, the hosting web content process didn't denote its
focused UI element to be the AXRemoteFrame, instead simply returning its
own web area. This meant that VoiceOver and other ATs didn't know they
needed to traverse to another process to find the true deepest focus UI
element, in turn also preventing them from registering for notifications
on the remote web content process.
This commit adds various debugging utilities and methods that were
useful to me when working on this.
* LayoutTests/accessibility/ios-simulator/focus-change-notifications.html:
Update test to not expect notifications on a certain element. This only
implicitly worked before, relying on the fact
that calling AXObjectCache::get() (not getOrCreate) via DOM ancestry traversal
only succeeded for the web area.
*
LayoutTests/http/tests/site-isolation/accessibility/focus-in-remote-frame-expected.txt:
Added.
*
LayoutTests/http/tests/site-isolation/accessibility/focus-in-remote-frame.html:
Added.
* LayoutTests/http/tests/site-isolation/resources/iframe-with-text-input.html:
Added.
* Source/WebCore/accessibility/AXCoreObject.h:
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXNotificationWithData::debugDescription const):
(WebCore::AXObjectCache::focusedObjectForLocalFrame):
(WebCore::AXObjectCache::setIsolatedTreeFocusedObject):
(WebCore::AXObjectCache::onFocusChange):
(WebCore::AXObjectCache::handleFocusedUIElementChanged):
(WebCore::AXObjectCache::onRemoteFrameGainedFocus):
(WebCore::AXObjectCache::handleRemoteFrameGainedFocus):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::handleDeferredNotification):
(WebCore::AXObjectCache::treeData):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXTreeData::dumpToStderr const):
(WebCore::AriaNotifyData::debugDescription const):
(WebCore::LiveRegionAnnouncementData::debugDescription const):
* Source/WebCore/accessibility/AXUtilities.h:
* Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp:
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
* Source/WebCore/accessibility/cocoa/AXCoreObjectCocoa.mm:
(WebCore::AXCoreObject::platformElement const):
* Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm:
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityFocusedUIElement]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::isDefaultValue):
(WebCore::AXIsolatedObject::crossFrameParentObject const):
(WebCore::AXIsolatedObject::crossFrameChildObject const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::treeForFrameIDAlreadyLocked):
* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityFocusedUIElement]):
(-[WebAccessibilityObjectWrapper debugDescription]):
* Source/WebCore/accessibility/playstation/AXObjectCachePlayStation.cpp:
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
* Source/WebCore/accessibility/win/AXObjectCacheWin.cpp:
(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):
* Source/WebCore/page/FocusController.cpp:
(WebCore::FocusController::setFocusedFrame):
* Source/WebCore/page/Frame.h:
* Source/WebCore/page/LocalFrame.h:
* Source/WebCore/page/RemoteFrame.cpp:
(WebCore::RemoteFrame::debugDescription const):
* Source/WebCore/page/RemoteFrame.h:
* Source/WebCore/page/cocoa/PageCocoa.mm:
(WebCore::Page::platformInitialize):
* Source/WebCore/platform/ScrollView.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::printAccessibilityTreeForLiveDocumentsAfterDelay):
(WebCore::printAccessibilityTreeForLiveDocuments):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::accessibilityFocusedUIElement):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
(WTR::AccessibilityUIElement::isRemotePlatformElement const):
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.h:
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElementMac::isRemoteFrame const):
(WTR::AccessibilityUIElementMac::isRemotePlatformElement const):
Canonical link: https://commits.webkit.org/307008@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications