[webkit-changes] [WebKit/WebKit] 3f3fcd: AX: [Site Isolation] support hit testing
Joshua Hoffman
noreply at github.com
Fri Dec 6 16:24:37 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3f3fcdbd0b96c559b4de3a53c56aefe356c09653
https://github.com/WebKit/WebKit/commit/3f3fcdbd0b96c559b4de3a53c56aefe356c09653
Author: Joshua Hoffman <jhoffman23 at apple.com>
Date: 2024-12-06 (Fri, 06 Dec 2024)
Changed paths:
A LayoutTests/http/tests/site-isolation/accessibility/hit-test-resolving-remote-frame-expected.txt
A LayoutTests/http/tests/site-isolation/accessibility/hit-test-resolving-remote-frame.html
A LayoutTests/http/tests/site-isolation/accessibility/hit-test-returns-remote-frame-expected.txt
A LayoutTests/http/tests/site-isolation/accessibility/hit-test-returns-remote-frame.html
A LayoutTests/http/tests/site-isolation/resources/iframe.html
M LayoutTests/platform/ios/TestExpectations
M Source/WebCore/accessibility/AXCoreObject.cpp
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXRemoteFrame.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilityScrollView.cpp
M Source/WebCore/accessibility/AccessibilityScrollView.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/page/ChromeClient.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
M Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm
M Source/WebKit/WebProcess/WebPage/WebPage.cpp
M Source/WebKit/WebProcess/WebPage/WebPage.h
M Source/WebKit/WebProcess/WebPage/WebPage.messages.in
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
Log Message:
-----------
AX: [Site Isolation] support hit testing
https://bugs.webkit.org/show_bug.cgi?id=284144
rdar://141022733
Reviewed by Tyler Wilcock.
Two updates had to be made to hit testing to support site isolation/remote frames:
(1) Offset the hit test point by the remote frame offset.
(2) Return the remote frame, when applicable, from elementAccessibilityHitTest.
To validate hit testing works as expected, new AccessibilityUIElement APIs were added.
The first, `elementAtPointWithRemoteElementForTesting`, returns an AXRemoteElement
instead of a platform element, so that layout tests can check if something is a remote
element. The other, `elementAtPointResolvingRemoteFrameForTesting`, simulates how ATs
will resolve remote elements, by sending IPC messages to the remote frame via the UI
process. This method returns a debug string, to make validation easier.
Two new tests were added to verify hit testing behavior, using these new methods.
* LayoutTests/http/tests/site-isolation/accessibility/hit-test-resolving-remote-frame-expected.txt: Added.
* LayoutTests/http/tests/site-isolation/accessibility/hit-test-resolving-remote-frame.html: Added.
* LayoutTests/http/tests/site-isolation/accessibility/hit-test-returns-remote-frame-expected.txt: Added.
* LayoutTests/http/tests/site-isolation/accessibility/hit-test-returns-remote-frame.html: Added.
* LayoutTests/http/tests/site-isolation/resources/iframe.html: Added.
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::infoStringForTesting const):
* Source/WebCore/accessibility/AXCoreObject.h:
* Source/WebCore/accessibility/AXRemoteFrame.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::dbgInternal const):
(WebCore::AccessibilityObject::elementAccessibilityHitTest const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::accessibilityHitTest const):
* Source/WebCore/accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::addRemoteFrameChild):
* Source/WebCore/accessibility/AccessibilityScrollView.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(attributeValueForTesting):
(-[WebAccessibilityObjectWrapper accessibilityHitTest:]):
(-[WebAccessibilityObjectWrapper _accessibilityHitTest:returnPlatformElements:]):
(-[WebAccessibilityObjectWrapper accessibilityHitTestResolvingRemoteFrame:callback:]):
* Source/WebCore/page/ChromeClient.h:
(WebCore::ChromeClient::resolveAccessibilityHitTestForTesting):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resolveAccessibilityHitTestForTesting):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::resolveAccessibilityHitTestForTesting):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::resolveAccessibilityHitTestForTesting):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* Tools/WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::elementAtPointWithRemoteElementForTesting):
(WTR::elementAtPointResolvingRemoteFrameForTesting):
(WTR::AccessibilityUIElement::isRemoteFrame const):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::attributeValue):
(WTR::AccessibilityUIElement::elementAtPointWithRemoteElementForTesting):
(WTR::AccessibilityUIElement::elementAtPointResolvingRemoteFrameForTesting):
(WTR::AccessibilityUIElement::isRemoteFrame const):
Canonical link: https://commits.webkit.org/287474@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list