New issue
Advanced search Search tips

Issue 593646 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug
Team-Accessibility



Sign in to add a comment

Broken left/right arrow ARIA autocomplete textbox behaviour (including on Google homepage)

Reported by alex.d...@gmail.com, Mar 10 2016

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36

Example URL:
www.google.com

Steps to reproduce the problem:
I am on Windows 10 and using NVDA 2015.4

This issue occurs on the Google homepage, but there are at least three distinct issues that I show with the attached sample.

Steps to reproduce on the Google homepage:
- open www.google.com
- type hello
- use arrow left/right to move cursor
- notice how NVDA reads each individual character (this is good)
- I get 10 suggestions showing up. They aren't really announced to the screen reader (this is somewhat bad, but not the main issue)
- press arrow down once or twice to choose a suggestion
- notice how NVDA reads each individual suggestion (this is good)
- I get "hello adele lyrics" placed in the search box
- use arrow left/right to move cursor or try to edit the suggestion
- notice how NVDA no longer reads each individual character (this is very bad)
- click somewhere else on the page
- click back in the search box
- now NVDA reads each individual character again.

What I actually want to do:

I'm working on VSCode (https://github.com/Microsoft/vscode) (https://code.visualstudio.com/). VSCode is built on Electron (https://github.com/atom/electron) that is built on Chromium. We want to make VSCode screen reader friendly.

I'm working on the text editor component. You can find a recent incarnation of it at http://www.typescriptlang.org/Playground for example (it is a few months old). I want to make the suggestion list that pops up when you press Ctrl+Space screen reader accessible.

I am really trying hard to workaround these issues, but there is only so much I can do on my side (JS) and the 3rd issue is forcing me to use aria alerts, which are probably the worst way to do accessibility.

Here are the issues:

1. aria-activedescendant is ignored when role="textbox". I think https://www.w3.org/TR/wai-aria/states_and_properties#aria-activedescendant lists that "textbox" should also have this property. Please see also https://www.w3.org/TR/wai-aria/roles#textbox. If you edit the attached sample and change the role from "combobox" to "textbox", please notice how things work the same in FF or IE, but no longer in Chrome. I have tracked this down to /src/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp around line 1269: bool AXLayoutObject::shouldFocusActiveDescendant() const. but there might be other places in code. I can workaround this issue by making my <textarea> have role="combobox", which is wrong, but would work.

2. when having an aria-activedescendant the arrow left / right are not reported to the screen reader. I have noticed that all browsers have this behaviour. IMHO, this is wrong, if the text is freely-editable I think each character should be announced as cursor moves around, regardless of having an aria-activedescendant. I cannot workaround this, but let's say I can add an option to VSCode to show the suggestion only on demand and not have it pop up all the time. This would limit the impact of this issue.

3. when accepting a suggestion, the arrow left / right are not reported to the screen reader until focusing somewhere else on the page and focusing back. This works correctly in IE and FF and only fails in Chrome. I think that the problem is in src/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp around line 2034: void AXLayoutObject::handleActiveDescendantChanged(). I think this method does not really handle the case when a dom node had an aria-activedescendant and the aria-activedescendant attribute has been removed. In other words, I think it handles adding or changing the active descendant, but not removing it. This issue is blocking me in using aria roles because as soon as the suggestions are shown once, the words / characters in the textarea no longer get read when using arrow keys whatsoever. This is also the issue being hit on the Google homepage.

The attached sample shows the 3 issues. Issues #1 and  #3  are Chrome specific, while  issue #2  happens on all browsers. Is there a reason for this (i.e. is it specified in the standard)? I think having a suggestion (active descendant) and changing the text should be possible at the same time.

What is the expected behavior?

What went wrong?
Please read above

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? N/A 

Does this work in other browsers? Yes 

Chrome version: 48.0.2564.116  Channel: stable
OS Version: 10.0
Flash Version: Shockwave Flash 20.0 r0
 
left-right.html
3.4 KB View Download
Components: -Blink UI>Accessibility
Status: Untriaged (was: Unconfirmed)
Owner: nek...@chromium.org
Status: Assigned (was: Untriaged)
Nektarios, please look into these.

Comment 3 by nek...@chromium.org, Mar 10 2016

Hello,
I work on Chrome accessibility and I'll be looking into the issues you have reported. In fact I remember testing VS Code in the past and I am glad that you are trying to improve its accessibility with screen readers.
I'll get back to you once I look through the issues more carefully but thanks for the detailed reports.

Just wondering, is there any news on this particular issue? I am running into something very similar and following this thread closely :)
Been quiet on this issue for about a month now, is it still being looked into?
Project Member

Comment 6 by bugdroid1@chromium.org, Apr 11 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c568219380053695ef94b4372c4911df9c05c99

commit 1c568219380053695ef94b4372c4911df9c05c99
Author: nektar <nektar@chromium.org>
Date: Mon Apr 11 22:07:07 2016

Various fixes for aria-activedescendant.

1. Elements with an ARIA role and an ancestor that exposes an active descendant should be marked focusable according to the ARIA Spec.
2. Elements that are the target of an active descendant should be marked focused if the element that exposes the active descendant attribute is also focused.
3. If an active descendant is removed an event should fire.
4. According to the ARIA Spec, composite widgets, text boxes and ARIA groups should be permitted to expose an active descendant. We were not permitting text boxes to do that whilst we were permitting other widgets that should not have been, such as outlines.
5. ARIA list box options should be marked selectable in the accessibility API if they have an ancestor that exposes an aria-activedescendant attribute.
6. ARIA list box options that are focused via aria-activedescendant should also be marked as selected.
7. Focus and blur events should not fire from Bllink when the active descendant changes or when it is removed. Only an active descendant changed event should fire. The browser should handle any platform specific focus changed events and not Blink.
BUG= 593646 
R=dmazzoni@chromium.org
TESTED=layout test, manually with Jaws and NVDA

Review URL: https://codereview.chromium.org/1841333002

Cr-Commit-Position: refs/heads/master@{#386489}

[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/content/test/data/accessibility/event/listbox-focus-expected-mac.txt
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/content/test/data/accessibility/event/listbox-focus-expected-win.txt
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/content/test/data/accessibility/event/listbox-focus.html
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/content/test/data/accessibility/event/listbox-next-expected-mac.txt
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/content/test/data/accessibility/event/listbox-next-expected-win.txt
[add] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/accessibility/aria-activedescendant-events.html
[add] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/accessibility/aria-activedescendant.html
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/accessibility/contenteditable-caret-position.html
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-ax-expected.txt
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/month-picker-ax-expected.txt
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/month-picker-ax.html
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/week-picker-ax-expected.txt
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/week-picker-ax.html
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.h
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXListBox.h
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXNodeObject.h
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXObject.h
[modify] https://crrev.com/1c568219380053695ef94b4372c4911df9c05c99/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp

Comment 7 by nek...@chromium.org, Apr 11 2016

Thanks all for your patience while I am resolving this bug. The first change that fixes the Blink renderring engine is in. I am now working on a fix on the browser side.

Project Member

Comment 8 by bugdroid1@chromium.org, May 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2c4ec4bed7e28e4f45efe742833dd3a154ac266b

commit 2c4ec4bed7e28e4f45efe742833dd3a154ac266b
Author: nektar <nektar@chromium.org>
Date: Sun May 29 01:26:26 2016

Uses the activedescendant_changed event received from Blink to fire the right focus event on the browser side.

1. Changed all <select> based widgets (list box role and menu list popup role) to fire activedescendant_changed events when the current selection changes. This behavior is the same as with ARIA combo boxes and other ARIA-based widgets that can have an active descendant. This means that we now have a uniform way of notifying the browser when the active child of a widget has changed.
2. Modified platform-specific code to fire the focus events on the active descendant when it changes, instead of relying on Blink.
3. Fires a focus event on the whole list or combo box when it collapses to make Windows screen readers enable their virtual cursor again.
BUG= 593646 
R=dmazzoni@chromium.org
TESTED=Jaws NVDA and VoiceOver, browser tests

Review-Url: https://codereview.chromium.org/1899823002
Cr-Commit-Position: refs/heads/master@{#396653}

[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility.cc
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager.cc
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager.h
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager_android.cc
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager_android.h
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager_mac.mm
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_manager_win.h
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/browser_accessibility_win.cc
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-collapse-expected-mac.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-collapse-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-collapse.html
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-expand-expected-mac.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-expand.html
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-focus-expected-mac.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-focus-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-focus.html
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-next-expected-mac.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/aria-combo-box-next.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/listbox-focus-expected-mac.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/listbox-focus-expected-win.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/listbox-focus.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/listbox-next-expected-mac.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/listbox-next-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-collapse-expected-mac.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-collapse-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-collapse.html
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-expand-expected-mac.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-expand-expected-win.txt
[add] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-expand.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-focus-expected-mac.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-focus-expected-win.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-focus.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-next-expected-mac.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-next-expected-win.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/content/test/data/accessibility/event/menulist-next.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/LayoutTests/accessibility/listbox-focus.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/LayoutTests/accessibility/menu-list-open.html
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/LayoutTests/accessibility/multiselect-list-reports-active-option-expected.txt
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXListBox.cpp
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXListBox.h
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.cpp
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.h
[modify] https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b/third_party/WebKit/Source/modules/accessibility/AXObject.h

Project Member

Comment 9 by bugdroid1@chromium.org, May 31 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/292b41bbd603ae2f11d239f457a8a5f04387fa85

commit 292b41bbd603ae2f11d239f457a8a5f04387fa85
Author: guidou <guidou@chromium.org>
Date: Tue May 31 15:21:21 2016

Revert of Uses the activedescendant_changed event received from Blink to fire the right focus event (patchset #15 id:280001 of https://codereview.chromium.org/1899823002/ )

Reason for revert:
After this CL, DumpAccessibilityEventsTest.AccessibilityEventsAriaComboBoxFocus started to fail consistently on the Mac 10.11 Tests bot.
https://build.chromium.org/p/chromium.mac/builders/Mac10.11%20Tests/builds/1737

Original issue's description:
> Uses the activedescendant_changed event received from Blink to fire the right focus event on the browser side.
>
> 1. Changed all <select> based widgets (list box role and menu list popup role) to fire activedescendant_changed events when the current selection changes. This behavior is the same as with ARIA combo boxes and other ARIA-based widgets that can have an active descendant. This means that we now have a uniform way of notifying the browser when the active child of a widget has changed.
> 2. Modified platform-specific code to fire the focus events on the active descendant when it changes, instead of relying on Blink.
> 3. Fires a focus event on the whole list or combo box when it collapses to make Windows screen readers enable their virtual cursor again.
> BUG= 593646 
> R=dmazzoni@chromium.org
> TESTED=Jaws NVDA and VoiceOver, browser tests
>
> Committed: https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b
> Cr-Commit-Position: refs/heads/master@{#396653}

TBR=dmazzoni@chromium.org,nektar@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG= 593646 

Review-Url: https://codereview.chromium.org/2024053003
Cr-Commit-Position: refs/heads/master@{#396830}

[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility.cc
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager.cc
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager.h
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager_android.cc
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager_android.h
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager_mac.mm
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_manager_win.h
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/browser_accessibility_win.cc
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/browser/accessibility/dump_accessibility_events_browsertest.cc
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-collapse-expected-mac.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-collapse-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-collapse.html
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-expand-expected-mac.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-expand.html
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-focus-expected-mac.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-focus-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-focus.html
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-next-expected-mac.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/aria-combo-box-next.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/listbox-focus-expected-mac.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/listbox-focus-expected-win.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/listbox-focus.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/listbox-next-expected-mac.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/listbox-next-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/menulist-collapse-expected-mac.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/menulist-collapse-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/menulist-collapse.html
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/menulist-expand-expected-mac.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/menulist-expand-expected-win.txt
[delete] https://crrev.com/f54e9b43c06e01f702c97ddf57cfbc0b1cb0547c/content/test/data/accessibility/event/menulist-expand.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/menulist-focus-expected-mac.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/menulist-focus-expected-win.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/menulist-focus.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/menulist-next-expected-mac.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/menulist-next-expected-win.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/content/test/data/accessibility/event/menulist-next.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/LayoutTests/accessibility/listbox-focus.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/LayoutTests/accessibility/menu-list-open.html
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/LayoutTests/accessibility/multiselect-list-reports-active-option-expected.txt
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXListBox.cpp
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXListBox.h
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.cpp
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXNodeObject.h
[modify] https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85/third_party/WebKit/Source/modules/accessibility/AXObject.h

Project Member

Comment 10 by bugdroid1@chromium.org, May 31 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f6c9ef029e28a6bef28e727cd70751d782963e21

commit f6c9ef029e28a6bef28e727cd70751d782963e21
Author: nektar <nektar@chromium.org>
Date: Tue May 31 15:50:18 2016

Reland of Uses the activedescendant_changed event received from Blink to fire the right focus event (patchset #1 id:1 of https://codereview.chromium.org/2024053003/ )

Reason for revert:
Tests will be disabled on a different CL to keep track of fixing them.

Original issue's description:
> Revert of Uses the activedescendant_changed event received from Blink to fire the right focus event (patchset #15 id:280001 of https://codereview.chromium.org/1899823002/ )
>
> Reason for revert:
> After this CL, DumpAccessibilityEventsTest.AccessibilityEventsAriaComboBoxFocus started to fail consistently on the Mac 10.11 Tests bot.
> https://build.chromium.org/p/chromium.mac/builders/Mac10.11%20Tests/builds/1737
>
> Original issue's description:
> > Uses the activedescendant_changed event received from Blink to fire the right focus event on the browser side.
> >
> > 1. Changed all <select> based widgets (list box role and menu list popup role) to fire activedescendant_changed events when the current selection changes. This behavior is the same as with ARIA combo boxes and other ARIA-based widgets that can have an active descendant. This means that we now have a uniform way of notifying the browser when the active child of a widget has changed.
> > 2. Modified platform-specific code to fire the focus events on the active descendant when it changes, instead of relying on Blink.
> > 3. Fires a focus event on the whole list or combo box when it collapses to make Windows screen readers enable their virtual cursor again.
> > BUG= 593646 
> > R=dmazzoni@chromium.org
> > TESTED=Jaws NVDA and VoiceOver, browser tests
> >
> > Committed: https://crrev.com/2c4ec4bed7e28e4f45efe742833dd3a154ac266b
> > Cr-Commit-Position: refs/heads/master@{#396653}
>
> TBR=dmazzoni@chromium.org,nektar@chromium.org
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG= 593646 
>
> Committed: https://crrev.com/292b41bbd603ae2f11d239f457a8a5f04387fa85
> Cr-Commit-Position: refs/heads/master@{#396830}

TBR=dmazzoni@chromium.org,guidou@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 593646 

Review-Url: https://codereview.chromium.org/2025923002
Cr-Commit-Position: refs/heads/master@{#396833}

[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility.cc
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager.cc
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager.h
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager_android.cc
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager_android.h
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager_mac.mm
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_manager_win.h
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/browser_accessibility_win.cc
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/browser/accessibility/dump_accessibility_events_browsertest.cc
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-collapse-expected-mac.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-collapse-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-collapse.html
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-expand-expected-mac.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-expand-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-expand.html
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-focus-expected-mac.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-focus-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-focus.html
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-next-expected-mac.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-next-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/aria-combo-box-next.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/listbox-focus-expected-mac.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/listbox-focus-expected-win.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/listbox-focus.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/listbox-next-expected-mac.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/listbox-next-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-collapse-expected-mac.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-collapse-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-collapse.html
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-expand-expected-mac.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-expand-expected-win.txt
[add] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-expand.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-focus-expected-mac.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-focus-expected-win.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-focus.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-next-expected-mac.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-next-expected-win.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/content/test/data/accessibility/event/menulist-next.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/LayoutTests/accessibility/listbox-focus.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/LayoutTests/accessibility/menu-list-open.html
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/LayoutTests/accessibility/multiselect-list-reports-active-option-expected.txt
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXListBox.cpp
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXListBox.h
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.cpp
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXMenuListPopup.h
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXNodeObject.h
[modify] https://crrev.com/f6c9ef029e28a6bef28e727cd70751d782963e21/third_party/WebKit/Source/modules/accessibility/AXObject.h

The remaining issue is to make left / right arrows read the text in the text field while the suggestions are being displayed and in contrast to up / down which read the currently selected  suggestion. This is not easy to implement, because it means that accessibility focus needs to be placed on the text field when cursors left / right are pressed, and returned back to the currently selected suggestion when up / down cursors are pressed. However, it is unusual and possibly bug-prone to have the decision on where the accessibility focus would be exposed be predicated on what keys where pressed in the past.
Is there a better way to implement this?
Cc: dmazz...@chromium.org
Labels: NewComponent-Accessibility-Blink
Labels: NewComponent-Accessibility
Components: Blink>Accessibility
Components: -UI>Accessibility
Labels: -newcomponent-accessibility-blink -newcomponent-accessibility
Labels: triage-aaron
Labels: -triage-aaron
Labels: triage-aaron
Labels: JAWS
Labels: -JAWS -triage-aaron
Remaining issue is left/right arrow while activedescendant is pointing to a list item. The character echo does not work. This is true in both Firefox and Chrome, for both JAWS and NVDA.

Therefore we need to ask screen reader vendors for a fix on their end. When the caret move event occurs on the element with the aria-activedescendant ... if they can detect that, then perhaps they should special case allowing the caret move to be spoken.
Labels: -Pri-2 Pri-1
Summary: Broken left/right arrow ARIA autocomplete textbox behaviour (including on Google homepage) (was: Broken ARIA behaviour (including on Google homepage))
We can ask the screen readers to make this easier.

However, for today, the way this can work for google.com across current browsers and screen readers is the same way the URL bar works. As you down arrow, focus doesn't move to the list, but instead, the text in the editbox changes to the current selection. I suggest we do that.
Labels: triage-dougt
Labels: -triage-dougt

Comment 27 by ja...@nvaccess.org, Aug 28 2017

> Therefore we need to ask screen reader vendors for a fix on their end. When the caret move event occurs on the element with the aria-activedescendant ... if they can detect that,

We can't. aria-activedescendant by definition relates to managing "focus". So, from the platform perspective at least, it is treated as if it were a normal focus change.

> then perhaps they should special case allowing the caret move to be spoken.

There's a lot more than just speaking the caret move here. There are major differences in behaviour depending on what has focus. For example, if a text box has focus, we intercept the arrow keys so we can correctly report caret movement. We don't do this interception if a text box doesn't have focus. In addition, using a command to report the focus or report the line is going to behave very differently if a list item has focus vs a text box. Finally, autocomplete focus is problematic for braille, since now the braille user can't see the text they've typed at all.

IMO, the current guidelines for ARIA autocompletes need a re-think. Because focus really needs to remain on the text box to be useful, I think we should instead use aria-controls on the text box to refer to the suggestions list and then ensure that selection is managed in the list. Neither DOM focus nor aria-activedescendant should be touched. This way, an AT can handle autocomplete suggestions without losing track of the text box (which is still managing most input from the user). This is how Microsoft handle autocompletes with UIA and I think it makes a lot of sense given the problems I've seen. Unfortunately, this does require a change right across the board: the spec, maybe browsers if they don't expose aria-controls, ATs and the implementations.

Comment 28 by ja...@nvaccess.org, Aug 28 2017

> However, for today, the way this can work for google.com across current browsers and screen readers is the same way the URL bar works. As you down arrow, focus doesn't move to the list, but instead, the text in the editbox changes to the current selection.

Actually, the way the URL bar autocomplete works in Chrome is the subject of a bug I haven't gotten around to filing yet. That's a major gripe of mine concerning Chrome. The problem is that this method allows you to see the URL, but not the rest of the text associated with the suggestion; e.g. the title of the page (which I'm pretty sure gets shown to sighted users).

This might be okay for google.com, though, as it doesn't seem there is any additional text associated with suggestions. I'm still not a massive fan of this, though, as it means you can't see the number of suggestions. For now as ugly as it is, I think it'd be better to manage focus for left/right arrows, which is how most working implementations currently do it.
Labels: win-a11y
Labels: contrast
Labels: editing
Labels: -contrast combo-boxes
Labels: a11y-testers
Owner: aleventhal@chromium.org
Status: Started (was: Assigned)
Laura/David, can you see if this still reproduces? 
Labels: -a11y-testers
Chrome: 66.0.3350.0
NVDA: 2017.4
JAWS: 2018 
Google.com currently seems to work well.

I can type a term and hit down arrow to see other suggestions
Left and right arrows work to edit the new search box contents

A few things I noticed:
If there is an autocomplete without hitting down arrow, this does not work.
Sometimes there are multiples of my same search term in the list
Search: toast
1. Toastmasters
2. Toast
3. Toast
4. Toast, INC

Search: Hello
1. Hello
2. Hello fresh
3. Hello neighbor

Status: Fixed (was: Started)
This generally works. Please open new bugs for any subtle bugs on the Chrome side.

Sign in to add a comment