Chromium Code Reviews| Index: chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc |
| diff --git a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc |
| index 1c44d9a88ff64e2f9a027ea0f8485cff63ed5c16..ec11241f6aa39dde0561fac975c3730bedbcfafb 100644 |
| --- a/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc |
| +++ b/chrome/browser/chromeos/accessibility/spoken_feedback_browsertest.cc |
| @@ -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); |
| @@ -558,20 +554,29 @@ 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"); |
| + 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); |
| } |
| - void SetUpOnMainThread() override { |
| - AccessibilityManager::Get()-> |
| - SetProfileForTest(ProfileHelper::GetSigninProfile()); |
| + // Waits until the OOBE screen signals it is ready. |
| + void WaitUntilJSIsReady() { |
| + LoginDisplayHostImpl* host = static_cast<LoginDisplayHostImpl*>( |
| + LoginDisplayHostImpl::default_host()); |
| + ASSERT_NE(nullptr, host); |
| + chromeos::OobeUI* oobe_ui = host->GetOobeUI(); |
| + ASSERT_NE(nullptr, oobe_ui); |
| + base::RunLoop run_loop; |
| + const bool oobe_ui_ready = oobe_ui->IsJSReady(run_loop.QuitClosure()); |
| + if (!oobe_ui_ready) |
| + run_loop.Run(); |
| } |
| SpeechMonitor speech_monitor_; |
| @@ -580,8 +585,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()); |
| @@ -590,18 +594,34 @@ IN_PROC_BROWSER_TEST_F(OobeSpokenFeedbackTest, DISABLED_SpokenFeedbackInOobe) { |
| views::Widget* widget = web_ui_login_view->GetWidget(); |
| gfx::NativeWindow window = widget->GetNativeWindow(); |
| + WaitUntilJSIsReady(); |
| + // We expect to be in the language select dropdown for this test to wwork, |
|
David Tseng
2015/01/27 18:16:45
nit: new line above
dmazzoni
2015/01/27 18:38:44
Also wwork -> work
|
| + // so fail early if that's not the case. |
| + ASSERT_TRUE( |
| + js_checker().GetBool("document.activeElement.id == 'language-select'")); |
| 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:") { |
| + } |
| + LOG(ERROR) << "Got select your keyboard"; |
|
David Tseng
2015/01/27 18:16:45
nit: remove
|
| + 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 |