Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a4221ebed1c01347b5862a53f4f0ab5d303058b6
      
https://github.com/WebKit/WebKit/commit/a4221ebed1c01347b5862a53f4f0ab5d303058b6
  Author: Tyler Wilcock <tyle...@apple.com>
  Date:   2024-11-11 (Mon, 11 Nov 2024)

  Changed paths:
    M LayoutTests/accessibility-isolated-tree/TestExpectations
    M Source/WebCore/SaferCPPExpectations/UncountedLocalVarsCheckerExpectations
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AccessibilitySpinButton.cpp
    M Source/WebCore/accessibility/AccessibilitySpinButton.h
    A Source/WebCore/accessibility/AccessibilitySpinButtonPart.cpp
    A Source/WebCore/accessibility/AccessibilitySpinButtonPart.h
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp

  Log Message:
  -----------
  AX: Two new AccessibilitySpinButtonParts are created and never cleaned up for 
every clearChildren-addChildren cycle of AccessibilitySpinButton, causing a 
memory leak
https://bugs.webkit.org/show_bug.cgi?id=282879
rdar://139572476

Reviewed by Chris Fleizach.

Prior to this commit, every time an AccessibilitySpinButton calls 
clearChildren() and addChildren(), we would create
two brand new AccessibilitySpinButtonPart objects with associated object 
wrappers, without cleaning up the spin button
parts or wrappers from the last cycle, leaking them.

With this commit, we now create the increment and decrementer spin button parts 
up-front in the AccessibilitySpinButton
constructor, and maintain them between clearChildren-addChildren cycles. This 
is also better because it keeps UI elements
more stable for ATs, i.e. we are no longer at risk of sending a notification 
with a spin button part, then calling
clearChildren, effectively detaching the spin button part the AT has a 
reference to, making it useless.

This commit also includes unrelated changes to garden some test expectations 
for ITM.

* LayoutTests/accessibility-isolated-tree/TestExpectations:
* Source/WTF/wtf/PlatformEnable.h:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::create):
* Source/WebCore/accessibility/AccessibilitySpinButton.cpp:
(WebCore::AccessibilitySpinButton::create):
(WebCore::AccessibilitySpinButton::AccessibilitySpinButton):
(WebCore::AccessibilitySpinButton::incrementButton):
(WebCore::AccessibilitySpinButton::decrementButton):
(WebCore::AccessibilitySpinButton::elementRect const):
(WebCore::AccessibilitySpinButton::addChildren):
(WebCore::AccessibilitySpinButton::step):
(WebCore::AccessibilitySpinButtonPart::AccessibilitySpinButtonPart): Deleted.
(WebCore::AccessibilitySpinButtonPart::create): Deleted.
(WebCore::AccessibilitySpinButtonPart::elementRect const): Deleted.
(WebCore::AccessibilitySpinButtonPart::press): Deleted.
* Source/WebCore/accessibility/AccessibilitySpinButton.h:
* Source/WebCore/accessibility/AccessibilitySpinButtonPart.cpp: Added.
(WebCore::AccessibilitySpinButtonPart::AccessibilitySpinButtonPart):
(WebCore::AccessibilitySpinButtonPart::create):
(WebCore::AccessibilitySpinButtonPart::elementRect const):
(WebCore::AccessibilitySpinButtonPart::press):
* Source/WebCore/accessibility/AccessibilitySpinButtonPart.h: Added.
(isType):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to