[webkit-changes] [WebKit/WebKit] 6e896e: AX: AXPropertyName::{ColumnIndexRange, RowIndexRan...

Tyler Wilcock noreply at github.com
Tue Mar 5 14:21:33 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6e896e7e4003b348fe2ec155f70b986d057d099d
      https://github.com/WebKit/WebKit/commit/6e896e7e4003b348fe2ec155f70b986d057d099d
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2024-03-05 (Tue, 05 Mar 2024)

  Changed paths:
    A LayoutTests/accessibility/dynamic-aria-hidden-cell-expected.txt
    A LayoutTests/accessibility/dynamic-aria-hidden-cell.html
    M Source/WebCore/accessibility/AXLogger.cpp
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/accessibility/AXObjectCache.h
    M Source/WebCore/accessibility/AccessibilityObject.cpp
    M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
    M Source/WebCore/accessibility/AccessibilityTable.cpp
    M Source/WebCore/accessibility/AccessibilityTableCell.cpp
    M Source/WebCore/accessibility/AccessibilityTableCell.h

  Log Message:
  -----------
  AX: AXPropertyName::{ColumnIndexRange, RowIndexRange} properties are never updated
https://bugs.webkit.org/show_bug.cgi?id=270496
rdar://problem/124046227

Reviewed by Chris Fleizach.

This can cause ATs to miss table content if they use the rowIndexRange and columnIndexRange APIs
as inputs to the cellForColumnAndRow API. Fix this by posting a notification when table cells
modify their row / column index.

This patch also adds a new postNotification overload to avoid unnecessary null-checking and verbosity
of passing a hardcoded `nullptr Document*` argument to postNotification(AccessibilityObject*, Document*, AXNotification, PostTarget = PostTarget::Element).

Existing notifications AXColumnIndexChanged and AXRowIndexChanged are repurposed to report this dynamic change,
and two new notifications (AXARIAColumnIndexChanged and AXARIARowIndexChanged) are added to support what the former
two notifications used to do (as they were only fired when aria-colindex and aria-rowindex changed).

* LayoutTests/accessibility/dynamic-aria-hidden-cell-expected.txt: Added.
* LayoutTests/accessibility/dynamic-aria-hidden-cell.html: Added.
* Source/WebCore/accessibility/AXLogger.cpp:
(WebCore::operator<<):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::valueChanged):
(WebCore::AXObjectCache::columnIndexChanged):
(WebCore::AXObjectCache::rowIndexChanged):
(WebCore::AXObjectCache::postNotification):
(WebCore::AXObjectCache::onTextSecurityChanged):
(WebCore::AXObjectCache::onTitleChange):
(WebCore::AXObjectCache::onValidityChange):
(WebCore::AXObjectCache::handleRoleChanged):
Take a reference rather than a pointer as all callsites have access to a
reference.
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::updateIsolatedTree):
(WebCore::AXObjectCache::selectedTextRangeTimerFired):
(WebCore::AXObjectCache::onWidgetVisibilityChanged):
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::updateRole):
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::updateRoleAfterChildrenCreation):
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::recomputeIsExposable):
(WebCore::AccessibilityTable::columnCount):
* Source/WebCore/accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::setRowIndex):
(WebCore::AccessibilityTableCell::setColumnIndex):
* Source/WebCore/accessibility/AccessibilityTableCell.h:
(WebCore::AccessibilityTableCell::setRowIndex): Deleted.
(WebCore::AccessibilityTableCell::setColumnIndex): Deleted.

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list