[webkit-changes] [WebKit/WebKit] 604aa4: AX: Stop caching 21 isolated object properties tha...

Tyler Wilcock noreply at github.com
Mon Apr 3 10:43:58 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 604aa4c976aca732a533421e5ba26be4029134da
      https://github.com/WebKit/WebKit/commit/604aa4c976aca732a533421e5ba26be4029134da
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2023-04-03 (Mon, 03 Apr 2023)

  Changed paths:
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AccessibilityImageMapLink.h
    M Source/WebCore/accessibility/AccessibilityMenuList.h
    M Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp
    M Source/WebCore/accessibility/AccessibilityMenuListPopup.h
    M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
    M Source/WebCore/accessibility/AccessibilityNodeObject.h
    M Source/WebCore/accessibility/AccessibilityObject.cpp
    M Source/WebCore/accessibility/AccessibilityObject.h
    M Source/WebCore/accessibility/AccessibilityObjectInterface.h
    M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
    M Source/WebCore/accessibility/AccessibilityRenderObject.h
    M Source/WebCore/accessibility/AccessibilityScrollbar.h
    M Source/WebCore/accessibility/AccessibilitySlider.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h

  Log Message:
  -----------
  AX: Stop caching 21 isolated object properties that can be expressed entirely in terms of AXCoreObject functions
https://bugs.webkit.org/show_bug.cgi?id=254871
rdar://problem/107516136

Reviewed by Chris Fleizach.

There are many properties we cache unnecessarily because they can be expressed in terms of AXCoreObject functions.
This patch eliminates 21 such properties by moving the implementations to AXCoreObject.

This will improve memory usage and correctness, since a property that isn't cached cannot become stale.

This patch will also improve performance both by making many of these functions non-virtual, and by reducing
the amount of work we have to do up-front to build AXIsolatedObjects, which historically has been a major source
of issues.

* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleLiveRegionCreated):
* Source/WebCore/accessibility/AccessibilityImageMapLink.h:
(isType):
* Source/WebCore/accessibility/AccessibilityMenuList.h:
(isType):
* Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp:
(WebCore::AccessibilityMenuListPopup::canHaveSelectedChildren const): Deleted.
* Source/WebCore/accessibility/AccessibilityMenuListPopup.h:
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::isSlider const): Deleted.
(WebCore::AccessibilityNodeObject::isMenuRelated const): Deleted.
(WebCore::AccessibilityNodeObject::isMenu const): Deleted.
(WebCore::AccessibilityNodeObject::isMenuBar const): Deleted.
(WebCore::AccessibilityNodeObject::isMenuButton const): Deleted.
(WebCore::AccessibilityNodeObject::isMenuItem const): Deleted.
(WebCore::AccessibilityNodeObject::isHeading const): Deleted.
(WebCore::AccessibilityNodeObject::isGroup const): Deleted.
(WebCore::AccessibilityNodeObject::selectedRadioButton): Deleted.
(WebCore::AccessibilityNodeObject::selectedTabItem): Deleted.
* Source/WebCore/accessibility/AccessibilityNodeObject.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::isTextControl const): Deleted.
(WebCore::AccessibilityObject::isLandmark const): Deleted.
(WebCore::AccessibilityObject::ariaLandmarkRoleDescription const): Deleted.
(WebCore::AccessibilityObject::liveRegionStatusIsEnabled): Deleted.
(WebCore::AccessibilityObject::supportsLiveRegion const): Deleted.
(WebCore::AccessibilityObject::contents): Deleted.
(WebCore::AccessibilityObject::isButton const): Deleted.
* Source/WebCore/accessibility/AccessibilityObject.h:
(WebCore::AccessibilityObject::isAttachmentElement const):
(WebCore::AccessibilityObject::isMediaTimeline const):
(WebCore::AccessibilityObject::isImageMapLink const):
(WebCore::AccessibilityObject::isMenuList const):
(WebCore::AccessibilityObject::isMediaObject const):
(WebCore::AccessibilityObject::stepValueForRange const):
* Source/WebCore/accessibility/AccessibilityObjectInterface.h:
(WebCore::AXCoreObject::isHeading const):
(WebCore::AXCoreObject::isMenu const):
(WebCore::AXCoreObject::isMenuBar const):
(WebCore::AXCoreObject::isMenuButton const):
(WebCore::AXCoreObject::isSlider const):
(WebCore::AXCoreObject::canSetNumericValue const):
(WebCore::AXCoreObject::isMenuRelated const):
(WebCore::AXCoreObject::isMenuItem const):
(WebCore::AXCoreObject::isLandmark const):
(WebCore::AXCoreObject::isGroup const):
(WebCore::AXCoreObject::isButton const):
(WebCore::AXCoreObject::isTextControl const):
(WebCore::AXCoreObject::liveRegionStatusIsEnabled):
(WebCore::AXCoreObject::supportsLiveRegion const):
(WebCore::AXCoreObject::canHaveSelectedChildren const):
(WebCore::AXCoreObject::contents):
(WebCore::AXCoreObject::selectedRadioButton):
(WebCore::AXCoreObject::selectedTabItem):
(WebCore::AXCoreObject::hasPopup const):
(WebCore::AXCoreObject::ariaLandmarkRoleDescription const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::hasPopup const): Deleted.
(WebCore::AccessibilityRenderObject::canHaveSelectedChildren const): Deleted.
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilityScrollbar.h:
* Source/WebCore/accessibility/AccessibilitySlider.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::AXIsolatedObject):
(WebCore::AXIsolatedObject::initializeProperties):
(WebCore::AXIsolatedObject::isListBoxOption const):
(WebCore::AXIsolatedObject::contents): Deleted.
(WebCore::AXIsolatedObject::isImageMapLink const): Deleted.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:

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




More information about the webkit-changes mailing list