Commit d329c7f0 authored by plundblad's avatar plundblad Committed by Commit bot

Reland: Reenable oobe spoken feedback test.

The test was disabled because it was flaky.  This CL tries to address that
and reenables the test.

This relands the previous attempt which was still flaky on slow enough environments (such as the memory bots).

BUG=346797
R=dtseng@chromium.org

Committed: https://crrev.com/e03f042d1c76262248e42334b1d0326b0e4319e7
Cr-Commit-Position: refs/heads/master@{#313467}

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

Cr-Commit-Position: refs/heads/master@{#314298}
parent 27ead8ef
......@@ -73,6 +73,7 @@ std::string SpeechMonitor::error() {
void SpeechMonitor::WillSpeakUtteranceWithVoice(const Utterance* utterance,
const VoiceData& voice_data) {
VLOG(0) << "Speaking " << utterance->text();
utterance_queue_.push_back(utterance->text());
if (loop_runner_.get())
loop_runner_->Quit();
......
......@@ -11,8 +11,10 @@
#include "base/command_line.h"
#include "base/strings/string_util.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
#include "chrome/browser/chromeos/accessibility/speech_monitor.h"
#include "chrome/browser/chromeos/login/login_manager_test.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h"
#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
#include "chrome/browser/chromeos/login/ui/webui_login_view.h"
......@@ -62,28 +64,22 @@ class LoggedInSpokenFeedbackTest : public InProcessBrowserTest {
}
void TearDownOnMainThread() override {
AccessibilityManager::SetBrailleControllerForTest(NULL);
AccessibilityManager::SetBrailleControllerForTest(nullptr);
}
void SendKeyPress(ui::KeyboardCode key) {
ASSERT_NO_FATAL_FAILURE(
ASSERT_TRUE(
ui_test_utils::SendKeyPressToWindowSync(
NULL, key, false, false, false, false)));
ASSERT_NO_FATAL_FAILURE(ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
nullptr, key, false, false, false, false)));
}
void SendKeyPressWithControl(ui::KeyboardCode key) {
ASSERT_NO_FATAL_FAILURE(
ASSERT_TRUE(
ui_test_utils::SendKeyPressToWindowSync(
NULL, key, true, false, false, false)));
ASSERT_NO_FATAL_FAILURE(ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
nullptr, key, true, false, false, false)));
}
void SendKeyPressWithSearchAndShift(ui::KeyboardCode key) {
ASSERT_NO_FATAL_FAILURE(
ASSERT_TRUE(
ui_test_utils::SendKeyPressToWindowSync(
NULL, key, false, true, false, true)));
ASSERT_NO_FATAL_FAILURE(ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
nullptr, key, false, true, false, true)));
}
void RunJavaScriptInChromeVoxBackgroundPage(const std::string& script) {
......@@ -102,7 +98,7 @@ class LoggedInSpokenFeedbackTest : public InProcessBrowserTest {
"window.ontouchstart = function() {};");
}
bool PerformAcceleratorAction(ash::AcceleratorAction action) {
bool PerformAcceleratorAction(ash::AcceleratorAction action) {
ash::AcceleratorController* controller =
ash::Shell::GetInstance()->accelerator_controller();
return controller->PerformActionIfEnabled(action);
......@@ -561,20 +557,16 @@ IN_PROC_BROWSER_TEST_F(GuestSpokenFeedbackTest, FocusToolbar) {
// Spoken feedback tests of the out-of-box experience.
//
class OobeSpokenFeedbackTest : public InProcessBrowserTest {
class OobeSpokenFeedbackTest : public LoginManagerTest {
protected:
OobeSpokenFeedbackTest() {}
OobeSpokenFeedbackTest() : LoginManagerTest(false) {}
~OobeSpokenFeedbackTest() override {}
void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(chromeos::switches::kLoginManager);
command_line->AppendSwitch(chromeos::switches::kForceLoginManagerInTests);
command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, "user");
}
void SetUpOnMainThread() override {
AccessibilityManager::Get()->
SetProfileForTest(ProfileHelper::GetSigninProfile());
LoginManagerTest::SetUpCommandLine(command_line);
// Many bots don't have keyboard/mice which triggers the HID detection
// dialog in the OOBE. Avoid confusing the tests with that.
command_line->AppendSwitch(chromeos::switches::kDisableHIDDetectionOnOOBE);
}
SpeechMonitor speech_monitor_;
......@@ -583,8 +575,7 @@ class OobeSpokenFeedbackTest : public InProcessBrowserTest {
DISALLOW_COPY_AND_ASSIGN(OobeSpokenFeedbackTest);
};
// Test is flaky: http://crbug.com/346797
IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, DISABLED_SpokenFeedbackInOobe) {
IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, SpokenFeedbackInOobe) {
ui_controls::EnableUIControls();
ASSERT_FALSE(AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
......@@ -593,18 +584,31 @@ IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, DISABLED_SpokenFeedbackInOobe) {
views::Widget* widget = web_ui_login_view->GetWidget();
gfx::NativeWindow window = widget->GetNativeWindow();
// We expect to be in the language select dropdown for this test to work,
// so make sure that's the case.
js_checker().Execute("$('language-select').focus()");
AccessibilityManager::Get()->EnableSpokenFeedback(
true, ui::A11Y_NOTIFICATION_NONE);
EXPECT_TRUE(speech_monitor_.SkipChromeVoxEnabledMessage());
EXPECT_EQ("Select your language:", speech_monitor_.GetNextUtterance());
EXPECT_EQ("English ( United States)", speech_monitor_.GetNextUtterance());
ASSERT_TRUE(speech_monitor_.SkipChromeVoxEnabledMessage());
// There's no guarantee that ChromeVox speaks anything when injected after
// the page loads, which is by design. Tab forward and then backward
// to make sure we get the right feedback from the language and keyboard
// selection fields.
ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
window, ui::VKEY_TAB, false, false, false, false));
while (speech_monitor_.GetNextUtterance() != "Select your keyboard:") {
}
EXPECT_EQ("U S", speech_monitor_.GetNextUtterance());
EXPECT_TRUE(MatchPattern(speech_monitor_.GetNextUtterance(),
"Combo box * of *"));
ASSERT_TRUE(
ui_test_utils::SendKeyPressToWindowSync(
window, ui::VKEY_TAB, false, false, false, false));
EXPECT_EQ("Select your keyboard:", speech_monitor_.GetNextUtterance());
ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
window, ui::VKEY_TAB, false, true /*shift*/, false, false));
while (speech_monitor_.GetNextUtterance() != "Select your language:") {
}
EXPECT_EQ("English ( United States)", speech_monitor_.GetNextUtterance());
EXPECT_TRUE(
MatchPattern(speech_monitor_.GetNextUtterance(), "Combo box * of *"));
}
} // namespace chromeos
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment