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

Issue 740430 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Long OOO (go/where-is-mgiuca)
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug-Regression
Team-Accessibility

Blocking:
issue 740008



Sign in to add a comment

SpokenFeedbackTest fails with OmniboxViewViews reverted to previous behaviour

Project Member Reported by mgiuca@chromium.org, Jul 10 2017

Issue description

I am trying to revert r473830 (or restore equivalent functionality to before that revision). When I do this at around r484172, 3 SpokenFeedbackTest tests fail because ChromeVox reads the wrong thing.

This is baffling because this test did *not* fail before r473830 and the test itself has not changed in the interim. Something else is changing.

Specifically:

1. At r473829: SpokenFeedbackTest.FocusToolbar passes.
2. At r484172: SpokenFeedbackTest.FocusToolbar passes.
3. At r484172, revert r473830: SpokenFeedbackTest.FocusToolbar fails.

$ git revert c603f3c7e6a01188ba81015e5354e4797a017f45
$ ninja -j1000 -C out/Release_chromeos interactive_ui_tests
$ out/Release_chromeos/interactive_ui_tests --gtest_filter='*SpokenFeedbackTest.FocusToolbar*'
[2290:2290:0710/144122.751746:INFO:speech_monitor.cc(107)] Speaking chrome vox spoken feedback is ready
[2290:2290:0710/144122.830543:INFO:speech_monitor.cc(107)] Speaking Address and search bar
../../chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc:696: Failure
      Expected: "Reload"
To be equal to: speech_monitor_.GetNextUtterance()
      Which is: "Address and search bar"
[2290:2290:0710/144122.862054:INFO:speech_monitor.cc(107)] Speaking Reload
../../chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc:697: Failure
      Expected: "Button"
To be equal to: speech_monitor_.GetNextUtterance()
      Which is: "Reload"
[  FAILED  ] GuestSpokenFeedbackTest.FocusToolbar, where TypeParam =  and GetParam() =  (6165 ms)
[----------] 1 test from GuestSpokenFeedbackTest (6165 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (6165 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] GuestSpokenFeedbackTest.FocusToolbar, where TypeParam =  and GetParam() = 

 1 FAILED TEST

All three tests fail with the same error:
    GuestSpokenFeedbackTest.FocusToolbar
    TestAsNormalAndGuestUser/SpokenFeedbackTest.FocusToolbar/0
    TestAsNormalAndGuestUser/SpokenFeedbackTest.FocusToolbar/1

Something has changed in between r473830 and r484172 which causes this test to fail when OmniboxViewViews behaves exactly as it did previously.

Analysis:

The test is equivalent to opening a new tab, then pressing Alt+Shift+T (focus toolbar), which focuses the reload button.

It expects ChromeVox to read "Reload" then "Button".

In the version with my commit reverted, it reads "Address and search bar" then "Reload" then "Button".

What reverting my CL does is: it makes OmniboxViewViews::OnBlur deselect the text in the Omnibox. It doesn't make any logical sense that this would trigger an additional utterance about the address bar being selected. This utterance isn't heard when trying this in an actual environment, only in the test. I assume something has been changed in the Textfield class to make an additional voice command read when the selection changes.

This is a nightmare yak; any help would be appreciated.

PS. GuestSpokenFeedbackTest.FocusToolbar (the only test in GuestSpokenFeedbackTest) is completely redundant for TestAsNormalAndGuestUser/SpokenFeedbackTest.FocusToolbar/1; they test exactly the same thing under the same condition. GuestSpokenFeedbackTest can be deleted.
 

Comment 1 by mgiuca@chromium.org, Jul 10 2017

Cc: dtseng@chromium.org
I've found the "culprit" (in quotes because it didn't actually break anything, but would've broken if I hadn't removed the selection change to Omnibox which I am now trying to revert).

r483795 changes the logic for reading out text selection changes. Previously it would only read out the changes if the text field was editable. Now it always reads them. This breaks when I revert r473830 because we make a text selection change on the Omnibox when it gets deselected, and we don't want the Omnibox to read.

I've put up a CL to restore the old behaviour. I don't know the reason this behaviour was changed in the first place; if there's a good reason for it then I would appreciate a suggestion on how to get around this in Omnibox: https://chromium-review.googlesource.com/c/564869/

Comment 2 by mgiuca@chromium.org, Jul 10 2017

Ah I was wrong about the "if the text field was editable" condition. It was actually caused by the logic change (in the same CL) that removed the "is focused" check.

Previously it would only read if the selection changed on a focused textfield. Now it reads if the selection changes on a defocused textfield as well. I don't know why this was changed but I hope we can revert it. Updated https://chromium-review.googlesource.com/c/564869/.
Project Member

Comment 3 by bugdroid1@chromium.org, Jul 18 2017

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

commit d04265ef1608e774be0de90204657cce94a175b4
Author: Matt Giuca <mgiuca@chromium.org>
Date: Tue Jul 18 02:27:59 2017

ChromeVox: If text field changes, only speak if it's focused.

Partially reverts r483795.

The previous behaviour created a bad condition where the Omnibox OnBlur
event needs to deselect the text inside but the deselection erroneously
fires an utterance (even though the text field is deselected).

      interactive_ui_tests --gtest_filter='*SpokenFeedbackTest.*'

Bug:  740430 
Test: revert c603f3c7, then run
Change-Id: I9fc8fba2bc0ac29567d26cde5ba49a550a741fa9
Reviewed-on: https://chromium-review.googlesource.com/564869
Reviewed-by: David Tseng <dtseng@chromium.org>
Commit-Queue: Matt Giuca <mgiuca@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487350}
[modify] https://crrev.com/d04265ef1608e774be0de90204657cce94a175b4/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js

Comment 4 by mgiuca@chromium.org, Jul 18 2017

Status: Fixed (was: Started)
This should be resolved now. David, let me know if you notice any issues with the change I made.
Status: Verified (was: Fixed)

Sign in to add a comment