[webkit-changes] [WebKit/WebKit] f8ef16: AX: Relations updates thrash between dirty and cle...

Tyler Wilcock noreply at github.com
Wed Aug 23 09:08:31 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f8ef167b97d50bce3f8d37fcc098266d79094152
      https://github.com/WebKit/WebKit/commit/f8ef167b97d50bce3f8d37fcc098266d79094152
  Author: Tyler Wilcock <tyler_w at apple.com>
  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




More information about the webkit-changes mailing list