Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f8ef167b97d50bce3f8d37fcc098266d79094152
      
https://github.com/WebKit/WebKit/commit/f8ef167b97d50bce3f8d37fcc098266d79094152
  Author: Tyler Wilcock <[email protected]>
  Date:   2023-08-23 (Wed, 23 Aug 2023)

  Changed paths:
    M Source/WebCore/accessibility/AXObjectCache.cpp

  Log Message:
  -----------
  AX: Relations updates thrash between dirty and clean when multiple deferred 
id attribute changes are processed
https://bugs.webkit.org/show_bug.cgi?id=260370
rdar://problem/114052085

Reviewed by Andres Gonzalez.

In AXObjectCache::handleAttributeChange, any change to the `id`
attribute causes AXObjectCache::m_relationsNeedUpdate to become true.

This is problematic when `m_deferredAttributeChange` contains multiple
`id` attribute changes, as we thrash between setting m_relationsNeedUpdate to 
true,
immediately resetting it to false as a result of an arbitrary` parentObject` 
call,
and then re-dirtying it with the next id attribute change.

With this patch (authored by Andres Gonzalez), we only update relations
once, even when a group of id attribute changes are processed.

* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::relationsNeedUpdate):
* Source/WebCore/accessibility/AXObjectCache.h:

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


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

Reply via email to