New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 785922 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 3
Type: Bug
Team-Accessibility



Sign in to add a comment

Voice over not able to read ‘can’t verify your identity’ toast message

Project Member Reported by rakurati@chromium.org, Nov 16 2017

Issue description

App Version: 63.0.3239.54 Beta
iOS Version: 10.3.3, 11.1
Device: iPhone and iPad

Precondition: 
1. Login in to chrome with the accounts having saved passwords data or save a password
2. Turn on device passcode
3. Enable voice over

Steps to reproduce:
1. Launch chrome 
2. Go to settings--Save passwords
3. Select any password
4. Tap on password copy button
5. Either provide passcode or tap on cancel button in the passcode screen

Observed results:
Notice the toast message is displayed but it is not read

Note: other toast messages that appears on tapping site copy or username copy are read properly by voice over

Expected results:
The displayed toast message should be read out

Number of times you were able to reproduce: 5/5
Bug reproducible after clean install: Yes/No
Bug reproducible after clearing cache and cookies: Yes/No
Bug reproducible on Chrome Mobile on Android: Not tested
Bug reproducible on Safari/Firefox: Firefox: NA, Safari: NA
Bug reproducible on current stable build (App Version, iOS Version): Yes on M62
Bug reproducible on the current beta channel build (App Version, iOS Version): Yes on M63 beta

Link to video/image:
https://drive.google.com/a/google.com/file/d/19TVeOQ5srGVqUkK_lPm76E5jRn2NtzJr/view?usp=sharing

 

Comment 1 by battre@chromium.org, Nov 16 2017

Cc: vabr@chromium.org ioanap@chromium.org vasi...@chromium.org
Status: Available (was: Untriaged)

Comment 2 by vabr@chromium.org, Nov 17 2017

Cc: -vabr@chromium.org
Owner: vabr@chromium.org
Status: Assigned (was: Available)
I'll be looking at a similar  bug 785923 .

Comment 3 by vabr@chromium.org, Nov 20 2017

Cc: lpromero@chromium.org
I was inspecting this on my device (iPhone 5s with Chrome 64.0.3269.0 and 63.0.3239.54) and indeed, on most occasions VoiceOver seems to skip the toast after the reauthentication dialogue.

On some occasions, VoiceOver actually read the toast, and on some other ones it started to read it, but then interrupted itself to read the next selected element.

The relevant code is in ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm, the -(void)copyPassword method.

The path which never has problems is the one under "if(_plainTextPasswordShown)", where no focus changes and only the toast is pulled up and then hidden after a while.

The problematic path is the "else if ([_weakReauthenticationModule canAttemptReauth])", where control is given over to iOS's reauth dialogue, and the toast is displayed when that dialogue is completed. At the same time, focus is returned back to Chrome, and VoiceOver reading the toast competes with VoiceOver reading the newly focused element.

I am not sure how to fix that race. lpromero@ would you know or do you have good pointers to people knowledgeable in accessibility on iOS?
You are right, this is a race in VoiceOver, where the snack bar (aka toast, aka HUD) makes an announcement:
http://google3/third_party/objective_c/material_components_ios/components/Snackbar/src/MDCSnackbarManager.m?l=228-251
and the iOS default when the presented screen is dismissed and looses VoiceOver focus in favor of the underlying screen.

Could you postpone showing the snackbar to after the dismiss animation of the iOS passcode screen?

For example:
1-
 https://cs.chromium.org/chromium/src/ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm?l=451
When is this completion called? Probably too soon (i.e. not tied to the screen animation)?

2- In the settings screen, in viewDidAppear, but that's also not ideal, as you'll need to special case the first appearance, and this is not called on iPad when the app is in Regular width…

Comment 5 by vabr@chromium.org, Nov 23 2017

Thanks, lpromero@, for the helpful thoughts (including clarifying the terminology)!

As for potential events to tie to toast to, what you suggest in 1 is the current state, IIUC, i.e., the toast is shown during the notification of the reauth result from the iOS passcode screen. Number 2 seems like the logical choice, but it's absence on iPad worries me (Stackoverflow [1] seems to confirm that there are no good solutions to that in this case, where we don't control the iOS UI).

Further hacks I am considering include:

 3- Checking if the iOS passcode screen is considered a subview and thus emits a willRemoveSubview. But even if that is the case, this is likely too early (i.e., before the iOS passcode screen actually disappears).

 4- Polling the settings screen for the "focused" property becoming true, with, say a 1 second interval and only display the toast once the screen has focus. This might not be allowed in production code, I'd need to find out.
Yeah, every solution is going to be a hack :(

Two observations:
- Don't forget to take into account people with TouchID and FaceID: in these cases, I think the UI that is presented is not fullscreen. Be sure to check it out, as it will be the case for most users now.
- Can you try to look for instances of this passcode pattern in Apple apps? How does it work within Safari? I'd try to look for such an instance and try to replicate if they solved that problem.

I am a bit pessimistic to find a good workaround, Everything stems from VoiceOver race conditions and the fact that you don't own the presented view controller :(
Owner: ----
Status: Available (was: Assigned)
I'm sadly very unlikely to touch this until I leave the team by the end of the month, so pushing back into the available bugs.

Sign in to add a comment