summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/find_bar/find_bar_host_browsertest.cc63
-rw-r--r--chrome/browser/ui/find_bar/find_bar_host_interactive_uitest.cc115
-rw-r--r--chrome/chrome_tests.gypi1
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',