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

Reply via email to