RESOLVED FIXED 134187
AX: improve list heuristics (presentational use versus actual lists)
https://bugs.webkit.org/show_bug.cgi?id=134187
Summary AX: improve list heuristics (presentational use versus actual lists)
James Craig
Reported 2014-06-23 01:14:45 PDT
AX: improve list heuristics (presentational use versus actual lists) Attaching a layout test that should better clarify what WebKit should exposed as a "list" to the accessibility APIs. The expected rolename "generic" of the non-list examples may need to change, but the rest is solid I believe.
Attachments
layout test (7.60 KB, text/html)
2014-06-23 01:15 PDT, James Craig
no flags
patch (16.38 KB, patch)
2015-05-20 16:07 PDT, chris fleizach
darin: review+
Radar WebKit Bug Importer
Comment 1 2014-06-23 01:15:00 PDT
James Craig
Comment 2 2014-06-23 01:15:44 PDT
Created attachment 233587 [details] layout test
chris fleizach
Comment 3 2015-05-20 16:07:02 PDT
Darin Adler
Comment 4 2015-05-20 16:13:01 PDT
Comment on attachment 253470 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=253470&action=review Test coverage is critical, because the accessibility code is complicated and much different from the normal DOM and rendering of these elements. > Source/WebCore/accessibility/AccessibilityList.cpp:104 > + Element* listItemElement = is<Element>(listItem->node()) ? downcast<Element>(listItem->node()) : nullptr; Not sure what the point of the is<Element> check here, because ... > Source/WebCore/accessibility/AccessibilityList.cpp:105 > + if (!listItemElement->beforePseudoElement()) here we would dereference the null pointer. I think this needs an additional null check.
chris fleizach
Comment 5 2015-05-20 16:32:47 PDT
Comment on attachment 253470 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=253470&action=review >> Source/WebCore/accessibility/AccessibilityList.cpp:105 >> + if (!listItemElement->beforePseudoElement()) > > here we would dereference the null pointer. I think this needs an additional null check. i didn't want to downcast to Element unless it was an Element. I guess that's taken care of by the downcast good catch. thanks
chris fleizach
Comment 6 2015-05-20 16:43:09 PDT
James Craig
Comment 7 2015-05-21 00:08:16 PDT
Comment on attachment 253470 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=253470&action=review > LayoutTests/accessibility/list-detection2-expected.txt:25 > + Strange that the "TEST COMPLETE" line came out before the results. Was that an error in my layout test?
chris fleizach
Comment 8 2015-05-21 00:14:53 PDT
(In reply to comment #7) > Comment on attachment 253470 [details] > patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=253470&action=review > > > LayoutTests/accessibility/list-detection2-expected.txt:25 > > + > > Strange that the "TEST COMPLETE" line came out before the results. Was that > an error in my layout test? The before:: content image stuff didn't load early enough for the script to run so i had to run the test after the body finished loading
James Craig
Comment 9 2015-05-21 00:28:40 PDT
(In reply to comment #8) > The before:: content image stuff didn't load early enough for the script to > run so i had to run the test after the body finished loading Makes sense. Thanks for the additional info.
Alexey Proskuryakov
Comment 10 2015-05-21 09:43:57 PDT
The new test fails on all non-Mac platforms: TEST COMPLETE -PASS: ul[role="list"] w/ explicit role and displayed inline -> list. -PASS: ul[role="list"] w/ explicit role but no markers -> list. -PASS: ul w/ default list markers -> list. -PASS: ol w/ default list counters -> list. -PASS: ul w/ list-style-image -> list. -PASS: ul w/ image content on ::before -> list. -PASS: ul w/ image content on inline ::before -> list. -PASS: ul w/ bullet content on ::before -> list. -PASS: ul w/ bullet content on inline ::before -> list. -PASS: ol w/ counter content on ::before -> list. -PASS: ol w/ counter content on inline ::before -> list. -PASS: ul w/ background image (NOT A LIST) -> group. -PASS: ul w/ background on ::before (NOT A LIST) -> group. -PASS: ul w/o explicit role and displayed inline, which defaults to no markers (NOT A LIST) -> group. -PASS: ol w/o explicit role and displayed inline, which defaults to no markers (NOT A LIST) -> group. -PASS: ul w/o explicit role and no markers (NOT A LIST) -> group. +FAIL: ul[role="list"] w/ explicit role and displayed inline -> . Expected: list. +FAIL: ul[role="list"] w/ explicit role but no markers -> . Expected: list. +FAIL: ul w/ default list markers -> . Expected: list. +FAIL: ol w/ default list counters -> . Expected: list. +FAIL: ul w/ list-style-image -> . Expected: list. +FAIL: ul w/ image content on ::before -> . Expected: list. +FAIL: ul w/ image content on inline ::before -> . Expected: list. +FAIL: ul w/ bullet content on ::before -> . Expected: list. +FAIL: ul w/ bullet content on inline ::before -> . Expected: list. +FAIL: ol w/ counter content on ::before -> . Expected: list. +FAIL: ol w/ counter content on inline ::before -> . Expected: list. +FAIL: ul w/ background image (NOT A LIST) -> . Expected: group. +FAIL: ul w/ background on ::before (NOT A LIST) -> . Expected: group. +FAIL: ul w/o explicit role and displayed inline, which defaults to no markers (NOT A LIST) -> . Expected: group. +FAIL: ol w/o explicit role and displayed inline, which defaults to no markers (NOT A LIST) -> . Expected: group. +FAIL: ul w/o explicit role and no markers (NOT A LIST) -> . Expected: group.
chris fleizach
Comment 11 2015-05-21 09:51:31 PDT
(In reply to comment #10) > The new test fails on all non-Mac platforms: > > TEST COMPLETE > -PASS: ul[role="list"] w/ explicit role and displayed inline -> list. > -PASS: ul[role="list"] w/ explicit role but no markers -> list. > -PASS: ul w/ default list markers -> list. > -PASS: ol w/ default list counters -> list. > -PASS: ul w/ list-style-image -> list. > -PASS: ul w/ image content on ::before -> list. > -PASS: ul w/ image content on inline ::before -> list. > -PASS: ul w/ bullet content on ::before -> list. > -PASS: ul w/ bullet content on inline ::before -> list. > -PASS: ol w/ counter content on ::before -> list. > -PASS: ol w/ counter content on inline ::before -> list. > -PASS: ul w/ background image (NOT A LIST) -> group. > -PASS: ul w/ background on ::before (NOT A LIST) -> group. > -PASS: ul w/o explicit role and displayed inline, which defaults to no > markers (NOT A LIST) -> group. > -PASS: ol w/o explicit role and displayed inline, which defaults to no > markers (NOT A LIST) -> group. > -PASS: ul w/o explicit role and no markers (NOT A LIST) -> group. > +FAIL: ul[role="list"] w/ explicit role and displayed inline -> . Expected: > list. > +FAIL: ul[role="list"] w/ explicit role but no markers -> . Expected: list. > +FAIL: ul w/ default list markers -> . Expected: list. > +FAIL: ol w/ default list counters -> . Expected: list. > +FAIL: ul w/ list-style-image -> . Expected: list. > +FAIL: ul w/ image content on ::before -> . Expected: list. > +FAIL: ul w/ image content on inline ::before -> . Expected: list. > +FAIL: ul w/ bullet content on ::before -> . Expected: list. > +FAIL: ul w/ bullet content on inline ::before -> . Expected: list. > +FAIL: ol w/ counter content on ::before -> . Expected: list. > +FAIL: ol w/ counter content on inline ::before -> . Expected: list. > +FAIL: ul w/ background image (NOT A LIST) -> . Expected: group. > +FAIL: ul w/ background on ::before (NOT A LIST) -> . Expected: group. > +FAIL: ul w/o explicit role and displayed inline, which defaults to no > markers (NOT A LIST) -> . Expected: group. > +FAIL: ol w/o explicit role and displayed inline, which defaults to no > markers (NOT A LIST) -> . Expected: group. > +FAIL: ul w/o explicit role and no markers (NOT A LIST) -> . Expected: group. Looking into it
chris fleizach
Comment 12 2015-05-21 10:46:12 PDT
James Craig
Comment 13 2018-05-16 02:51:09 PDT
*** Bug 170179 has been marked as a duplicate of this bug. ***
Note You need to log in before you can comment on or make changes to this bug.