Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: bf8ea4b7402a86e47e7734bd03d1d210ac4ae9d8
https://github.com/WebKit/WebKit/commit/bf8ea4b7402a86e47e7734bd03d1d210ac4ae9d8
Author: Tyler Wilcock <[email protected]>
Date: 2026-03-17 (Tue, 17 Mar 2026)
Changed paths:
A
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame-expected.txt
A
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame.html
A
LayoutTests/http/tests/site-isolation/accessibility/resources/iframe-with-list-mock-parent-search.html
M Source/WebCore/accessibility/AXCrossProcessSearch.cpp
M Source/WebCore/accessibility/AXCrossProcessSearch.h
M Source/WebCore/testing/Internals.cpp
M Source/WebCore/testing/Internals.h
M Source/WebCore/testing/Internals.idl
Log Message:
-----------
AX: VoiceOver next element searches loop when encountering the end of a
container (e.g. a list) inside a site-isolated iframe
https://bugs.webkit.org/show_bug.cgi?id=309453
rdar://172029151
Reviewed by Joshua Hoffman.
When a cross-origin child frame performs an immediateDescendantsOnly search
(e.g. like VoiceOver when navigating the children of a ul), the parent frame
has nothing to contribute, as it's clearly not an immediate descendant. But
prior to this fix, we returned the results of the parent search, causing
VoiceOver to loop infinitely thinking the ul-container was never exhausted.
The fix is simple: skip the parent dispatch when immediateDescendantsOnly is
set.
Add mock-parent-search testing infrastructure to verify this without real
cross-process IPC (which deadlocks in the test runner).
*
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame-expected.txt:
Added.
*
LayoutTests/http/tests/site-isolation/accessibility/client/search-immediate-descendants-in-remote-frame.html:
Added.
*
LayoutTests/http/tests/site-isolation/accessibility/resources/iframe-with-list-mock-parent-search.html:
Added.
* Source/WebCore/accessibility/AXCrossProcessSearch.cpp:
(WebCore::setShouldMockParentSearchResultsForTesting):
(WebCore::shouldMockParentSearchResultsForTesting):
(WebCore::performSearchWithParentCoordination):
* Source/WebCore/accessibility/AXCrossProcessSearch.h:
* Source/WebCore/testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setShouldMockParentSearchResultsForTesting):
* Source/WebCore/testing/Internals.h:
* Source/WebCore/testing/Internals.idl:
Canonical link: https://commits.webkit.org/309426@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications