| Index: chrome/browser/browser_focus_uitest.cc
|
| ===================================================================
|
| --- chrome/browser/browser_focus_uitest.cc (revision 28937)
|
| +++ chrome/browser/browser_focus_uitest.cc (working copy)
|
| @@ -58,45 +58,12 @@
|
| EnableDOMAutomation();
|
| }
|
|
|
| - void CheckViewHasFocus(ViewID vid) {
|
| - BrowserWindow* browser_window = browser()->window();
|
| - ASSERT_TRUE(browser_window);
|
| - gfx::NativeWindow window = browser_window->GetNativeHandle();
|
| - ASSERT_TRUE(window);
|
| -#if defined(OS_WIN)
|
| - views::FocusManager* focus_manager =
|
| - views::FocusManager::GetFocusManagerForNativeView(window);
|
| - ASSERT_TRUE(focus_manager);
|
| - EXPECT_EQ(vid, focus_manager->GetFocusedView()->GetID()) <<
|
| - "For view id " << vid;
|
| -#elif defined(OS_LINUX)
|
| - GtkWidget* widget = ViewIDUtil::GetWidget(GTK_WIDGET(window), vid);
|
| - ASSERT_TRUE(widget);
|
| - EXPECT_TRUE(WidgetInFocusChain(GTK_WIDGET(window), widget)) <<
|
| - "For view id " << vid;
|
| -#else
|
| - NOTIMPLEMENTED();
|
| -#endif
|
| + bool IsViewFocused(ViewID vid) {
|
| + return ui_test_utils::IsViewFocused(browser(), vid);
|
| }
|
|
|
| void ClickOnView(ViewID vid) {
|
| - BrowserWindow* browser_window = browser()->window();
|
| - ASSERT_TRUE(browser_window);
|
| -#if defined(TOOLKIT_VIEWS)
|
| - views::View* view =
|
| - reinterpret_cast<BrowserView*>(browser_window)->GetViewByID(vid);
|
| -#elif defined(OS_LINUX)
|
| - gfx::NativeWindow window = browser_window->GetNativeHandle();
|
| - ASSERT_TRUE(window);
|
| - GtkWidget* view = ViewIDUtil::GetWidget(GTK_WIDGET(window), vid);
|
| -#endif
|
| - ASSERT_TRUE(view);
|
| - ui_controls::MoveMouseToCenterAndPress(
|
| - view,
|
| - ui_controls::LEFT,
|
| - ui_controls::DOWN | ui_controls::UP,
|
| - new MessageLoop::QuitTask());
|
| - ui_test_utils::RunMessageLoop();
|
| + ui_test_utils::ClickOnView(browser(), vid);
|
| }
|
|
|
| static void HideNativeWindow(gfx::NativeWindow window) {
|
| @@ -122,26 +89,6 @@
|
| NOTIMPLEMENTED();
|
| #endif
|
| }
|
| -
|
| - private:
|
| -#if defined(OS_LINUX)
|
| - // Check if the focused widget for |root| is |target| or a child of |target|.
|
| - static bool WidgetInFocusChain(GtkWidget* root, GtkWidget* target) {
|
| - GtkWidget* iter = root;
|
| -
|
| - while (iter) {
|
| - if (iter == target)
|
| - return true;
|
| -
|
| - if (!GTK_IS_CONTAINER(iter))
|
| - return false;
|
| -
|
| - iter = GTK_CONTAINER(iter)->focus_child;
|
| - }
|
| -
|
| - return false;
|
| - }
|
| -#endif
|
| };
|
|
|
| class TestInterstitialPage : public InterstitialPage {
|
| @@ -228,13 +175,13 @@
|
| ui_test_utils::RunMessageLoop();
|
| #endif
|
|
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| ClickOnView(VIEW_ID_TAB_CONTAINER);
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| ClickOnView(VIEW_ID_LOCATION_BAR);
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(BrowserFocusTest, BrowsersRememberFocus) {
|
| @@ -247,18 +194,18 @@
|
| gfx::NativeWindow window = browser()->window()->GetNativeHandle();
|
|
|
| // The focus should be on the Tab contents.
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| // Now hide the window, show it again, the focus should not have changed.
|
| HideNativeWindow(window);
|
| ShowNativeWindow(window);
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| browser()->FocusLocationBar();
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
| // Hide the window, show it again, the focus should not have changed.
|
| HideNativeWindow(window);
|
| ShowNativeWindow(window);
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // The rest of this test does not make sense on Linux because the behavior
|
| // of Activate() is not well defined and can vary by window manager.
|
| @@ -283,7 +230,7 @@
|
| // Switch to the 1st browser window, focus should still be on the location
|
| // bar and the second browser should have nothing focused.
|
| browser()->window()->Activate();
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
| EXPECT_EQ(NULL, focus_manager2->GetFocusedView());
|
|
|
| // Switch back to the second browser, focus should still be on the page.
|
| @@ -340,7 +287,7 @@
|
|
|
| ViewID vid = kFocusPage[i][j] ? VIEW_ID_TAB_CONTAINER_FOCUS_VIEW :
|
| VIEW_ID_LOCATION_BAR;
|
| - CheckViewHasFocus(vid);
|
| + ASSERT_TRUE(IsViewFocused(vid));
|
| }
|
| }
|
| }
|
| @@ -357,7 +304,7 @@
|
| browser()->Find();
|
| ui_test_utils::FindInPage(browser()->GetSelectedTabContents(),
|
| ASCIIToUTF16("a"), true, false, NULL);
|
| - CheckViewHasFocus(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD));
|
|
|
| // Focus the location bar.
|
| browser()->FocusLocationBar();
|
| @@ -367,21 +314,21 @@
|
| false, NULL);
|
|
|
| // Focus should be on the recently opened tab page.
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| // Select 1st tab, focus should still be on the location-bar.
|
| // (bug http://crbug.com/23296)
|
| browser()->SelectTabContentsAt(0, true);
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Now open the find box again, switch to another tab and come back, the focus
|
| // should return to the find box.
|
| browser()->Find();
|
| - CheckViewHasFocus(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD));
|
| browser()->SelectTabContentsAt(1, true);
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| browser()->SelectTabContentsAt(0, true);
|
| - CheckViewHasFocus(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD));
|
| }
|
|
|
| // Background window does not steal focus.
|
| @@ -447,7 +394,7 @@
|
| PlatformThread::Sleep(2000);
|
|
|
| // Make sure the location bar is still focused.
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
| }
|
|
|
| // Focus traversal on a regular page.
|
| @@ -476,7 +423,7 @@
|
| // Test forward focus traversal.
|
| for (int i = 0; i < 3; ++i) {
|
| // Location bar should be focused.
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Now let's press tab to move the focus.
|
| for (size_t j = 0; j < arraysize(kExpElementIDs); ++j) {
|
| @@ -510,7 +457,7 @@
|
| // Now let's try reverse focus traversal.
|
| for (int i = 0; i < 3; ++i) {
|
| // Location bar should be focused.
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Now let's press shift-tab to move the focus in reverse.
|
| for (size_t j = 0; j < 7; ++j) {
|
| @@ -551,7 +498,7 @@
|
| ui_test_utils::NavigateToURL(browser(), url);
|
|
|
| // Focus should be on the page.
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| // Let's show an interstitial.
|
| TestInterstitialPage* interstitial_page =
|
| @@ -578,7 +525,7 @@
|
| // Test forward focus traversal.
|
| for (int i = 0; i < 2; ++i) {
|
| // Location bar should be focused.
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Now let's press tab to move the focus.
|
| for (size_t j = 0; j < 7; ++j) {
|
| @@ -606,7 +553,7 @@
|
| // Now let's try reverse focus traversal.
|
| for (int i = 0; i < 2; ++i) {
|
| // Location bar should be focused.
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Now let's press shift-tab to move the focus in reverse.
|
| for (size_t j = 0; j < 7; ++j) {
|
| @@ -641,7 +588,7 @@
|
| ui_test_utils::NavigateToURL(browser(), url);
|
|
|
| // Page should have focus.
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| EXPECT_TRUE(browser()->GetSelectedTabContents()->render_view_host()->view()->
|
| HasFocus());
|
|
|
| @@ -657,14 +604,14 @@
|
| ui_test_utils::RunMessageLoop();
|
|
|
| // The interstitial should have focus now.
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| EXPECT_TRUE(interstitial_page->HasFocus());
|
|
|
| // Hide the interstitial.
|
| interstitial_page->DontProceed();
|
|
|
| // Focus should be back on the original page.
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| }
|
|
|
| // Make sure Find box can request focus, even when it is already open.
|
| @@ -692,21 +639,21 @@
|
| FROM_HERE, new MessageLoop::QuitTask(), kActionDelayMs);
|
| ui_test_utils::RunMessageLoop();
|
|
|
| - CheckViewHasFocus(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD));
|
|
|
| browser()->FocusLocationBar();
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Now press Ctrl+F again and focus should move to the Find box.
|
| ui_controls::SendKeyPressNotifyWhenDone(window, base::VKEY_F, true,
|
| false, false,
|
| new MessageLoop::QuitTask());
|
| ui_test_utils::RunMessageLoop();
|
| - CheckViewHasFocus(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD));
|
|
|
| // Set focus to the page.
|
| ClickOnView(VIEW_ID_TAB_CONTAINER);
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| // Now press Ctrl+F again and focus should move to the Find box.
|
| ui_controls::SendKeyPressNotifyWhenDone(window, base::VKEY_F, true, false,
|
| @@ -717,7 +664,7 @@
|
| MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE, new MessageLoop::QuitTask(), kActionDelayMs);
|
| ui_test_utils::RunMessageLoop();
|
| - CheckViewHasFocus(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD));
|
| }
|
|
|
| // Makes sure the focus is in the right location when opening the different
|
| @@ -725,20 +672,20 @@
|
| IN_PROC_BROWSER_TEST_F(BrowserFocusTest, TabInitialFocus) {
|
| // Open the history tab, focus should be on the tab contents.
|
| browser()->ShowHistoryTab();
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| // Open the new tab, focus should be on the location bar.
|
| browser()->NewTab();
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Open the download tab, focus should be on the tab contents.
|
| browser()->ShowDownloadsTab();
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
|
|
| // Open about:blank, focus should be on the location bar.
|
| browser()->AddTabWithURL(GURL("about:blank"), GURL(), PageTransition::LINK,
|
| true, -1, false, NULL);
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
| }
|
|
|
| // Tests that focus goes where expected when using reload.
|
| @@ -750,17 +697,17 @@
|
| browser()->Reload();
|
| ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser()));
|
| // Focus should stay on the location bar.
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
|
|
| // Open a regular page, focus the location bar, reload.
|
| ui_test_utils::NavigateToURL(browser(), server->TestServerPageW(kSimplePage));
|
| browser()->FocusLocationBar();
|
| - CheckViewHasFocus(VIEW_ID_LOCATION_BAR);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_LOCATION_BAR));
|
| browser()->Reload();
|
| ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser()));
|
| // Focus should now be on the tab contents.
|
| browser()->ShowDownloadsTab();
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| }
|
|
|
| // Tests that focus goes where expected when using reload on a crashed tab.
|
| @@ -774,5 +721,5 @@
|
| ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser()));
|
| // Focus should now be on the tab contents.
|
| browser()->ShowDownloadsTab();
|
| - CheckViewHasFocus(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW);
|
| + ASSERT_TRUE(IsViewFocused(VIEW_ID_TAB_CONTAINER_FOCUS_VIEW));
|
| }
|
|
|