Bug 193382

Summary: AX: Update list heuristics to include linked lists inside navigation containers
Product: WebKit Reporter: James Craig <jcraig>
Component: AccessibilityAssignee: chris fleizach <cfleizach>
Status: RESOLVED FIXED    
Severity: Normal CC: aboxhall, apinheiro, cfleizach, dmazzoni, ews-watchlist, jdiggs, liamgutierrez73, marco.zehe, pgrucza, samuel_white, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Attachments:
Description Flags
patch
none
patch none

Description James Craig 2019-01-12 10:56:19 PST
AX: Update list heuristics to include linked lists inside navigation containers

There were a few Twitter threads recently about the WebKit behavior to distinguish unstyled layout lists from unstyled semantic lists. Generally, I still believe WebKit is correct to heuristically suppress list-itis from screen reader users, but we can make it better for authors by continuing to update these heuristics.

https://github.com/WebKit/webkit/blob/master/Source/WebCore/accessibility/AccessibilityList.cpp

The first actionable suggestion that came out of the discussion was to account for link lists that are descendants (not limited to direct children) of nav elements or role=navigation. Even single-item links seem fine to me.

Other suggestions were about styling (bg colors, etc.) like WebKit has for the data tables, but I didn't see anything actionable in that category yet. If I do, I'll file it as a separate bug tracker and try to link it here.
Comment 1 Radar WebKit Bug Importer 2019-01-12 10:56:36 PST
<rdar://problem/47233475>
Comment 2 chris fleizach 2019-01-12 13:37:32 PST
I agree that WebKit has correct behavior. If we were able to just create solutions knowing we had authors who used semantics and ARIA correctly then things would be easy. But in the real world, we need to focus on user needs, in this case it means doing something to make lists meaningful.
Comment 3 James Craig 2020-12-14 09:38:54 PST
The request to "allow list" ULs inside NAV has come up again recently. It seems like a reasonable change that would appease many web developers.
Comment 4 James Craig 2020-12-14 10:40:04 PST
Could be allowing all lists inside nav:

An unstyled list:
<ul style="list-style:none"><!-- Still a list -->

…that is inside any nav: 
<nav> or <el role="navigation">

…with or without other elements in between (e.g. descendant lists... not limited to direct children)

<nav>
  <div><!-- in-betweeners okay -->
    <ul style="list-style:none">


If that results in some false positives, it could be limited to link lists inside navs.

<nav>
  <div><!-- in-betweeners okay -->
    <ul style="list-style:none">
      <li><a href="https://www.apple.com/">Apple</a></li> <!-- only link lists? --> 
      <li><a href="https://www.webkit.org/">WebKit</a></li>
    </ul>
  </div>
</nav>
Comment 5 chris fleizach 2020-12-15 15:17:23 PST
Created attachment 416299 [details]
patch
Comment 6 chris fleizach 2020-12-15 20:09:46 PST
Created attachment 416313 [details]
patch
Comment 7 EWS 2020-12-16 10:24:00 PST
Committed r270896: <https://trac.webkit.org/changeset/270896>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416313 [details].