Changeset 272626 in webkit


Ignore:
Timestamp:
Feb 9, 2021 5:19:33 PM (3 years ago)
Author:
Andres Gonzalez
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:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r272613 r272626  
     12021-02-09  Andres Gonzalez  <andresg_22@apple.com>
     2
     3        Descendants of row and column headers should expose the aria-sort attribute.
     4        https://bugs.webkit.org/show_bug.cgi?id=221590
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Expanded this test to include the case where the header contains a child
     9        element that must also expose the aria-sort attribute inherited from its
     10        parent.
     11
     12        * accessibility/aria-sort-expected.txt:
     13        * accessibility/aria-sort.html:
     14        * accessibility/ios-simulator/aria-sort-ios-expected.txt:
     15        * accessibility/ios-simulator/aria-sort-ios.html:
     16
    1172021-02-09  Ryan Haddad  <ryanhaddad@apple.com>
    218
  • trunk/LayoutTests/accessibility/aria-sort-expected.txt

    r272490 r272626  
    1 column column column
     1column column column column
    22row
    33This tests that aria-sort is exposed correctly to the Mac accessibility API.
     
    1212PASS col3.isAttributeSupported('AXSortDirection') is true
    1313PASS col3.sortDirection is 'AXUnknownSortDirection'
     14PASS link1.isAttributeSupported('AXSortDirection') is true
     15PASS link1.sortDirection is 'AXAscendingSortDirection'
    1416PASS row1.isAttributeSupported('AXSortDirection') is false
    1517PASS successfullyParsed is true
  • trunk/LayoutTests/accessibility/aria-sort.html

    r272490 r272626  
    1616<!-- Other aria-sort direction. -->
    1717<span aria-sort="other" id="col3" role="columnheader">column</span>
     18<!-- The comun header with aria-sort attribute is the parent of a focusable element. -->
     19<span aria-sort="ascending" id="col4" role="columnheader"><a id="link1" href="#">column</a></span>
    1820</div>
    1921<div role="row">
    2022<!-- No aria-sort direction. -->
    2123<span id="row1" role="rowheader">row</span>
     24<span role="gridcell"></span>
    2225<span role="gridcell"></span>
    2326<span role="gridcell"></span>
     
    4548        shouldBe("col3.sortDirection", "'AXUnknownSortDirection'");
    4649
     50        var link1 = accessibilityController.accessibleElementById("link1");
     51        shouldBe("link1.isAttributeSupported('AXSortDirection')", "true");
     52        shouldBe("link1.sortDirection", "'AXAscendingSortDirection'");
     53
    4754        var row1 = accessibilityController.accessibleElementById("row1");
    4855        shouldBe("row1.isAttributeSupported('AXSortDirection')", "false");
  • trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios-expected.txt

    r272490 r272626  
    1 column column column
     1column column column column
    22row
    33This tests that aria-sort is exposed correctly to the iOS accessibility API.
     
    99PASS col2.sortDirection is 'AXDescendingSortDirection'
    1010PASS col3.sortDirection is 'AXUnknownSortDirection'
     11PASS link1.sortDirection is 'AXAscendingSortDirection'
    1112PASS row1.sortDirection is 'AXUnknownSortDirection'
    1213PASS successfullyParsed is true
  • trunk/LayoutTests/accessibility/ios-simulator/aria-sort-ios.html

    r272490 r272626  
    1515<!-- Other aria-sort direction. -->
    1616<span aria-sort="other" id="col3" role="columnheader">column</span>
     17<!-- The comun header with aria-sort attribute is the parent of a focusable element. -->
     18<span aria-sort="ascending" id="col4" role="columnheader"><a id="link1" href="#">column</a></span>
    1719</div>
    1820<div role="row">
     
    3941        shouldBe("col3.sortDirection", "'AXUnknownSortDirection'");
    4042
     43        var link1 = accessibilityController.accessibleElementById("link1");
     44        shouldBe("link1.sortDirection", "'AXAscendingSortDirection'");
     45
    4146        var row1 = accessibilityController.accessibleElementById("row1");
    4247        shouldBe("row1.sortDirection", "'AXUnknownSortDirection'");
  • trunk/Source/WebCore/ChangeLog

    r272625 r272626  
     12021-02-09  Andres Gonzalez  <andresg_22@apple.com>
     2
     3        Descendants of row and column headers should expose the aria-sort attribute.
     4        https://bugs.webkit.org/show_bug.cgi?id=221590
     5
     6        Reviewed by Chris Fleizach.
     7
     8        Tests:
     9        accessibility/aria-sort.html
     10        accessibility/ios-simulator/aria-sort-ios.html
     11
     12        Walk up the accessibility hierarchy to check for an inherited aria-sort
     13        attribute present in a row or column header ancestor.
     14
     15        * accessibility/AccessibilityObject.cpp:
     16        (WebCore::AccessibilityObject::sortDirection const):
     17
    1182021-02-09  Peng Liu  <peng.liu6@apple.com>
    219
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r272390 r272626  
    25542554AccessibilitySortDirection AccessibilityObject::sortDirection() const
    25552555{
    2556     AccessibilityRole role = roleValue();
    2557     if (role != AccessibilityRole::RowHeader && role != AccessibilityRole::ColumnHeader)
     2556    // Only objects that are descendant of column or row headers are allowed to have sort direction.
     2557    auto* header = Accessibility::findAncestor<AccessibilityObject>(*this, true, [] (const AccessibilityObject& object) {
     2558        auto role = object.roleValue();
     2559        return role == AccessibilityRole::ColumnHeader || role == AccessibilityRole::RowHeader;
     2560    });
     2561    if (!header)
    25582562        return AccessibilitySortDirection::Invalid;
    25592563
    2560     const AtomString& sortAttribute = getAttribute(aria_sortAttr);
     2564    auto& sortAttribute = header->getAttribute(aria_sortAttr);
     2565    if (sortAttribute.isNull())
     2566        return AccessibilitySortDirection::None;
     2567
    25612568    if (equalLettersIgnoringASCIICase(sortAttribute, "ascending"))
    25622569        return AccessibilitySortDirection::Ascending;
     
    25652572    if (equalLettersIgnoringASCIICase(sortAttribute, "other"))
    25662573        return AccessibilitySortDirection::Other;
    2567    
     2574
    25682575    return AccessibilitySortDirection::None;
    25692576}
Note: See TracChangeset for help on using the changeset viewer.