[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