diff options
-rw-r--r-- | chrome/browser/ui/find_bar/find_bar_host_browsertest.cc | 63 | ||||
-rw-r--r-- | chrome/browser/ui/find_bar/find_bar_host_interactive_uitest.cc | 115 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 1 |
3 files changed, 116 insertions, 63 deletions
diff --git a/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc b/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc index 6300ada..4cb156c 100644 --- a/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc +++ b/chrome/browser/ui/find_bar/find_bar_host_browsertest.cc @@ -63,7 +63,6 @@ const char kUserSelectPage[] = "user-select.html"; const char kCrashPage[] = "crash_1341577.html"; const char kTooFewMatchesPage[] = "bug_1155639.html"; const char kLongTextareaPage[] = "large_textarea.html"; -const char kEndState[] = "end_state.html"; const char kPrematureEnd[] = "premature_end.html"; const char kMoveIfOver[] = "move_if_obscuring.html"; const char kBitstackCrash[] = "crash_14491.html"; @@ -485,68 +484,6 @@ IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindWholeFileContent) { false, false, NULL)); } -// Specifying a prototype so that we can add the WARN_UNUSED_RESULT attribute. -bool FocusedOnPage(WebContents* web_contents, std::string* result) - WARN_UNUSED_RESULT; - -bool FocusedOnPage(WebContents* web_contents, std::string* result) { - return content::ExecuteScriptAndExtractString( - web_contents, - "window.domAutomationController.send(getFocusedElement());", - result); -} - -// This tests the FindInPage end-state, in other words: what is focused when you -// close the Find box (ie. if you find within a link the link should be -// focused). -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPageEndState) { - // First we navigate to our special focus tracking page. - GURL url = GetURL(kEndState); - ui_test_utils::NavigateToURL(browser(), url); - - WebContents* web_contents = - browser()->tab_strip_model()->GetActiveWebContents(); - ASSERT_TRUE(NULL != web_contents); - FindTabHelper* find_tab_helper = - FindTabHelper::FromWebContents(web_contents); - - // Verify that nothing has focus. - std::string result; - ASSERT_TRUE(FocusedOnPage(web_contents, &result)); - ASSERT_STREQ("{nothing focused}", result.c_str()); - - // Search for a text that exists within a link on the page. - int ordinal = 0; - EXPECT_EQ(1, FindInPageWchar(web_contents, L"nk", - kFwd, kIgnoreCase, &ordinal)); - EXPECT_EQ(1, ordinal); - - // End the find session, which should set focus to the link. - find_tab_helper->StopFinding(FindBarController::kKeepSelectionOnPage); - - // Verify that the link is focused. - ASSERT_TRUE(FocusedOnPage(web_contents, &result)); - EXPECT_STREQ("link1", result.c_str()); - - // Search for a text that exists within a link on the page. - EXPECT_EQ(1, FindInPageWchar(web_contents, L"Google", - kFwd, kIgnoreCase, &ordinal)); - EXPECT_EQ(1, ordinal); - - // Move the selection to link 1, after searching. - ASSERT_TRUE(content::ExecuteScriptAndExtractString( - web_contents, - "window.domAutomationController.send(selectLink1());", - &result)); - - // End the find session. - find_tab_helper->StopFinding(FindBarController::kKeepSelectionOnPage); - - // Verify that link2 is not focused. - ASSERT_TRUE(FocusedOnPage(web_contents, &result)); - EXPECT_STREQ("", result.c_str()); -} - // This test loads a single-frame page and makes sure the ordinal returned makes // sense as we FindNext over all the items. IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPageOrdinal) { diff --git a/chrome/browser/ui/find_bar/find_bar_host_interactive_uitest.cc b/chrome/browser/ui/find_bar/find_bar_host_interactive_uitest.cc new file mode 100644 index 0000000..cc486b9 --- /dev/null +++ b/chrome/browser/ui/find_bar/find_bar_host_interactive_uitest.cc @@ -0,0 +1,115 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/strings/utf_string_conversions.h" +#include "chrome/browser/ui/browser_finder.h" +#include "chrome/browser/ui/find_bar/find_bar.h" +#include "chrome/browser/ui/find_bar/find_bar_controller.h" +#include "chrome/browser/ui/find_bar/find_tab_helper.h" +#include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/interactive_test_utils.h" +#include "chrome/test/base/ui_test_utils.h" +#include "content/public/browser/web_contents.h" +#include "content/public/test/browser_test_utils.h" +#include "net/test/embedded_test_server/embedded_test_server.h" + +using base::WideToUTF16; +using content::WebContents; +using net::test_server::EmbeddedTestServer; + +namespace { + +const char kEndState[] = "/find_in_page/end_state.html"; + +class FindInPageInteractiveTest : public InProcessBrowserTest { + public: + FindInPageInteractiveTest() { + } + + // Platform independent FindInPage that takes |const wchar_t*| + // as an input. + int FindInPageWchar(WebContents* web_contents, + const wchar_t* search_str, + bool forward, + bool case_sensitive, + int* ordinal) { + base::string16 search_str16(WideToUTF16(std::wstring(search_str))); + Browser* browser = chrome::FindBrowserWithWebContents(web_contents); + browser->GetFindBarController()->find_bar()->SetFindTextAndSelectedRange( + search_str16, gfx::Range()); + return ui_test_utils::FindInPage( + web_contents, search_str16, forward, case_sensitive, ordinal, NULL); + } +}; + +} // namespace + +// Specifying a prototype so that we can add the WARN_UNUSED_RESULT attribute. +bool FocusedOnPage(WebContents* web_contents, std::string* result) + WARN_UNUSED_RESULT; + +bool FocusedOnPage(WebContents* web_contents, std::string* result) { + return content::ExecuteScriptAndExtractString( + web_contents, + "window.domAutomationController.send(getFocusedElement());", + result); +} + +// This tests the FindInPage end-state, in other words: what is focused when you +// close the Find box (ie. if you find within a link the link should be +// focused). +IN_PROC_BROWSER_TEST_F(FindInPageInteractiveTest, FindInPageEndState) { + ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); + + // Make sure Chrome is in the foreground, otherwise sending input + // won't do anything and the test will hang. + ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); + + // First we navigate to our special focus tracking page. + GURL url = embedded_test_server()->GetURL(kEndState); + ui_test_utils::NavigateToURL(browser(), url); + + WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + ASSERT_TRUE(NULL != web_contents); + FindTabHelper* find_tab_helper = + FindTabHelper::FromWebContents(web_contents); + + // Verify that nothing has focus. + std::string result; + ASSERT_TRUE(FocusedOnPage(web_contents, &result)); + ASSERT_STREQ("{nothing focused}", result.c_str()); + + // Search for a text that exists within a link on the page. + int ordinal = 0; + EXPECT_EQ(1, FindInPageWchar(web_contents, L"nk", + true, false, &ordinal)); + EXPECT_EQ(1, ordinal); + + // End the find session, which should set focus to the link. + find_tab_helper->StopFinding(FindBarController::kKeepSelectionOnPage); + + // Verify that the link is focused. + ASSERT_TRUE(FocusedOnPage(web_contents, &result)); + EXPECT_STREQ("link1", result.c_str()); + + // Search for a text that exists within a link on the page. + EXPECT_EQ(1, FindInPageWchar(web_contents, L"Google", + true, false, &ordinal)); + EXPECT_EQ(1, ordinal); + + // Move the selection to link 1, after searching. + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + web_contents, + "window.domAutomationController.send(selectLink1());", + &result)); + + // End the find session. + find_tab_helper->StopFinding(FindBarController::kKeepSelectionOnPage); + + // Verify that link2 is not focused. + ASSERT_TRUE(FocusedOnPage(web_contents, &result)); + EXPECT_STREQ("", result.c_str()); +} diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index d20d940..3b475a1 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -191,6 +191,7 @@ 'browser/ui/autofill/autofill_popup_controller_interactive_uitest.cc', 'browser/ui/browser_focus_uitest.cc', 'browser/ui/cocoa/panels/panel_cocoa_browsertest.mm', + 'browser/ui/find_bar/find_bar_host_interactive_uitest.cc', 'browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc', 'browser/ui/fullscreen/fullscreen_controller_state_interactive_browsertest.cc', 'browser/ui/gtk/bookmarks/bookmark_bar_gtk_interactive_uitest.cc', |