Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1e6dbc10af5dd7e55e331743bcec3e705b43480d
https://github.com/WebKit/WebKit/commit/1e6dbc10af5dd7e55e331743bcec3e705b43480d
Author: Tyler Wilcock <[email protected]>
Date: 2024-11-12 (Tue, 12 Nov 2024)
Changed paths:
M LayoutTests/accessibility/aria-hidden-subtree-expected.txt
M LayoutTests/accessibility/aria-hidden-subtree.html
M LayoutTests/accessibility/aria-hidden-updates-alldescendants-expected.txt
M LayoutTests/accessibility/aria-hidden-updates-alldescendants.html
M LayoutTests/accessibility/aria-hidden-with-elements.html
M LayoutTests/accessibility/aria-labelledby-on-password-input.html
M LayoutTests/accessibility/aria-modal-in-aria-hidden-expected.txt
M LayoutTests/accessibility/aria-modal-in-aria-hidden.html
M LayoutTests/accessibility/deleting-iframe-destroys-axcache.html
M LayoutTests/accessibility/dynamic-aria-hidden-cell-expected.txt
M LayoutTests/accessibility/dynamic-aria-hidden-cell.html
M LayoutTests/accessibility/ignore-modals-without-any-content.html
M
LayoutTests/accessibility/input-type-hidden-in-aria-hidden-false-expected.txt
M LayoutTests/accessibility/input-type-hidden-in-aria-hidden-false.html
R LayoutTests/accessibility/ios-simulator/table-ancestory-expected.txt
R LayoutTests/accessibility/ios-simulator/table-ancestory.html
M LayoutTests/accessibility/mac/aria-grid-with-strange-hierarchy.html
M
LayoutTests/accessibility/mac/aria-hidden-changes-for-non-ignored-elements-expected.txt
M
LayoutTests/accessibility/mac/aria-hidden-changes-for-non-ignored-elements.html
M LayoutTests/accessibility/mac/selected-text-range-unconnected-object.html
M LayoutTests/accessibility/out-of-bounds-rowspan.html
A LayoutTests/accessibility/table-ancestry-expected.txt
A LayoutTests/accessibility/table-ancestry.html
M
LayoutTests/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt
M LayoutTests/platform/glib/TestExpectations
M
LayoutTests/platform/gtk/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt
M LayoutTests/platform/ios/TestExpectations
M LayoutTests/platform/mac-wk1/TestExpectations
M
LayoutTests/platform/wpe/imported/w3c/web-platform-tests/custom-elements/ElementInternals-role-expected.txt
M Source/WebCore/accessibility/AXCoreObject.cpp
M Source/WebCore/accessibility/AXCoreObject.h
M Source/WebCore/accessibility/AXObjectCache.cpp
M Source/WebCore/accessibility/AXObjectCache.h
M Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp
M Source/WebCore/accessibility/AccessibilityARIAGridRow.h
M Source/WebCore/accessibility/AccessibilityList.cpp
M Source/WebCore/accessibility/AccessibilityList.h
M Source/WebCore/accessibility/AccessibilityListBox.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/AccessibilityRenderObject.h
M Source/WebCore/accessibility/AccessibilityTable.cpp
M Source/WebCore/accessibility/AccessibilityTable.h
M Source/WebCore/accessibility/AccessibilityTableCell.cpp
M Source/WebCore/accessibility/AccessibilityTableCell.h
M Source/WebCore/accessibility/AccessibilityTableColumn.cpp
M Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp
M Source/WebCore/accessibility/AccessibilityTableRow.h
M Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
M Source/WebCore/rendering/RenderElement.cpp
M Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
M Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
Log Message:
-----------
AX: Make all layout tests pass on macOS and iOS with
ENABLE(INCLUDE_IGNORED_IN_CORE_AX_TREE)
https://bugs.webkit.org/show_bug.cgi?id=282647
rdar://139315447
Reviewed by Chris Fleizach.
This patch features a variety of changes to make all layout tests pass with
ENABLE(INCLUDE_IGNORED_IN_CORE_AX_TREE):
1. Prevent tables from returning "invalid" children — non-rows, columns,
captions, or table header containers.
We used to get this for free by way of AccessibilityTable::addChildren()
only adding these types of children,
but we cannot do that anymore, since the point of this effort is to add
all children, including those that are
ignored. Computing cell slots is now split out into a separate function:
AccessibilityTable::computeCellSlots().
2. When `inert` or `visibility` changes, re-compute AXPropertyName::IsIgnored
for all descendants.
3. Fix a bug where we don't auto-focus into modals if the author provided a
focus element and immediately made
that focus element un-focusable (e.g. via display:none). This was caught
by a layout test, and was only exposed
by this change by chance due to a slight timing difference.
4. When an object becomes unignored, recompute all its properties, since we
only cache a minimal set of properties for
ignored objects.
5. Split AccessibilityList::determineAccessibilityRole into
determineAccessibilityRole and determineAccessibilityRoleWithCleanChildren
The old implementation relied on children being up-to-date, without
anything actually upholding that invariant. Now
this is more explicit, and should behave more predictably.
6. Fix a few ATSPI-platform guards added in
https://bugs.webkit.org/show_bug.cgi?id=281749 that accidentally applied
to iOS too.
7. Drive-by fix to remove a completely unnecessary override for
AccessibilityTableCell::parentObjectUnignored().
8. Add new testing-only macOS attribute handling for `_AXIsInTable` in
support of new test table-ancestry.html.
* LayoutTests/accessibility/aria-hidden-subtree-expected.txt:
* LayoutTests/accessibility/aria-hidden-subtree.html:
* LayoutTests/accessibility/aria-hidden-updates-alldescendants-expected.txt:
* LayoutTests/accessibility/aria-hidden-updates-alldescendants.html:
* LayoutTests/accessibility/aria-hidden-with-elements.html:
* LayoutTests/accessibility/aria-labelledby-on-password-input.html:
* LayoutTests/accessibility/aria-modal-in-aria-hidden-expected.txt:
* LayoutTests/accessibility/aria-modal-in-aria-hidden.html:
* LayoutTests/accessibility/deleting-iframe-destroys-axcache.html:
* LayoutTests/accessibility/dynamic-aria-hidden-cell-expected.txt:
* LayoutTests/accessibility/dynamic-aria-hidden-cell.html:
* LayoutTests/accessibility/ignore-modals-without-any-content.html:
* LayoutTests/accessibility/input-type-hidden-in-aria-hidden-false-expected.txt:
* LayoutTests/accessibility/input-type-hidden-in-aria-hidden-false.html:
* LayoutTests/accessibility/ios-simulator/table-ancestory-expected.txt: Removed.
* LayoutTests/accessibility/ios-simulator/table-ancestory.html: Removed.
* LayoutTests/accessibility/mac/aria-grid-with-strange-hierarchy.html:
*
LayoutTests/accessibility/mac/aria-hidden-changes-for-non-ignored-elements-expected.txt:
*
LayoutTests/accessibility/mac/aria-hidden-changes-for-non-ignored-elements.html:
* LayoutTests/accessibility/mac/selected-text-range-unconnected-object.html:
* LayoutTests/accessibility/out-of-bounds-rowspan.html:
Re-write several tests to be more async.
* LayoutTests/accessibility/table-ancestry-expected.txt: Added.
* LayoutTests/accessibility/table-ancestry.html: Added.
This test used to be iOS-only — it has been ported to macOS too with
this patch.
* LayoutTests/platform/glib/TestExpectations: Skip
accessibility/table-ancestry.html.
* LayoutTests/platform/ios/TestExpectations: Enable
accessibility/table-ancestry.html.
* Source/WebCore/accessibility/AXCoreObject.cpp:
(WebCore::AXCoreObject::unignoredChildren):
(WebCore::AXCoreObject::nextInPreOrder):
(WebCore::AXCoreObject::parentObjectUnignored const):
* Source/WebCore/accessibility/AXCoreObject.h:
(WebCore::AXCoreObject::onlyAddsUnignoredChildren const):
(WebCore::Accessibility::enumerateDescendantsIncludingIgnored):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::nodeIsRowGroup):
(WebCore::AXObjectCache::handleTextChanged):
(WebCore::AXObjectCache::onInertOrVisibilityChange):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::updateIsolatedTree):
(WebCore::AXObjectCache::addRelation):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AccessibilityARIAGridRow.cpp:
(WebCore::AccessibilityARIAGridRow::parentObjectUnignored const): Deleted.
* Source/WebCore/accessibility/AccessibilityARIAGridRow.h:
* Source/WebCore/accessibility/AccessibilityList.cpp:
(WebCore::AccessibilityList::updateRoleAfterChildrenCreation):
(WebCore::AccessibilityList::determineAccessibilityRole):
(WebCore::AccessibilityList::determineAccessibilityRoleWithCleanChildren):
* Source/WebCore/accessibility/AccessibilityList.h:
* Source/WebCore/accessibility/AccessibilityListBox.cpp:
(WebCore::AccessibilityListBox::setSelectedChildren):
(WebCore::AccessibilityListBox::selectedChildren):
(WebCore::AccessibilityListBox::visibleChildren):
* Source/WebCore/accessibility/AccessibilityMenuListPopup.cpp:
(WebCore::AccessibilityMenuListPopup::selectedChildren):
(WebCore::AccessibilityMenuListPopup::didUpdateActiveOption):
* Source/WebCore/accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::parentObject const):
(WebCore::AccessibilityNodeObject::boundingBoxRect const):
(WebCore::AccessibilityNodeObject::addChildren):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::dependsOnTextUnderElement const):
(WebCore::AccessibilityObject::isIgnoredWithoutCache const):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::documentLinks):
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):
* Source/WebCore/accessibility/AccessibilityRenderObject.h:
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::addChildren):
(WebCore::AccessibilityTable::computeCellSlots):
* Source/WebCore/accessibility/AccessibilityTable.h:
* Source/WebCore/accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::parentObjectUnignored const): Deleted.
* Source/WebCore/accessibility/AccessibilityTableCell.h:
* Source/WebCore/accessibility/AccessibilityTableColumn.cpp:
(WebCore::AccessibilityTableColumn::computeIsIgnored const):
* Source/WebCore/accessibility/AccessibilityTableHeaderContainer.cpp:
(WebCore::AccessibilityTableHeaderContainer::computeIsIgnored const):
* Source/WebCore/accessibility/AccessibilityTableRow.h:
* Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::initializeProperties):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::objectChangedIgnoredState):
(WebCore::AXIsolatedTree::updatePropertiesForSelfAndDescendants):
(WebCore::AXIsolatedTree::updateNodeProperties):
(WebCore::AXIsolatedTree::updateDependentProperties):
(WebCore::AXIsolatedTree::updateChildren):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:
(WebCore::AXIsolatedTree::isUnconnectedNode const):
(WebCore::AXIsolatedTree::objectBecameIgnored):
(WebCore::AXIsolatedTree::objectBecameUnignored):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(attributeValueForTesting):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):
* Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
(WTR::AccessibilityUIElement::attributedStringForElement):
(WTR::AccessibilityUIElement::isInTable const):
* Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::attributeValue):
(WTR::AccessibilityUIElement::isInTable const):
Canonical link: https://commits.webkit.org/286511@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