Title: [272626] trunk
Revision
272626
Author
[email protected]
Date
2021-02-09 17:19:33 -0800 (Tue, 09 Feb 2021)

Log Message

Descendants of row and column headers should expose the aria-sort attribute.
https://bugs.webkit.org/show_bug.cgi?id=221590

Reviewed by Chris Fleizach.

Source/WebCore:

Tests:
accessibility/aria-sort.html
accessibility/ios-simulator/aria-sort-ios.html

Walk up the accessibility hierarchy to check for an inherited aria-sort
attribute present in a row or column header ancestor.

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::sortDirection const):

LayoutTests:

Expanded this test to include the case where the header contains a child
element that must also expose the aria-sort attribute inherited from its
parent.

* accessibility/aria-sort-expected.txt:
* accessibility/aria-sort.html:
* accessibility/ios-simulator/aria-sort-ios-expected.txt:
* accessibility/ios-simulator/aria-sort-ios.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (272625 => 272626)


--- trunk/LayoutTests/ChangeLog	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/LayoutTests/ChangeLog	2021-02-10 01:19:33 UTC (rev 272626)
@@ -1,3 +1,19 @@
+2021-02-09  Andres Gonzalez  <[email protected]>
+
+        Descendants of row and column headers should expose the aria-sort attribute.
+        https://bugs.webkit.org/show_bug.cgi?id=221590
+
+        Reviewed by Chris Fleizach.
+
+        Expanded this test to include the case where the header contains a child
+        element that must also expose the aria-sort attribute inherited from its
+        parent.
+
+        * accessibility/aria-sort-expected.txt:
+        * accessibility/aria-sort.html:
+        * accessibility/ios-simulator/aria-sort-ios-expected.txt:
+        * accessibility/ios-simulator/aria-sort-ios.html:
+
 2021-02-09  Ryan Haddad  <[email protected]>
 
         Unreviewed, reverting r272426.

Modified: trunk/LayoutTests/accessibility/aria-sort-expected.txt (272625 => 272626)


--- trunk/LayoutTests/accessibility/aria-sort-expected.txt	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/LayoutTests/accessibility/aria-sort-expected.txt	2021-02-10 01:19:33 UTC (rev 272626)
@@ -1,4 +1,4 @@
-column column column
+column column column column
 row
 This tests that aria-sort is exposed correctly to the Mac accessibility API.
 
@@ -11,6 +11,8 @@
 PASS col2.sortDirection is 'AXDescendingSortDirection'
 PASS col3.isAttributeSupported('AXSortDirection') is true
 PASS col3.sortDirection is 'AXUnknownSortDirection'
+PASS link1.isAttributeSupported('AXSortDirection') is true
+PASS link1.sortDirection is 'AXAscendingSortDirection'
 PASS row1.isAttributeSupported('AXSortDirection') is false
 PASS successfullyParsed is true
 

Modified: trunk/LayoutTests/accessibility/aria-sort.html (272625 => 272626)


--- trunk/LayoutTests/accessibility/aria-sort.html	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/LayoutTests/accessibility/aria-sort.html	2021-02-10 01:19:33 UTC (rev 272626)
@@ -15,6 +15,8 @@
 <span aria-sort="descending" id="col2" role="columnheader">column</span>
 <!-- Other aria-sort direction. -->
 <span aria-sort="other" id="col3" role="columnheader">column</span>
+<!-- The comun header with aria-sort attribute is the parent of a focusable element. -->
+<span aria-sort="ascending" id="col4" role="columnheader"><a id="link1" href=""
 </div>
 <div role="row">
 <!-- No aria-sort direction. -->
@@ -22,6 +24,7 @@
 <span role="gridcell"></span>
 <span role="gridcell"></span>
 <span role="gridcell"></span>
+<span role="gridcell"></span>
 </div>
 </div>
 
@@ -44,6 +47,10 @@
         shouldBe("col3.isAttributeSupported('AXSortDirection')", "true");
         shouldBe("col3.sortDirection", "'AXUnknownSortDirection'");
 
+        var link1 = accessibilityController.accessibleElementById("link1");
+        shouldBe("link1.isAttributeSupported('AXSortDirection')", "true");
+        shouldBe("link1.sortDirection", "'AXAscendingSortDirection'");
+
         var row1 = accessibilityController.accessibleElementById("row1");
         shouldBe("row1.isAttributeSupported('AXSortDirection')", "false");
     }

Modified: trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios-expected.txt (272625 => 272626)


--- trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios-expected.txt	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios-expected.txt	2021-02-10 01:19:33 UTC (rev 272626)
@@ -1,4 +1,4 @@
-column column column
+column column column column
 row
 This tests that aria-sort is exposed correctly to the iOS accessibility API.
 
@@ -8,6 +8,7 @@
 PASS col1.sortDirection is 'AXAscendingSortDirection'
 PASS col2.sortDirection is 'AXDescendingSortDirection'
 PASS col3.sortDirection is 'AXUnknownSortDirection'
+PASS link1.sortDirection is 'AXAscendingSortDirection'
 PASS row1.sortDirection is 'AXUnknownSortDirection'
 PASS successfullyParsed is true
 

Modified: trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios.html (272625 => 272626)


--- trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios.html	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios.html	2021-02-10 01:19:33 UTC (rev 272626)
@@ -14,6 +14,8 @@
 <span aria-sort="descending" id="col2" role="columnheader">column</span>
 <!-- Other aria-sort direction. -->
 <span aria-sort="other" id="col3" role="columnheader">column</span>
+<!-- The comun header with aria-sort attribute is the parent of a focusable element. -->
+<span aria-sort="ascending" id="col4" role="columnheader"><a id="link1" href=""
 </div>
 <div role="row">
 <!-- No aria-sort direction. -->
@@ -38,6 +40,9 @@
         var col3 = accessibilityController.accessibleElementById("col3");
         shouldBe("col3.sortDirection", "'AXUnknownSortDirection'");
 
+        var link1 = accessibilityController.accessibleElementById("link1");
+        shouldBe("link1.sortDirection", "'AXAscendingSortDirection'");
+
         var row1 = accessibilityController.accessibleElementById("row1");
         shouldBe("row1.sortDirection", "'AXUnknownSortDirection'");
     }

Modified: trunk/Source/WebCore/ChangeLog (272625 => 272626)


--- trunk/Source/WebCore/ChangeLog	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/Source/WebCore/ChangeLog	2021-02-10 01:19:33 UTC (rev 272626)
@@ -1,3 +1,20 @@
+2021-02-09  Andres Gonzalez  <[email protected]>
+
+        Descendants of row and column headers should expose the aria-sort attribute.
+        https://bugs.webkit.org/show_bug.cgi?id=221590
+
+        Reviewed by Chris Fleizach.
+
+        Tests:
+        accessibility/aria-sort.html
+        accessibility/ios-simulator/aria-sort-ios.html
+
+        Walk up the accessibility hierarchy to check for an inherited aria-sort
+        attribute present in a row or column header ancestor.
+
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::sortDirection const):
+
 2021-02-09  Peng Liu  <[email protected]>
 
         [GPUP] Run ImageDecoderAVFObjC in the GPU Process

Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (272625 => 272626)


--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp	2021-02-10 01:18:45 UTC (rev 272625)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp	2021-02-10 01:19:33 UTC (rev 272626)
@@ -2553,11 +2553,18 @@
 
 AccessibilitySortDirection AccessibilityObject::sortDirection() const
 {
-    AccessibilityRole role = roleValue();
-    if (role != AccessibilityRole::RowHeader && role != AccessibilityRole::ColumnHeader)
+    // Only objects that are descendant of column or row headers are allowed to have sort direction.
+    auto* header = Accessibility::findAncestor<AccessibilityObject>(*this, true, [] (const AccessibilityObject& object) {
+        auto role = object.roleValue();
+        return role == AccessibilityRole::ColumnHeader || role == AccessibilityRole::RowHeader;
+    });
+    if (!header)
         return AccessibilitySortDirection::Invalid;
 
-    const AtomString& sortAttribute = getAttribute(aria_sortAttr);
+    auto& sortAttribute = header->getAttribute(aria_sortAttr);
+    if (sortAttribute.isNull())
+        return AccessibilitySortDirection::None;
+
     if (equalLettersIgnoringASCIICase(sortAttribute, "ascending"))
         return AccessibilitySortDirection::Ascending;
     if (equalLettersIgnoringASCIICase(sortAttribute, "descending"))
@@ -2564,7 +2571,7 @@
         return AccessibilitySortDirection::Descending;
     if (equalLettersIgnoringASCIICase(sortAttribute, "other"))
         return AccessibilitySortDirection::Other;
-    
+
     return AccessibilitySortDirection::None;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to