Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0dcbff7496d08c073d80ce69ab7f8f53e6133388
https://github.com/WebKit/WebKit/commit/0dcbff7496d08c073d80ce69ab7f8f53e6133388
Author: Tyler Wilcock <[email protected]>
Date: 2024-11-24 (Sun, 24 Nov 2024)
Changed paths:
M Source/WebCore/accessibility/AXCoreObject.cpp
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXLogger.cpp
M Source/WebCore/accessibility/AXLogger.h
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
M Source/WebCore/accessibility/AXSearchManager.cpp
M Source/WebCore/accessibility/AXSearchManager.h
M Source/WebCore/accessibility/AXTextMarker.cpp
M Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp
M Source/WebCore/accessibility/AccessibilityListBox.cpp
M Source/WebCore/accessibility/AccessibilityMathMLElement.cpp
M Source/WebCore/accessibility/AccessibilityMenuList.cpp
M Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp
M Source/WebCore/accessibility/AccessibilityNodeObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.cpp
M Source/WebCore/accessibility/AccessibilityObject.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilityScrollView.cpp
M Source/WebCore/accessibility/AccessibilitySpinButton.cpp
M Source/WebCore/accessibility/AccessibilityTable.cpp
M Source/WebCore/accessibility/AccessibilityTableCell.cpp
M Source/WebCore/accessibility/AccessibilityTableColumn.cpp
M Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
M Source/WebCore/accessibility/AccessibilityTableRow.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.h
M Source/WebCore/accessibility/atspi/AccessibilityObjectCollectionAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectSelectionAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectTableAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectTableCellAtspi.cpp
M Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp
M Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
M
Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp
M
Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp
Log Message:
-----------
AX: AccessibilityChildrenVector should be Vector<Ref<AXCoreObject>>, not
Vector<RefPtr<AXCoreObject>>
https://bugs.webkit.org/show_bug.cgi?id=283634
rdar://140480178
Reviewed by Chris Fleizach.
AccessibilityChildrenVector should be Vector<Ref<AXCoreObject>>, not
Vector<RefPtr<AXCoreObject>>. Having a null object
in these vectors never makes sense, so this commit prevents it from happening
using the Ref type. Allowing null objects
has caused numerous crashes over the years in places where we forget to
null-check before building an
AccessibilityChildrenVector. Making this a Ref also allows us to remove null
checks from some of our hottest code paths.
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::unignoredChildren):
(WebCore::AXCoreObject::nextInPreOrder):
(WebCore::AXCoreObject::nextSiblingIncludingIgnored const):
(WebCore::AXCoreObject::nextUnignoredSibling const):
(WebCore::AXCoreObject::contents):
(WebCore::AXCoreObject::selectedRadioButton):
(WebCore::AXCoreObject::selectedTabItem):
(WebCore::AXCoreObject::columnHeaders):
(WebCore::AXCoreObject::isTableCellInSameRowGroup):
(WebCore::AXCoreObject::activeDescendant const):
(WebCore::AXCoreObject::selectedCells):
(WebCore::AXCoreObject::titleUIElement const):
(WebCore::AXCoreObject::linkedObjects const):
(WebCore::AXCoreObject::appendRadioButtonDescendants const):
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::Accessibility::findUnignoredChild):
(WebCore::Accessibility::enumerateDescendantsIncludingIgnored):
(WebCore::Accessibility::enumerateUnignoredDescendants):
(WebCore::AXCoreObject::isDescendantOfObject const):
(WebCore::AXCoreObject::isAncestorOfObject const):
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::AXLogger::log):
(WebCore::operator<<):
(WebCore::streamSubtree):
* Source/WebCore/accessibility/AXLogger.h:
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::focusedImageMapUIElement):
(WebCore::AXObjectCache::handleTextChanged):
(WebCore::AXObjectCache::handleChildrenChanged):
(WebCore::AXObjectCache::handleActiveDescendantChange):
(WebCore::AXObjectCache::handleLabelChanged):
(WebCore::AXObjectCache::treeData):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::objectsForIDs const):
* Source/WebCore/accessibility/AXSearchManager.cpp:
(WebCore::isRadioButtonInDifferentAdhocGroup):
(WebCore::AXSearchManager::matchForSearchKeyAtIndex):
(WebCore::AXSearchManager::match):
(WebCore::AXSearchManager::matchText):
(WebCore::AXSearchManager::matchWithResultsLimit):
(WebCore::appendAccessibilityObject):
(WebCore::appendChildrenToArray):
(WebCore::AXSearchManager::findMatchingObjectsInternal):
(WebCore::AXSearchManager::findMatchingRange):
* Source/WebCore/accessibility/AXSearchManager.h:
* Source/WebCore/accessibility/AXTextMarker.cpp:
(WebCore::appendChildren):
(WebCore::AXTextMarker::characterRangeForLine const):
(WebCore::AXTextMarker::lineNumberForIndex const):
* Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp:
(WebCore::AccessibilityARIAGridRow::disclosedRows):
(WebCore::AccessibilityARIAGridRow::disclosedByRow const):
(WebCore::AccessibilityARIAGridRow::rowHeader):
* Source/WebCore/accessibility/AccessibilityListBox.cpp:
(WebCore::AccessibilityListBox::elementAccessibilityHitTest const):
* Source/WebCore/accessibility/AccessibilityMathMLElement.cpp:
(WebCore::AccessibilityMathMLElement::mathRootIndexObject):
(WebCore::AccessibilityMathMLElement::mathNumeratorObject):
(WebCore::AccessibilityMathMLElement::mathDenominatorObject):
(WebCore::AccessibilityMathMLElement::mathUnderObject):
(WebCore::AccessibilityMathMLElement::mathOverObject):
(WebCore::AccessibilityMathMLElement::mathBaseObject):
(WebCore::AccessibilityMathMLElement::mathSubscriptObject):
(WebCore::AccessibilityMathMLElement::mathSuperscriptObject):
* Source/WebCore/accessibility/AccessibilityMenuList.cpp:
(WebCore::AccessibilityMenuList::didUpdateActiveOption):
* Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp:
(WebCore::AccessibilityMenuListPopup::handleChildrenChanged):
(WebCore::AccessibilityMenuListPopup::didUpdateActiveOption):
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::updateOwnedChildren):
(WebCore::AccessibilityNodeObject::radioButtonGroup const):
(WebCore::AccessibilityNodeObject::textAsLabelFor const):
(WebCore::AccessibilityNodeObject::stringValue const):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::insertChild):
(WebCore::AccessibilityObject::ariaTreeRows):
(WebCore::AccessibilityObject::ariaSelectedRows):
(WebCore::AccessibilityObject::selectedChildren):
(WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild):
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::documentLinks):
(WebCore::AccessibilityRenderObject::addNodeOnlyChildren):
(WebCore::AccessibilityRenderObject::addChildren):
* Source/WebCore/accessibility/AccessibilityScrollView.cpp:
(WebCore::AccessibilityScrollView::removeChildScrollbar):
* Source/WebCore/accessibility/AccessibilitySpinButton.cpp:
(WebCore::AccessibilitySpinButton::incrementButton):
(WebCore::AccessibilitySpinButton::decrementButton):
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::updateChildrenRoles):
(WebCore::AccessibilityTable::addChildren):
(WebCore::AccessibilityTable::computeCellSlots):
(WebCore::AccessibilityTable::rowHeaders):
(WebCore::AccessibilityTable::visibleRows):
* Source/WebCore/accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::rowHeaders):
(WebCore::AccessibilityTableCell::ariaOwnedByParent const):
* Source/WebCore/accessibility/AccessibilityTableColumn.cpp:
(WebCore::AccessibilityTableColumn::columnHeader):
(WebCore::AccessibilityTableColumn::addChildren):
* Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp:
(WebCore::AccessibilityTableHeaderContainer::addChildren):
* Source/WebCore/accessibility/AccessibilityTableRow.cpp:
(WebCore::AccessibilityTableRow::rowHeader):
(WebCore::AccessibilityTableRow::addChildren):
* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::wrapperVector const):
(WebCore::AccessibilityObjectAtspi::children const):
(WebCore::AccessibilityObjectAtspi::indexInParent const):
(WebCore::AccessibilityObjectAtspi::relationMap const):
* Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.h:
* Source/WebCore/accessibility/atspi/AccessibilityObjectCollectionAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::addMatchesInCanonicalOrder):
(WebCore::AccessibilityObjectAtspi::matches):
* Source/WebCore/accessibility/atspi/AccessibilityObjectSelectionAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::selectedChildren const):
* Source/WebCore/accessibility/atspi/AccessibilityObjectTableAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::cellIndex const):
(WebCore::AccessibilityObjectAtspi::cells const):
(WebCore::AccessibilityObjectAtspi::rows const):
(WebCore::AccessibilityObjectAtspi::rowHeaders const):
(WebCore::AccessibilityObjectAtspi::columnHeaders const):
* Source/WebCore/accessibility/atspi/AccessibilityObjectTableCellAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::cellRowHeaders const):
(WebCore::AccessibilityObjectAtspi::cellColumnHeaders const):
* Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:
(WebCore::AccessibilityObjectAtspi::textAttributes const):
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityHeaderElements]):
(-[WebAccessibilityObjectWrapper accessibilityRowRange]):
(accessibleElementsForObjects):
(-[WebAccessibilityObjectWrapper accessibilityLinkedElement]):
(-[WebAccessibilityObjectWrapper accessibilityIsFirstItemInSuggestion]):
(-[WebAccessibilityObjectWrapper accessibilityIsLastItemInSuggestion]):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::children):
(WebCore::AXIsolatedObject::setSelectedChildren):
(WebCore::AXIsolatedObject::mathRadicand):
(WebCore::AXIsolatedObject::fillChildrenVectorForProperty const):
(WebCore::AXIsolatedObject::rowHeaders):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::collectNodeChangesForSubtree):
(WebCore::AXIsolatedTree::updateDependentProperties):
(WebCore::AXIsolatedTree::updateChildren):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
(WebCore::AXIsolatedTree::objectsForIDs):
* Source/WebCore/accessibility/isolatedtree/mac/AXIsolatedObjectMac.mm:
(WebCore::AXIsolatedObject::textMarkerRange const):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(makeNSArray):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(convertToVector):
(transformSpecialChildrenCases):
(-[WebAccessibilityObjectWrapper accessibilityIndexOfChild:]):
* Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp:
(WebCore::addChildren):
* Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::processAccessibilityChildren):
* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityControllerAtspi.cpp:
(WTR::findAccessibleObjectById):
* Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:
(WTR::elementForRelationAtIndex):
(WTR::AccessibilityUIElement::rowAtIndex):
(WTR::attributesOfElements):
(WTR::elementsVector):
(WTR::makeJSArray):
Canonical link: https://commits.webkit.org/287044@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes