[webkit-changes] [WebKit/WebKit] 723eb8: AX: Submit Bug button on Bugzilla is not accessibl...
Tyler Wilcock
noreply at github.com
Thu Oct 19 12:43:39 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 723eb83c4fdb24e0d50c664452328dc6188ca7dd
https://github.com/WebKit/WebKit/commit/723eb83c4fdb24e0d50c664452328dc6188ca7dd
Author: Tyler Wilcock <tyler_w at apple.com>
Date: 2023-10-19 (Thu, 19 Oct 2023)
Changed paths:
M LayoutTests/accessibility/aria-cellspans-with-native-cellspans-expected.txt
M LayoutTests/accessibility/aria-table-attributes-expected.txt
M LayoutTests/accessibility/aria-table-attributes.html
M LayoutTests/accessibility/custom-elements/table-expected.txt
M LayoutTests/accessibility/custom-elements/table.html
A LayoutTests/accessibility/out-of-bounds-rowspan-aria-hidden-expected.txt
A LayoutTests/accessibility/out-of-bounds-rowspan-aria-hidden.html
A LayoutTests/accessibility/out-of-bounds-rowspan-display-none-expected.txt
A LayoutTests/accessibility/out-of-bounds-rowspan-display-none.html
A LayoutTests/accessibility/out-of-bounds-rowspan-expected.txt
A LayoutTests/accessibility/out-of-bounds-rowspan-orphan-rows-expected.txt
A LayoutTests/accessibility/out-of-bounds-rowspan-orphan-rows.html
A LayoutTests/accessibility/out-of-bounds-rowspan-presentational-row-expected.txt
A LayoutTests/accessibility/out-of-bounds-rowspan-presentational-row.html
A LayoutTests/accessibility/out-of-bounds-rowspan.html
M LayoutTests/platform/glib/accessibility/custom-elements/table-expected.txt
A LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-aria-hidden-expected.txt
A LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-display-none-expected.txt
A LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-expected.txt
A LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-orphan-rows-expected.txt
A LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-presentational-row-expected.txt
M LayoutTests/platform/ios/TestExpectations
A LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-aria-hidden-expected.txt
A LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-display-none-expected.txt
A LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-expected.txt
A LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-orphan-rows-expected.txt
A LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-presentational-row-expected.txt
M LayoutTests/resources/accessibility-helper.js
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/AccessibilityObject.h
M Source/WebCore/accessibility/AccessibilityRenderObject.cpp
M Source/WebCore/accessibility/AccessibilitySVGElement.cpp
M Source/WebCore/accessibility/AccessibilityTable.cpp
M Source/WebCore/accessibility/AccessibilityTableCell.cpp
M Source/WebCore/accessibility/AccessibilityTableCell.h
M Source/WebCore/accessibility/AccessibilityTableRow.cpp
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
Log Message:
-----------
AX: Submit Bug button on Bugzilla is not accessible via VoiceOver VO-Right navigation
https://bugs.webkit.org/show_bug.cgi?id=263162
rdar://115783249
Reviewed by Andres Gonzalez.
This bug happens for two reasons:
1. Bugzilla represents its UI via HTML table, and separates rows into
multiple different tbody elements
2. Some cells have rowspans that span out-of-bounds of their
containing tbody due to display:none rows
Per spec, rowspan is not allowed to escape the table section (tbody, thead, tfoot)
that the cell is contained in, but our algorithm did not prevent that. The result was
that all the cells following the rowspan cell were shifted inappropriately, with some
being shifted out of the table entirely.
This patch fixes the issue by implementing the downward-growing cell algorithm to expand
rowspanned cells as much as necessary (and not any further).
https://html.spec.whatwg.org/multipage/tables.html#algorithm-for-growing-downward-growing-cells
This (along with necessary auxiliary changes) fix numerous bugs beyond the one described above:
1. Cells now track their "effective" rowspan, i.e. how many rows they
actually expand in the final table layout. Previously, we took the
author's provided rowspan as truth, despite it often not being
accurate (because of AX-hidden rows, or because it was bigger than
the entire number of rows in the rowgroup).
This allows us to provide more accurate information to AT users
(e.g. when VoiceOver reads "spans x rows").
2. Properly handle implicit rowgroups in ARIA tables, the lack of
which caused us to fail to expose content on real websites
3. We now properly ignore role="presentation" rows
4. We no longer perform a full `updateNode` for objects who change
rowspan, aria-rowspan, colspan, and aria-colspan attributes. This
was wasteful and unnecessary. Instead, we only update what is
necessary: AXPropertyName::ColumnIndexRange and
AXPropertyName::RowIndexRange
All of these issues exposed a lack of coverage in our tests. New tests are added to rectify this:
- out-of-bounds-rowspan-aria-hidden.html
- out-of-bounds-rowspan-display-none.html
- out-of-bounds-rowspan-orphan-rows.html
- out-of-bounds-rowspan-presentational-row.html
- out-of-bounds-rowspan.html
New test cases are also added to aria-table-attributes.html.
Several expectations in existing tests are also updated, as the the old expectations were verifying
incorrect results.
* LayoutTests/accessibility/aria-cellspans-with-native-cellspans-expected.txt:
* LayoutTests/accessibility/aria-table-attributes-expected.txt:
* LayoutTests/accessibility/aria-table-attributes.html:
* LayoutTests/accessibility/custom-elements/table-expected.txt:
* LayoutTests/accessibility/custom-elements/table.html:
* LayoutTests/accessibility/out-of-bounds-rowspan-aria-hidden-expected.txt: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-aria-hidden.html: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-display-none-expected.txt: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-display-none.html: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-expected.txt: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-orphan-rows-expected.txt: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-orphan-rows.html: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-presentational-row-expected.txt: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan-presentational-row.html: Added.
* LayoutTests/accessibility/out-of-bounds-rowspan.html: Added.
* LayoutTests/platform/glib/accessibility/custom-elements/table-expected.txt: Added.
* LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-aria-hidden-expected.txt: Added.
* LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-orphan-rows-expected.txt: Added.
* LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-presentational-row-expected.txt: Added.
* LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-display-none-expected.txt: Added.
* LayoutTests/platform/glib/accessibility/out-of-bounds-rowspan-expected.txt: Added.
* LayoutTests/platform/ios/TestExpectations: Enable new tests.
* LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-aria-hidden-expected.txt: Added.
* LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-orphan-rows-expected.txt: Added.
* LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-presentational-row-expected.txt: Added.
* LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-display-none-expected.txt: Added.
* LayoutTests/platform/ios/accessibility/out-of-bounds-rowspan-expected.txt: Added.
* LayoutTests/resources/accessibility-helper.js:
(dumpAXTable):
(dumpAXSearchTraversal.elementDescription):
(dumpAXSearchTraversal):
* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleRowspanChanged):
(WebCore::AXObjectCache::handleAttributeChange):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::updateIsolatedTree):
(WebCore::AXObjectCache::deferRowspanChange):
* Source/WebCore/accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::deferRowspanChange):
* Source/WebCore/accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::ignoredFromPresentationalRole const):
* Source/WebCore/accessibility/AccessibilityObject.h:
* Source/WebCore/accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored const):
* Source/WebCore/accessibility/AccessibilitySVGElement.cpp:
(WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored const):
* Source/WebCore/accessibility/AccessibilityTable.cpp:
(WebCore::AccessibilityTable::addChildren):
* Source/WebCore/accessibility/AccessibilityTableCell.cpp:
(WebCore::AccessibilityTableCell::rowIndexRange const):
* Source/WebCore/accessibility/AccessibilityTableCell.h:
(WebCore::AccessibilityTableCell::incrementEffectiveRowSpan):
(WebCore::AccessibilityTableCell::resetEffectiveRowSpan):
* Source/WebCore/accessibility/AccessibilityTableRow.cpp:
(WebCore::AccessibilityTableRow::computeAccessibilityIsIgnored const):
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::updateNodeProperties):
Canonical link: https://commits.webkit.org/269544@main
More information about the webkit-changes
mailing list