[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