TalkBack feedback for password fields is incorrect in Android O |
||
Issue description
This bug is about password text fields on the web, e.g. <input type=password>, when TalkBack is enabled.
Prior to O, Android used a setting that controlled whether the text of a password was read out or not. If it said that passwords should be read out, Chrome would expose the text to accessibility services regardless of whether the text was shown. If it said to obscure passwords, we'd only expose a string of dots.
Starting with O, the behavior has changed. Now there's a system setting that controls whether characters in passwords should be shown briefly, or not at all, and Chrome is supposed to just expose whatever is visible - whether a character or a dot.
HOWEVER (and this part isn't documented anywhere), we're not supposed to fire any events when a character is replaced with a dot, otherwise TalkBack announces that change.
Here's a quick test of all of the permutations and what should happen:
Settings > Security & Location > Show Passwords OFF
1. Type a character in a password field - should hear character first
(from keyboard), then "dot".
2. Delete a character - should hear "dot deleted"
3. Press volume keys to navigate through characters - should hear
"dot"
4. Move focus away and back to password, should hear something like
"three dots"
Settings > Security & Location > Show Passwords ON
1. Type a character in a password field - should hear character twice -
once from keyboard, once from text field. Visually, character changes
to a dot, but nothing should be announced.
2. Delete a character - should hear "dot deleted", you should not hear the
character again because it was replaced with a dot after a short delay
3. Press volume keys to navigate through characters - should hear
"dot" because characters were all replaced with dots
4. Move focus away and back to password, should hear something like
"eight dots"
,
May 12 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4e36c746c6c51486f9e57e47a946ee35918fd9f0 commit 4e36c746c6c51486f9e57e47a946ee35918fd9f0 Author: dmazzoni <dmazzoni@chromium.org> Date: Fri May 12 18:43:33 2017 Fix TalkBack feedback for password fields in Android O Prior to O, we were supposed to expose either the value of a password field, or just dots, depending on a value of a system setting, and independent of what's shown visually. In O, we're now supposed to expose what's visually shown, whether that's characters or dots. HOWEVER, if a character is replaced with a dot we have to update our internal state, but not fire an Android event with that character change, to keep it silent. This fix reverts the change to LayoutText landed by Paul Miller in r468393 (and merged back to M58) because it was suppressing changes to the internal accessibility state when a character was replaced with a dot. Instead now we keep the internal state updated but suppress that particular event from being fired on Android. As a minor improvement, this change implements setTextSelection on AccessibilityNodeInfo, which enables TalkBack to announce when the cursor reaches the beginning or end of a text field the same way as it does with native fields. BUG= 721663 ,716212 TBR=wangxianzhu NOTRY=true Review-Url: https://codereview.chromium.org/2881723002 Cr-Commit-Position: refs/heads/master@{#471383} [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/browser/accessibility/browser_accessibility.cc [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/browser/accessibility/browser_accessibility.h [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/browser/accessibility/browser_accessibility_android.cc [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/browser/accessibility/browser_accessibility_manager_android.cc [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/browser/accessibility/browser_accessibility_manager_android.h [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/content/public/android/java/src/org/chromium/content/browser/accessibility/KitKatBrowserAccessibilityManager.java [modify] https://crrev.com/4e36c746c6c51486f9e57e47a946ee35918fd9f0/third_party/WebKit/Source/core/layout/LayoutText.cpp
,
May 22 2017
,
May 24 2017
Verified on latest Andriod -O/Chrome version-M60. When deleting the password letter, It is reading as bullet instead of dot |
||
►
Sign in to add a comment |
||
Comment 1 by dmazz...@chromium.org
, May 12 2017