Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6009380248ac33dc2cc9876ae881ed828993bff9
      
https://github.com/WebKit/WebKit/commit/6009380248ac33dc2cc9876ae881ed828993bff9
  Author: Tyler Wilcock <[email protected]>
  Date:   2026-09-04 (Fri, 04 Sep 2026)

  Changed paths:
    A 
LayoutTests/accessibility/isolated-tree/canvas-drawFocusIfNeeded-bounds-with-object-fit.html
    A 
LayoutTests/accessibility/isolated-tree/canvas-drawFocusIfNeeded-bounds-with-transform.html
    A 
LayoutTests/accessibility/isolated-tree/canvas-drawFocusIfNeeded-bounds.html
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXUtilities.cpp
    M Source/WebCore/accessibility/AXUtilities.h

  Log Message:
  -----------
  AX: In isolated tree mode, drawFocusIfNeeded() bounds for a canvas fallback 
element can be delayed indefinitely
https://bugs.webkit.org/show_bug.cgi?id=323345
rdar://186587133

Reviewed by Chris Fleizach and Dominic Mazzoni.

drawFocusIfNeeded() routes the focus ring's bounds to the accessibility tree
through AXObjectCache::deferCanvasFocusPathBoundsUpdate, which queues them for
performDeferredCacheUpdate. That function returns early when
needsLayoutOrStyleRecalc() is true, and the only thing that brings it back is a
layout.

The problem is that needsLayoutOrStyleRecalc() is also true for a pending style 
recalc,
and a style recalc can resolve without a layout following it, stranding the 
deferred changes
indefinitely (until something else triggers an update).

Fix this by restarting m_performCacheUpdateTimer when we deferred due to a 
pending style recalc.

Three new canvas tests pass in isolated tree mode.

* 
LayoutTests/accessibility/isolated-tree/canvas-drawFocusIfNeeded-bounds-with-object-fit.html:
 Added.
* 
LayoutTests/accessibility/isolated-tree/canvas-drawFocusIfNeeded-bounds-with-transform.html:
 Added.
* LayoutTests/accessibility/isolated-tree/canvas-drawFocusIfNeeded-bounds.html: 
Added.
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::performDeferredCacheUpdate):
* Source/WebCore/accessibility/AXUtilities.cpp:
(WebCore::needsLayoutOrStyleRecalc):
* Source/WebCore/accessibility/AXUtilities.h:

Canonical link: https://commits.webkit.org/320543@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to