| 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 fc9c6ac02fde22d0b8437e2cd0e291a13ef7db2e..dde485e14ceb91c58411633e53fd33f120a04035 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
|
| @@ -39,9 +39,12 @@ AppMenuButton* GetAppButtonFromBrowser(Browser* browser) {
|
|
|
| // Tests clicking on an overflowed toolbar action. This is called when the app
|
| // menu is open, and handles actually clicking on the action.
|
| -// |button| specifies the mouse button to click with.
|
| +// |button| specifies the mouse button to click with. Optionally
|
| +// |toolbar_action_view| can be provided to receive the targeted
|
| +// ToolbarActionView.
|
| void TestOverflowedToolbarAction(Browser* browser,
|
| - ui_controls::MouseButton button) {
|
| + ui_controls::MouseButton button,
|
| + ToolbarActionView** toolbar_action_view) {
|
| // A bunch of plumbing to safely get at the overflowed toolbar action.
|
| AppMenuButton* app_menu_button = GetAppButtonFromBrowser(browser);
|
| EXPECT_TRUE(app_menu_button->IsMenuShowing());
|
| @@ -63,14 +66,14 @@ void TestOverflowedToolbarAction(Browser* browser,
|
| ui_controls::SendMouseMove(action_view_loc.x(), action_view_loc.y());
|
| EXPECT_TRUE(ui_test_utils::SendMouseEventsSync(
|
| button, ui_controls::DOWN | ui_controls::UP));
|
| +
|
| + if (toolbar_action_view)
|
| + *toolbar_action_view = action_view;
|
| }
|
|
|
| // Tests the context menu of an overflowed action.
|
| -void TestWhileContextMenuOpen(bool* did_test_while_menu_open,
|
| - Browser* browser,
|
| +void TestWhileContextMenuOpen(Browser* browser,
|
| ToolbarActionView* context_menu_action) {
|
| - *did_test_while_menu_open = true;
|
| -
|
| views::MenuItemView* menu_root = context_menu_action->menu_for_testing();
|
| ASSERT_TRUE(menu_root);
|
| ASSERT_TRUE(menu_root->GetSubmenu());
|
| @@ -119,21 +122,11 @@ void TestWhileContextMenuOpen(bool* did_test_while_menu_open,
|
| // Click on the first menu item (which shares bounds, but overlaps, the second
|
| // row action).
|
| ui_controls::SendMouseMove(action_view_loc.x(), action_view_loc.y());
|
| - ui_controls::SendMouseEventsNotifyWhenDone(
|
| - ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, base::Closure());
|
| -
|
| + EXPECT_TRUE(ui_test_utils::SendMouseEventsSync(
|
| + ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP));
|
| // Test resumes in the main test body.
|
| }
|
|
|
| -// Posts a task to test the context menu.
|
| -void OnContextMenuWillShow(bool* did_test_while_menu_open,
|
| - Browser* browser,
|
| - ToolbarActionView* toolbar_action_view) {
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE, base::Bind(&TestWhileContextMenuOpen, did_test_while_menu_open,
|
| - browser, toolbar_action_view));
|
| -}
|
| -
|
| } // namespace
|
|
|
| class ToolbarActionViewInteractiveUITest : public ExtensionBrowserTest {
|
| @@ -201,7 +194,7 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP));
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - TestOverflowedToolbarAction(browser(), ui_controls::LEFT);
|
| + TestOverflowedToolbarAction(browser(), ui_controls::LEFT, nullptr);
|
|
|
| base::RunLoop().RunUntilIdle();
|
| // The app menu should no longer be showing.
|
| @@ -214,8 +207,17 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| // TODO(jonross): determine cause of new flake, and restore previous MAYBE
|
| // conditions. Temporarily disabling due to number of flakes (crbug.com/639010)
|
| // Tests the context menus of overflowed extension actions.
|
| +
|
| +#if defined(USE_OZONE)
|
| +// ozone bringup - http://crbug.com/401304
|
| +#define MAYBE_TestContextMenuOnOverflowedAction \
|
| + DISABLED_TestContextMenuOnOverflowedAction
|
| +#else
|
| +#define MAYBE_TestContextMenuOnOverflowedAction \
|
| + TestContextMenuOnOverflowedAction
|
| +#endif
|
| IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| - DISABLED_TestContextMenuOnOverflowedAction) {
|
| + MAYBE_TestContextMenuOnOverflowedAction) {
|
| views::MenuController::TurnOffMenuSelectionHoldForTest();
|
|
|
| // Load an extension that has a home page (important for the context menu's
|
| @@ -243,13 +245,6 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| // Reduce visible count to 0 so that all actions are overflowed.
|
| ToolbarActionsModel::Get(profile())->SetVisibleIconCount(0);
|
|
|
| - // Set a callback for the context menu showing.
|
| - bool did_test_while_menu_open = false;
|
| - base::Callback<void(ToolbarActionView*)> context_menu_callback(
|
| - base::Bind(&OnContextMenuWillShow, &did_test_while_menu_open, browser()));
|
| - ToolbarActionView::set_context_menu_callback_for_testing(
|
| - &context_menu_callback);
|
| -
|
| AppMenuButton* app_menu_button = GetAppButtonFromBrowser(browser());
|
| // Click on the app button, and then right-click on the first toolbar action.
|
| gfx::Point app_button_loc =
|
| @@ -257,18 +252,22 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| ui_controls::SendMouseMove(app_button_loc.x(), app_button_loc.y());
|
| EXPECT_TRUE(ui_test_utils::SendMouseEventsSync(
|
| ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP));
|
| -
|
| base::RunLoop().RunUntilIdle();
|
| - TestOverflowedToolbarAction(browser(), ui_controls::RIGHT);
|
| +
|
| + // Right clicks on the action view, this should trigger the context menu.
|
| + ToolbarActionView* action_view = nullptr;
|
| + TestOverflowedToolbarAction(browser(), ui_controls::RIGHT, &action_view);
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - // Test is continued first in TestOverflowedToolbarAction() to right click on
|
| - // the action, followed by OnContextMenuWillShow() and
|
| - // TestWhileContextMenuOpen().
|
| + // Ensure that the menu actually opened.
|
| + EXPECT_TRUE(action_view->IsMenuRunningForTesting());
|
|
|
| - // Make sure we did all the expected tests.
|
| - EXPECT_TRUE(did_test_while_menu_open);
|
| + // Triggers the action within the context menu. This should load the extension
|
| + // webpage, and close the menu.
|
| + TestWhileContextMenuOpen(browser(), action_view);
|
| + base::RunLoop().RunUntilIdle();
|
|
|
| + EXPECT_FALSE(action_view->IsMenuRunningForTesting());
|
| // We should have navigated to the extension's home page, which is google.com.
|
| EXPECT_EQ(
|
| GURL("https://www.google.com/"),
|
| @@ -336,9 +335,8 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| EXPECT_EQ(nullptr, toolbar_actions_bar->popup_owner());
|
| }
|
|
|
| -#if defined(USE_OZONE) || defined(OS_WIN)
|
| +#if defined(USE_OZONE)
|
| // ozone bringup - http://crbug.com/401304
|
| -// flaky on Windows - http://crbug.com/638692
|
| #define MAYBE_ActivateOverflowedToolbarActionWithKeyboard \
|
| DISABLED_ActivateOverflowedToolbarActionWithKeyboard
|
| #else
|
| @@ -379,11 +377,9 @@ IN_PROC_BROWSER_TEST_F(ToolbarActionViewInteractiveUITest,
|
| false);
|
| // The triggering of the action and subsequent widget destruction occurs on
|
| // the message loop. Wait for this all to complete.
|
| - base::RunLoop loop;
|
| - ui_controls::SendKeyPressNotifyWhenDone(native_window, ui::VKEY_RETURN, false,
|
| - false, false, false,
|
| - loop.QuitClosure());
|
| - loop.Run();
|
| + EXPECT_TRUE(ui_test_utils::SendKeyPressToWindowSync(
|
| + native_window, ui::VKEY_RETURN, false, false, false, false));
|
| + base::RunLoop().RunUntilIdle();
|
|
|
| // The menu should be closed.
|
| EXPECT_FALSE(app_menu_button->IsMenuShowing());
|
|
|