Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e6c6fde680601443f7797f6f66eba8453da7a76a
      
https://github.com/WebKit/WebKit/commit/e6c6fde680601443f7797f6f66eba8453da7a76a
  Author: Joshua Hoffman <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to