[webkit-changes] [WebKit/WebKit] e6c6fd: AX: Serve initial AXRelativeFrame for elements wit...
Joshua Hoffman
noreply at github.com
Mon Feb 12 10:57:04 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e6c6fde680601443f7797f6f66eba8453da7a76a
https://github.com/WebKit/WebKit/commit/e6c6fde680601443f7797f6f66eba8453da7a76a
Author: Joshua Hoffman <jhoffman23 at apple.com>
Date: 2024-02-12 (Mon, 12 Feb 2024)
Changed paths:
A LayoutTests/accessibility/mac/initial-relative-frame-cached-expected.txt
A LayoutTests/accessibility/mac/initial-relative-frame-cached.html
M LayoutTests/platform/mac-wk1/TestExpectations
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilityRenderObject.h
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/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
M Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h
M Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl
Log Message:
-----------
AX: Serve initial AXRelativeFrame for elements without cached frames off of the main thread
https://bugs.webkit.org/show_bug.cgi?id=268035
rdar://120764228
Reviewed by Tyler Wilcock.
We only serve relative frames for objects on the secondary thread once they are cached during
the Accessibility paint phase. This means that when we move to objects that were offscreen or
haven't been painted, we have to use the main thread to serve the relative frame.
This patch instead serves a rough frame from the AX thread initally, until the object's frame
is cached during painting. This rough frame is constructed by using the frame rect of the element
for its size, and it's closest painted ancestor for its position. As soon as the element's
precise frame is cached duiring paint, this is updated.
* LayoutTests/accessibility/mac/initial-relative-frame-cached-expected.txt: Added.
* LayoutTests/accessibility/mac/initial-relative-frame-cached.html: Added.
* LayoutTests/platform/mac-wk1/TestExpectations:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::setForceInitialFrameCaching):
(WebCore::AXObjectCache::shouldServeInitialCachedFrame):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::forceInitialFrameCaching):
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::frameRect const):
(WebCore::AccessibilityObject::isNonLayerSVGObject const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::isNonLayerSVGObject const):
(WebCore::AccessibilityRenderObject::frameRect const):
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::relativeFrame const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateFrame):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKAccessibilitySetForceInitialFrameCaching):
* Source/WebKit/WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
(WTR::AccessibilityController::setForceInitialFrameCaching):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h:
* Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
Canonical link: https://commits.webkit.org/274472@main
More information about the webkit-changes
mailing list