[webkit-changes] [WebKit/WebKit] 9a0be8: AX: Support site isolation for VoiceOver
Chris Fleizach
noreply at github.com
Sun Feb 18 15:17:38 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9a0be8b71b1ed3873c736b949ec813522a192aef
https://github.com/WebKit/WebKit/commit/9a0be8b71b1ed3873c736b949ec813522a192aef
Author: Chris Fleizach <cfleizach at apple.com>
Date: 2024-02-18 (Sun, 18 Feb 2024)
Changed paths:
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXLogger.cpp
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
A Source/WebCore/accessibility/AXRemoteFrame.cpp
A Source/WebCore/accessibility/AXRemoteFrame.h
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilityScrollView.cpp
M Source/WebCore/accessibility/AccessibilityScrollView.h
M Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
M Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/loader/EmptyClients.cpp
M Source/WebCore/loader/EmptyFrameLoaderClient.h
M Source/WebCore/loader/LocalFrameLoaderClient.h
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/RemoteFrame.cpp
M Source/WebCore/page/RemoteFrame.h
M Source/WebCore/page/RemoteFrameClient.h
M Source/WebKit/UIProcess/PageClient.h
M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
M Source/WebKit/UIProcess/ProvisionalPageProxy.h
M Source/WebKit/UIProcess/WebFrameProxy.cpp
M Source/WebKit/UIProcess/WebFrameProxy.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebPageProxy.messages.in
M Source/WebKit/UIProcess/ios/PageClientImplIOS.h
M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
M Source/WebKit/UIProcess/mac/PageClientImplMac.h
M Source/WebKit/UIProcess/mac/PageClientImplMac.mm
M Source/WebKit/UIProcess/mac/WebPageProxyMac.mm
M Source/WebKit/UIProcess/mac/WebViewImpl.h
M Source/WebKit/UIProcess/mac/WebViewImpl.mm
M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h
M Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.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 Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h
M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
M Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm
M Source/WebKit/WebProcess/WebProcess.cpp
M Source/WebKit/WebProcess/WebProcess.h
M Source/WebKit/WebProcess/WebProcess.messages.in
M Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm
M Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
Log Message:
-----------
AX: Support site isolation for VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=268804
rdar://99665561
Reviewed by Andres Gonzalez, Tyler Wilcock.
Initial support for site isolation for VoiceOver.
When a scroll view hosts a RemoteFrame it binds itself to the other side through a WebPage message.
This transfers data tokens so Accessibility remote elements are created and hooked up.
The bounding boxes inside the sub frames need to have the initial offset applied and then need to be converted
each step up the chain to account for scroll offsets that only each process knows about.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::accessibilityRoleToString):
(WebCore::AXCoreObject::isRemoteFrame const):
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::streamAXCoreObject):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::create):
(WebCore::AXObjectCache::onRemoteFrameInitialized):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AXRemoteFrame.cpp: Copied from Source/WebCore/page/RemoteFrameClient.h.
(WebCore::AXRemoteFrame::create):
(WebCore::AXRemoteFrame::elementRect const):
* Source/WebCore/accessibility/AXRemoteFrame.h: Copied from Source/WebCore/page/RemoteFrameClient.h.
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::relativeFrame const):
(WebCore::AccessibilityObject::remoteParentObject const):
(WebCore::AccessibilityObject::remoteFrameOffset const):
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::addAttachmentChildren):
(WebCore::AccessibilityRenderObject::addChildren):
* Source/WebCore/accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::detachRemoteParts):
(WebCore::AccessibilityScrollView::clearChildren):
(WebCore::AccessibilityScrollView::addRemoteFrameChild):
(WebCore::AccessibilityScrollView::addChildren):
(WebCore::AccessibilityScrollView::webAreaObject const):
(WebCore::AccessibilityScrollView::document const):
(WebCore::AccessibilityScrollView::parentObject const):
* Source/WebCore/accessibility/AccessibilityScrollView.h:
* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::atspiRole):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::setProperty):
(WebCore::AXIsolatedObject::remoteFrameOffset const):
(WebCore::AXIsolatedObject::relativeFrame const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::retrieveObjectForIDFromMainThread const):
(WebCore::AXIsolatedTree::updateNodeProperties):
(WebCore::AXIsolatedTree::objectsForIDs): Deleted.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
(WebCore::AXIsolatedTree::objectsForIDs):
* Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:
(WebCore::AXIsolatedObject::initializePlatformProperties):
(WebCore::AXIsolatedObject::remoteFramePlatformElement const):
* Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:
(WebCore::AXRemoteFrame::generateRemoteToken const):
(WebCore::AXRemoteFrame::initializePlatformElementWithRemoteToken):
(WebCore::Accessibility::createPlatformRoleMap):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(makeNSArray):
(-[WebAccessibilityObjectWrapperBase isIsolatedObject]):
(-[WebAccessibilityObjectWrapperBase convertRectToSpace:space:]):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper textMarkerForFirstPositionInTextControl:]):
(-[WebAccessibilityObjectWrapper renderWidgetChildren]):
(-[WebAccessibilityObjectWrapper remoteAccessibilityParentObject]):
(-[WebAccessibilityObjectWrapper selectedTextMarkerRange]):
(-[WebAccessibilityObjectWrapper role]):
(-[WebAccessibilityObjectWrapper isEmptyGroup]):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper roleDescription]):
(-[WebAccessibilityObjectWrapper _transformSpecialChildrenCases:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityHitTest:]):
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityPerformShowMenuAction]):
(-[WebAccessibilityObjectWrapper attributedStringForNSRange:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper accessibilityIndexOfChild:]):
(-[WebAccessibilityObjectWrapper accessibilityArrayAttributeCount:]):
(-[WebAccessibilityObjectWrapper accessibilityArrayAttributeValues:index:maxCount:]):
* Source/WebCore/loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::accessibilityRemoteFrameOffset):
* Source/WebCore/loader/EmptyFrameLoaderClient.h:
* Source/WebCore/loader/LocalFrameLoaderClient.h:
* Source/WebCore/page/Page.cpp:
(WebCore::Page::shouldUpdateAccessibilityRegions const):
* Source/WebCore/page/RemoteFrame.cpp:
(WebCore::RemoteFrame::updateRemoteFrameAccessibilityOffset):
(WebCore::RemoteFrame::unbindRemoteAccessibilityFrames):
(WebCore::RemoteFrame::bindRemoteAccessibilityFrames):
* Source/WebCore/page/RemoteFrame.h:
* Source/WebCore/page/RemoteFrameClient.h:
* Source/WebKit/UIProcess/PageClient.h:
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::registerWebProcessAccessibilityToken):
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::bindAccessibilityFrameWithData):
* Source/WebKit/UIProcess/WebFrameProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::swapToProvisionalPage):
(WebKit::WebPageProxy::bindRemoteAccessibilityFrames):
(WebKit::WebPageProxy::updateRemoteFrameAccessibilityOffset):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.h:
* Source/WebKit/UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::accessibilityWebProcessTokenReceived):
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
* Source/WebKit/UIProcess/mac/PageClientImplMac.h:
* Source/WebKit/UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::accessibilityWebProcessTokenReceived):
* Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::registerWebProcessAccessibilityToken):
* Source/WebKit/UIProcess/mac/WebViewImpl.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::setAccessibilityWebProcessToken):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.cpp:
(WebKit::WebLocalFrameLoaderClient::accessibilityRemoteFrameOffset):
* Source/WebKit/WebProcess/WebCoreSupport/WebLocalFrameLoaderClient.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.cpp:
(WebKit::WebRemoteFrameClient::unbindRemoteAccessibilityFrames):
(WebKit::WebRemoteFrameClient::updateRemoteFrameAccessibilityOffset):
(WebKit::WebRemoteFrameClient::bindRemoteAccessibilityFrames):
* Source/WebKit/WebProcess/WebCoreSupport/WebRemoteFrameClient.h:
* Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::accessibilityTransferRemoteToken):
(WebKit::WebPage::accessibilityManageRemoteElementStatus):
(WebKit::WebPage::bindRemoteAccessibilityFrames):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::bindRemoteAccessibilityFrames):
(WebKit::WebPage::updateRemotePageAccessibilityOffset):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformInitializeAccessibility):
(WebKit::WebPage::platformReinitialize):
(WebKit::WebPage::updateRemotePageAccessibilityOffset):
(WebKit::WebPage::registerRemoteFrameAccessibilityTokens):
(WebKit::WebPage::accessibilityRemoteFrameOffset):
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h:
* Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
(-[WKAccessibilityWebPageObjectBase axObjectCache]):
(-[WKAccessibilityWebPageObjectBase setRemoteFrameOffset:]):
(-[WKAccessibilityWebPageObjectBase accessibilityRemoteFrameOffset]):
* Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformInitializeAccessibility):
(WebKit::WebPage::createMockAccessibilityElement):
(WebKit::WebPage::platformReinitialize):
(WebKit::WebPage::updateRemotePageAccessibilityOffset):
(WebKit::WebPage::registerRemoteFrameAccessibilityTokens):
(WebKit::WebPage::registerUIProcessAccessibilityTokens):
(WebKit::WebPage::accessibilityRemoteFrameOffset):
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::bindAccessibilityFrameWithData):
* Source/WebKit/WebProcess/WebProcess.h:
* Source/WebKit/WebProcess/WebProcess.messages.in:
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::bindAccessibilityFrameWithData):
* Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h:
Canonical link: https://commits.webkit.org/274955@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