[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