Chromium Code Reviews| Index: chrome/browser/ui/views/toolbar/toolbar_action_view_interactive_uitest.cc |
| diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view_interactive_uitest.cc b/chrome/browser/ui/views/toolbar/toolbar_action_view_interactive_uitest.cc |
| index 2aaf36f31a560230544f3483424593ae3171c81c..eced0ba97f809526a2993fa3e1320b848e74cd56 100644 |
| --- a/chrome/browser/ui/views/toolbar/toolbar_action_view_interactive_uitest.cc |
| +++ b/chrome/browser/ui/views/toolbar/toolbar_action_view_interactive_uitest.cc |
| @@ -63,6 +63,29 @@ void TestOverflowedToolbarAction(Browser* browser, |
| button, ui_controls::DOWN | ui_controls::UP, quit_closure); |
| } |
| +void ActivateOverflowedActionWithKeyboard(Browser* browser, |
| + const base::Closure& closure) { |
| + AppMenuButton* app_menu_button = GetAppButtonFromBrowser(browser); |
| + EXPECT_TRUE(app_menu_button->IsMenuShowing()); |
| + // We need to dispatch key events to the menu's native window, rather than the |
| + // browser's. |
| + gfx::NativeWindow native_window = |
| + views::MenuController::GetActiveInstance()->owner()->GetNativeWindow(); |
| + |
| + // Send two key down events followed by the return key. |
| + // The two key down events target the toolbar action in the app menu. |
| + // TODO(devlin): Shouldn't this be one key down event? |
|
varkha
2016/02/06 00:58:08
This will be fixed with https://codereview.chromiu
Devlin
2016/02/06 02:04:23
Oh, nice! I was going to look into that next. Gl
|
| + ui_controls::SendKeyPress(native_window, |
| + ui::VKEY_DOWN, |
| + false, false, false, false); |
| + ui_controls::SendKeyPress(native_window, |
| + ui::VKEY_DOWN, |
| + false, false, false, false); |
| + ui_controls::SendKeyPressNotifyWhenDone(native_window, |
| + ui::VKEY_RETURN, |
| + false, false, false, false, closure); |
| +} |
| + |
| // Tests the context menu of an overflowed action. |
| void TestWhileContextMenuOpen(bool* did_test_while_menu_open, |
| Browser* browser, |
| @@ -337,3 +360,44 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest, |
| EXPECT_FALSE(view_controller->is_showing_popup()); |
| EXPECT_EQ(nullptr, toolbar_actions_bar->popup_owner()); |
| } |
| + |
| +#if defined(USE_OZONE) |
| +// ozone bringup - http://crbug.com/401304 |
| +#define MAYBE_ActivateOverflowedToolbarActionWithKeyboard \ |
| + DISABLED_ActivateOverflowedToolbarActionWithKeyboard |
| +#else |
| +#define MAYBE_ActivateOverflowedToolbarActionWithKeyboard \ |
| + ActivateOverflowedToolbarActionWithKeyboard |
| +#endif |
| +IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest, |
| + MAYBE_ActivateOverflowedToolbarActionWithKeyboard) { |
| + views::MenuController::TurnOffMenuSelectionHoldForTest(); |
| + // Load an extension with an action. |
| + ASSERT_TRUE(LoadExtension( |
| + test_data_dir_.AppendASCII("ui").AppendASCII("browser_action_popup"))); |
| + base::RunLoop().RunUntilIdle(); // Ensure the extension is fully loaded. |
| + |
| + // Reduce visible count to 0 so that all actions are overflowed. |
| + ToolbarActionsModel::Get(profile())->SetVisibleIconCount(0); |
| + |
| + // Set up a listener for the extension being triggered. |
| + ExtensionTestMessageListener listener("Popup opened", false); |
| + |
| + // Open the app menu, navigate to the toolbar action, and activate it via the |
| + // keyboard. |
| + AppMenuButton* app_menu_button = GetAppButtonFromBrowser(browser()); |
| + gfx::Point app_button_loc = |
| + test::GetCenterInScreenCoordinates(app_menu_button); |
| + base::RunLoop loop; |
| + ui_controls::SendMouseMove(app_button_loc.x(), app_button_loc.y()); |
| + ui_controls::SendMouseEventsNotifyWhenDone( |
| + ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, |
| + base::Bind(&ActivateOverflowedActionWithKeyboard, |
| + browser(), loop.QuitClosure())); |
| + loop.Run(); |
| + |
| + // The app menu should no longer be showing. |
| + EXPECT_FALSE(app_menu_button->IsMenuShowing()); |
| + // And the extension should have been activated. |
| + EXPECT_TRUE(listener.WaitUntilSatisfied()); |
| +} |