[webkit-changes] [WebKit/WebKit] d73ecd: AX: AXIsolatedTree::updateChildren should not upda...

Tyler Wilcock noreply at github.com
Mon Oct 9 12:27:42 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d73ecd9497ab1c4da9378f0d6ea9924af81f5b7c
      https://github.com/WebKit/WebKit/commit/d73ecd9497ab1c4da9378f0d6ea9924af81f5b7c
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2023-10-09 (Mon, 09 Oct 2023)

  Changed paths:
    M LayoutTests/accessibility/mac/html5-input-number-expected.txt
    M LayoutTests/accessibility/mac/html5-input-number.html
    M Source/WebCore/accessibility/AXLogger.cpp
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h

  Log Message:
  -----------
  AX: AXIsolatedTree::updateChildren should not updateNodeAndDependentProperties if children haven't changed
https://bugs.webkit.org/show_bug.cgi?id=262711
rdar://problem/116531844

Reviewed by Andres Gonzalez.

The intention of the updateNodeAndDependentProperties at the end of updateChildren was to update any properties
that depend on AX children (of which there are many). However, we are doing this unconditionally, even when
children don't change, which causes lots of wasted work.

This patch modifies this behavior to only do this work when children have actually changed. This exposed bugs
that were being papered over thanks to this wasteful behavior.

On an internal webpage this eliminates 45k node changes, bringing the total from 122k to 77k.

* LayoutTests/accessibility/mac/html5-input-number-expected.txt:
* LayoutTests/accessibility/mac/html5-input-number.html:
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleLabelCreated):
(WebCore::AXObjectCache::onTextSecurityChanged):
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::updateIsolatedTree):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateNodeAndDependentProperties):
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::labelCreated):
(WebCore::AXIsolatedTree::removeNode):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:

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




More information about the webkit-changes mailing list