Bug 161734 - AX: Aria-activedescendant not supported
Summary: AX: Aria-activedescendant not supported
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Accessibility (show other bugs)
Version: Safari 9
Hardware: All OS X 10.11
: P2 Critical
Assignee: chris fleizach
URL:
Keywords: InRadar
: 126058 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-09-08 00:32 PDT by helene.vinh
Modified: 2019-09-26 11:53 PDT (History)
14 users (show)

See Also:


Attachments
patch (10.96 KB, patch)
2017-12-27 09:05 PST, chris fleizach
no flags Details | Formatted Diff | Diff
patch (11.28 KB, patch)
2017-12-27 09:13 PST, chris fleizach
no flags Details | Formatted Diff | Diff
patch (11.26 KB, patch)
2017-12-27 09:15 PST, chris fleizach
ews: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews103 for mac-elcapitan (2.17 MB, application/zip)
2017-12-27 10:14 PST, Build Bot
no flags Details
Archive of layout-test-results from ews107 for mac-elcapitan-wk2 (2.59 MB, application/zip)
2017-12-27 10:26 PST, Build Bot
no flags Details
Archive of layout-test-results from ews115 for mac-elcapitan (3.23 MB, application/zip)
2017-12-27 10:43 PST, Build Bot
no flags Details
patch (16.98 KB, patch)
2017-12-28 01:07 PST, chris fleizach
no flags Details | Formatted Diff | Diff
patch (16.96 KB, patch)
2017-12-28 01:12 PST, chris fleizach
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description helene.vinh 2016-09-08 00:32:58 PDT
Hello,

I am working for Amadeus, a company that provides IT solutions for the travel industry.
We are developing a flight booking website that should be accessible to screen reader users.

We are currently encountering a specific issue with VoiceOver with the support of aria-activedescendant attribute.
This has been used to implement a datepicker and an autocomplete widget.
When navigating on the active element, VoiceOver is not reading it (suggestion in the autocomplete list and date in the datepicker).

Please launch the URL below to reproduce the issue.
The concerned widget are the city picker and the datepicker in the search bar at the top of the page.

Testing environment
We are testing on MAC OS El Capitain 10.11 with Safari browser and VoiceOver.

Best regards

URL for test page

https://pcm.uat01.amadeus.com/plnext/demo/Override.action?SO_SITE_RUI_HIDE_MDF_SRC=FALSE&TRIP_FLOW=YES&BOOKING_FLOW=REVENUE&B_LOCATION_1=KEF&B_LOCATION_2=LON&B_DATE_1=201612110000&B_ANY_TIME_1=TRUE&E_LOCATION_1=LON&E_LOCATION_2=KEF&B_DATE_2=201612220000&B_ANY_TIME_2=TRUE&TRIP_TYPE=R&EXTERNAL_ID=BOOKING&PRICING_TYPE=O&EMBEDDED_TRANSACTION=FlexPricerAvailability&DISPLAY_TYPE=2&ARRANGE_BY=D&SO_SITE_MATRIX_CALENDAR=FALSE&REFRESH=0&COMMERCIAL_FARE_FAMILY_1=OWCOACHEU&COMMERCIAL_FARE_FAMILY_2=OWCOMFVIA&COMMERCIAL_FARE_FAMILY_3=OWCOMFVIA&DATE_RANGE_VALUE_1=3&DATE_RANGE_VALUE_2=3&DATE_RANGE_QUALIFIER_1=C&DATE_RANGE_QUALIFIER_2=C&TRAVELLER_TYPE_1=ADT&TRAVELLER_TYPE_2=&TRAVELLER_TYPE_3=&TRAVELLER_TYPE_4=&TRAVELLER_TYPE_5=&TRAVELLER_TYPE_6=&TRAVELLER_TYPE_7=&TRAVELLER_TYPE_8=&TRAVELLER_TYPE_9=&HAS_INFANT_1=FALSE&HAS_INFANT_2=FALSE&HAS_INFANT_3=FALSE&HAS_INFANT_4=FALSE&HAS_INFANT_5=FALSE&HAS_INFANT_6=FALSE&HAS_INFANT_7=FALSE&HAS_INFANT_8=FALSE&HAS_INFANT_9=FALSE&SO_SITE_EXT_PSPURL=&SO_SITE_EXT_MerchantID=FI&SO_GL=&SO_SITE_OFFICE_ID=KEFFI08AA&SO_SITE_QUEUE_OFFICE_ID=KEFFI08AA&SO_SITE_QUEUE_CATEGORY=0C0&SO_SITE_MOP_EXT=TRUE&SO_SITE_FOP_MODE=SITE&SITE=5APDDEMO&LANGUAGE=GB&SO_SITE_APIV2_SERVER_USER_ID=GUEST&SO_SITE_APIV2_SERVER=194.156.170.78&SO_SITE_APIV2_SERVER_PWD=TAZ&SO_SITE_CORPORATE_ID=OCGPDT&SO_SITE_SI_SAP=1ASIXJCP&SO_SITE_SI_SERVER_PORT=18033&SO_SITE_SI_SERVER_IP=193.23.185.67&SO_SITE_SI_USER=UNSET&SO_SITE_SI_PASSWORD=UNSET&SO_SITE_SI_1AXML_FROM=SEP_JCP&SO_SITE_FQ_INTERFACE_ACTIVE=FALSE&SO_SITE_HOST_TRACE_ACTIVE=TRUE&SO_SITE_FP_TRACES_ON=FALSE
Comment 1 Radar WebKit Bug Importer 2016-09-08 00:33:31 PDT
<rdar://problem/28202679>
Comment 2 helene.vinh 2017-01-04 04:33:48 PST
Hello,

Any news on this issue?

Could you please confirm that there is a better support of aria-activedescendant with the Sierra release?

Thanks & regards
Comment 3 Jesse Beach 2017-02-08 16:31:08 PST
We are running up against this issue as well at Facebook. Our top-level search bar experience is hampered on OSX because of this issue. I've put together a codepen that can be tested on OSX with VoiceOver. Note that the items targeted by the aria-activedescendant attribute on the combobox input are not announced by VoiceOver.

http://codepen.io/jessebeach/pen/OWBJRy

I tested this behavior with JAWS 16 on Windows using Chrome and the example codepen behaved as expected -- the items targeted by aria-activedescendant are announced when the id value is changed in the attribute.

This gap is functionality for Safari and Chrome on OSX is a serious impediment for low vision and blind web users.
Comment 4 Jesse Beach 2017-02-09 11:05:03 PST
Related to: https://bugs.webkit.org/show_bug.cgi?id=167680
Comment 5 Jesse Beach 2017-02-09 13:09:59 PST
Update: aria-activedescendant works in Chrome (not Safari) in combination with a role of textbox. Combined with a role of combobox, aria-activedescendant does not work in Chrome or Safari.
Comment 6 helene.vinh 2017-02-10 00:38:52 PST
Hello,

In our case, the "aria-activedescendant" is put on a simple text input without any role.
Comment 7 helene.vinh 2017-03-02 02:38:42 PST
Any update please?

Thanks
Comment 8 chris fleizach 2017-12-27 09:05:40 PST
Created attachment 330217 [details]
patch
Comment 9 chris fleizach 2017-12-27 09:13:18 PST
Created attachment 330218 [details]
patch
Comment 10 Build Bot 2017-12-27 09:14:24 PST
Attachment 330218 [details] did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2506:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 11 chris fleizach 2017-12-27 09:15:39 PST
Created attachment 330219 [details]
patch
Comment 12 chris fleizach 2017-12-27 09:17:12 PST
Note: we still need a fix in VoiceOver before this will work.
Comment 13 Build Bot 2017-12-27 10:14:42 PST
Comment on attachment 330219 [details]
patch

Attachment 330219 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/5844933

New failing tests:
accessibility/lists.html
Comment 14 Build Bot 2017-12-27 10:14:43 PST
Created attachment 330221 [details]
Archive of layout-test-results from ews103 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews103  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 15 Build Bot 2017-12-27 10:26:22 PST
Comment on attachment 330219 [details]
patch

Attachment 330219 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/5844946

New failing tests:
accessibility/lists.html
Comment 16 Build Bot 2017-12-27 10:26:24 PST
Created attachment 330222 [details]
Archive of layout-test-results from ews107 for mac-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-elcapitan-wk2  Platform: Mac OS X 10.11.6
Comment 17 Jesse Beach 2017-12-27 10:36:18 PST
```
if (activeDescendant->isDescendantOfObject(element.get()))
```

@cfleizach, is this assuming an ancestor/descendant relationship for the potential active descendent items of the controlling element? aria-owns would create such a relationship in the AX Tree, but aria-controls can also designate a container for "descendants", noted in ARIA 1.1 (https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant) and no such ancestor/descendant relationship would exist in the AX Tree in this case.
Comment 18 Build Bot 2017-12-27 10:43:53 PST
Comment on attachment 330219 [details]
patch

Attachment 330219 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/5844989

New failing tests:
svg/wicd/rightsizing-grid.xhtml
accessibility/lists.html
Comment 19 Build Bot 2017-12-27 10:43:54 PST
Created attachment 330223 [details]
Archive of layout-test-results from ews115 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews115  Port: mac-elcapitan  Platform: Mac OS X 10.11.6
Comment 20 Jesse Beach 2017-12-27 10:45:53 PST
Aha!

```
<input type="text" role="combobox" id="combobox" aria-controls="list" aria-label="Combobox">
```

Sorry, I should have kept reading before commenting.

From the ARIA 1.1 spec:

"When a combobox is expanded, authors MUST ensure it contains or owns an element that has a role of listbox, tree, grid, or dialog."

You've accounted for `list` in this patch, not `listbox`. Are `tree`, `grid` and `dialog` accounted for as well?
Comment 21 Jesse Beach 2017-12-27 11:21:50 PST
@cfleizach, here are the official examples of comboboxes from that ARIA 1.1 Authoring Practices Guide. These examples could be used to create test cases.

https://www.w3.org/TR/wai-aria-practices-1.1/examples/combobox/aria1.1pattern/listbox-combo.html

Thank you for working on this!
Comment 22 chris fleizach 2017-12-27 17:31:30 PST
Will take a look at those other cases. thanks for double checking me!
Comment 23 chris fleizach 2017-12-27 23:35:34 PST
I don't think the dialog case needs anything to be done here, since focus needs to be managed by the author between dialog and combobox
Comment 24 chris fleizach 2017-12-28 01:07:24 PST
Created attachment 330230 [details]
patch
Comment 25 Build Bot 2017-12-28 01:10:13 PST
Attachment 330230 [details] did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3380:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3380:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 26 chris fleizach 2017-12-28 01:12:39 PST
Created attachment 330231 [details]
patch
Comment 27 Joanmarie Diggs (irc: joanie) 2018-01-18 05:22:48 PST
Note to gardeners: The new test (aria-combobox-control-owns-elements.html) will time out. That is due to bug 171185 and/or bug 171186.
Comment 28 WebKit Commit Bot 2018-01-18 09:26:28 PST
Comment on attachment 330231 [details]
patch

Clearing flags on attachment: 330231

Committed r227144: <https://trac.webkit.org/changeset/227144>
Comment 29 WebKit Commit Bot 2018-01-18 09:26:30 PST
All reviewed patches have been landed.  Closing bug.
Comment 30 Jesse Beach 2018-01-18 14:39:35 PST
WOOOOHHOOOOOO!!!
Comment 31 helene.vinh 2018-01-30 07:20:57 PST
Hello Chris,

Could you please provide on which version the patch has been applied?

We tested on High Sierra 10.13.3 and the issue still persists.

Thank you
Comment 32 chris fleizach 2018-01-30 08:15:45 PST
(In reply to helene.vinh from comment #31)
> Hello Chris,
> 
> Could you please provide on which version the patch has been applied?
> 
> We tested on High Sierra 10.13.3 and the issue still persists.
> 
> Thank you

I don't know when it will be included in a public release, but it also requires a change in VoiceOver so there are a few moving parts.
Comment 33 James Craig 2019-09-26 11:53:43 PDT
*** Bug 126058 has been marked as a duplicate of this bug. ***