| Index: chrome/browser/views/find_bar_host_browsertest.cc
|
| ===================================================================
|
| --- chrome/browser/views/find_bar_host_browsertest.cc (revision 41087)
|
| +++ chrome/browser/views/find_bar_host_browsertest.cc (working copy)
|
| @@ -1,794 +0,0 @@
|
| -// Copyright (c) 2010 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/keyboard_codes.h"
|
| -#include "base/message_loop.h"
|
| -#include "chrome/browser/browser.h"
|
| -#include "chrome/browser/browser_window.h"
|
| -#include "chrome/browser/find_bar_controller.h"
|
| -#include "chrome/browser/find_notification_details.h"
|
| -#include "chrome/browser/renderer_host/render_view_host.h"
|
| -#include "chrome/browser/tab_contents/tab_contents.h"
|
| -#include "chrome/browser/tab_contents/tab_contents_view.h"
|
| -#include "chrome/browser/views/find_bar_host.h"
|
| -#include "chrome/common/notification_service.h"
|
| -#include "chrome/test/in_process_browser_test.h"
|
| -#include "chrome/test/ui_test_utils.h"
|
| -#include "views/focus/focus_manager.h"
|
| -
|
| -const std::wstring kSimplePage = L"404_is_enough_for_us.html";
|
| -const std::wstring kFramePage = L"files/find_in_page/frames.html";
|
| -const std::wstring kFrameData = L"files/find_in_page/framedata_general.html";
|
| -const std::wstring kUserSelectPage = L"files/find_in_page/user-select.html";
|
| -const std::wstring kCrashPage = L"files/find_in_page/crash_1341577.html";
|
| -const std::wstring kTooFewMatchesPage = L"files/find_in_page/bug_1155639.html";
|
| -const std::wstring kEndState = L"files/find_in_page/end_state.html";
|
| -const std::wstring kPrematureEnd = L"files/find_in_page/premature_end.html";
|
| -const std::wstring kMoveIfOver = L"files/find_in_page/move_if_obscuring.html";
|
| -const std::wstring kBitstackCrash = L"files/find_in_page/crash_14491.html";
|
| -const std::wstring kSelectChangesOrdinal =
|
| - L"files/find_in_page/select_changes_ordinal.html";
|
| -const std::wstring kSimple = L"files/find_in_page/simple.html";
|
| -
|
| -const bool kBack = false;
|
| -const bool kFwd = true;
|
| -
|
| -const bool kIgnoreCase = false;
|
| -const bool kCaseSensitive = true;
|
| -
|
| -const int kMoveIterations = 30;
|
| -
|
| -class FindInPageControllerTest : public InProcessBrowserTest {
|
| - public:
|
| - FindInPageControllerTest() {
|
| - EnableDOMAutomation();
|
| - }
|
| -
|
| - protected:
|
| - bool GetFindBarWindowInfo(gfx::Point* position, bool* fully_visible) {
|
| - FindBarTesting* find_bar =
|
| - browser()->GetFindBarController()->find_bar()->GetFindBarTesting();
|
| - return find_bar->GetFindBarWindowInfo(position, fully_visible);
|
| - }
|
| -};
|
| -
|
| -// Platform independent FindInPage that takes |const wchat_t*|
|
| -// as an input.
|
| -int FindInPageWchar(TabContents* tab,
|
| - const wchar_t* search_str,
|
| - bool forward,
|
| - bool case_sensitive,
|
| - int* ordinal) {
|
| - return ui_test_utils::FindInPage(
|
| - tab, WideToUTF16(std::wstring(search_str)),
|
| - forward, case_sensitive, ordinal);
|
| -}
|
| -
|
| -// This test loads a page with frames and starts FindInPage requests.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPageFrames) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our frames page.
|
| - GURL url = server->TestServerPageW(kFramePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Try incremental search (mimicking user typing in).
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - EXPECT_EQ(18, FindInPageWchar(tab, L"g",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(11, FindInPageWchar(tab, L"go",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(04, FindInPageWchar(tab, L"goo",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(03, FindInPageWchar(tab, L"goog",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(02, FindInPageWchar(tab, L"googl",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(01, FindInPageWchar(tab, L"google",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(00, FindInPageWchar(tab, L"google!",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // Negative test (no matches should be found).
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"Non-existing string",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // 'horse' only exists in the three right frames.
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"horse",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // 'cat' only exists in the first frame.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"cat",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try searching again, should still come up with 1 match.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"cat",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try searching backwards, ignoring case, should still come up with 1 match.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"CAT",
|
| - kBack, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try case sensitive, should NOT find it.
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"CAT",
|
| - kFwd, kCaseSensitive, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // Try again case sensitive, but this time with right case.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"dog",
|
| - kFwd, kCaseSensitive, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try non-Latin characters ('Hreggvidur' with 'eth' for 'd' in left frame).
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"Hreggvi\u00F0ur",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"Hreggvi\u00F0ur",
|
| - kFwd, kCaseSensitive, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"hreggvi\u00F0ur",
|
| - kFwd, kCaseSensitive, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -}
|
| -
|
| -std::string FocusedOnPage(TabContents* tab_contents) {
|
| - std::string result;
|
| - ui_test_utils::ExecuteJavaScriptAndExtractString(
|
| - tab_contents->render_view_host(),
|
| - L"",
|
| - L"window.domAutomationController.send(getFocusedElement());",
|
| - &result);
|
| - return 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) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our special focus tracking page.
|
| - GURL url = server->TestServerPageW(kEndState);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - TabContents* tab_contents = browser()->GetSelectedTabContents();
|
| - ASSERT_TRUE(NULL != tab_contents);
|
| -
|
| - // Verify that nothing has focus.
|
| - ASSERT_STREQ("{nothing focused}", FocusedOnPage(tab_contents).c_str());
|
| -
|
| - // Search for a text that exists within a link on the page.
|
| - int ordinal = 0;
|
| - EXPECT_EQ(1, FindInPageWchar(tab_contents, L"nk",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // End the find session, which should set focus to the link.
|
| - tab_contents->StopFinding(false);
|
| -
|
| - // Verify that the link is focused.
|
| - EXPECT_STREQ("link1", FocusedOnPage(tab_contents).c_str());
|
| -
|
| - // Search for a text that exists within a link on the page.
|
| - EXPECT_EQ(1, FindInPageWchar(tab_contents, L"Google",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Move the selection to link 1, after searching.
|
| - std::string result;
|
| - ui_test_utils::ExecuteJavaScriptAndExtractString(
|
| - tab_contents->render_view_host(),
|
| - L"",
|
| - L"window.domAutomationController.send(selectLink1());",
|
| - &result);
|
| -
|
| - // End the find session.
|
| - tab_contents->StopFinding(false);
|
| -
|
| - // Verify that link2 is not focused.
|
| - EXPECT_STREQ("", FocusedOnPage(tab_contents).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) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kFrameData);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Search for 'o', which should make the first item active and return
|
| - // '1 in 3' (1st ordinal of a total of 3 matches).
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - int ordinal = 0;
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - // Go back one match.
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kBack, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - // This should wrap to the top.
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - // This should go back to the end.
|
| - EXPECT_EQ(3, FindInPageWchar(tab, L"o",
|
| - kBack, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| -}
|
| -
|
| -// This tests that the ordinal is correctly adjusted after a selection
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - SelectChangesOrdinal_Issue20883) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our test content.
|
| - GURL url = server->TestServerPageW(kSelectChangesOrdinal);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - TabContents* tab_contents = browser()->GetSelectedTabContents();
|
| - ASSERT_TRUE(NULL != tab_contents);
|
| -
|
| - // Search for a text that exists within a link on the page.
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - int ordinal = 0;
|
| - EXPECT_EQ(4, FindInPageWchar(tab_contents,
|
| - L"google",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Move the selection to link 1, after searching.
|
| - std::string result;
|
| - ui_test_utils::ExecuteJavaScriptAndExtractString(
|
| - tab_contents->render_view_host(),
|
| - L"",
|
| - L"window.domAutomationController.send(selectLink1());",
|
| - &result);
|
| -
|
| - // Do a find-next after the selection. This should move forward
|
| - // from there to the 3rd instance of 'google'.
|
| - EXPECT_EQ(4, FindInPageWchar(tab,
|
| - L"google",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| -
|
| - // End the find session.
|
| - tab_contents->StopFinding(false);
|
| -}
|
| -
|
| -// This test loads a page with frames and makes sure the ordinal returned makes
|
| -// sense.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPageMultiFramesOrdinal) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kFramePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Search for 'a', which should make the first item active and return
|
| - // '1 in 7' (1st ordinal of a total of 7 matches).
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - int ordinal = 0;
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(4, ordinal);
|
| - // Go back one, which should go back one frame.
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kBack, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(4, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(5, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(6, ordinal);
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(7, ordinal);
|
| - // Now we should wrap back to frame 1.
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - // Now we should wrap back to frame last frame.
|
| - EXPECT_EQ(7,
|
| - FindInPageWchar(tab, L"a", kBack, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(7, ordinal);
|
| -}
|
| -
|
| -// We could get ordinals out of whack when restarting search in subframes.
|
| -// See http://crbug.com/5132.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPage_Issue5132) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kFramePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Search for 'goa' three times (6 matches on page).
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - EXPECT_EQ(6, FindInPageWchar(tab, L"goa",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(6, FindInPageWchar(tab, L"goa",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(6, FindInPageWchar(tab, L"goa",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - // Add space to search (should result in no matches).
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"goa ",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| - // Remove the space, should be back to '3 out of 6')
|
| - EXPECT_EQ(6, FindInPageWchar(tab, L"goa",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| -}
|
| -
|
| -// Load a page with no selectable text and make sure we don't crash.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindUnSelectableText) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kUserSelectPage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"text",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(-1, ordinal); // Nothing is selected.
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"Non-existing string",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -}
|
| -
|
| -// Try to reproduce the crash seen in issue 1341577.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindCrash_Issue1341577) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kCrashPage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // This would crash the tab. These must be the first two find requests issued
|
| - // against the frame, otherwise an active frame pointer is set and it wont
|
| - // produce the crash.
|
| - // We used to check the return value and |ordinal|. With ICU 4.2, FiP does
|
| - // not find a stand-alone dependent vowel sign of Indic scripts. So, the
|
| - // exptected values are all 0. To make this test pass regardless of
|
| - // ICU version, we just call FiP and see if there's any crash.
|
| - // TODO(jungshik): According to a native Malayalam speaker, it's ok not
|
| - // to find U+0D4C. Still need to investigate further this issue.
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - FindInPageWchar(tab, L"\u0D4C", kFwd, kIgnoreCase, &ordinal);
|
| - FindInPageWchar(tab, L"\u0D4C", kFwd, kIgnoreCase, &ordinal);
|
| -
|
| - // This should work fine.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"\u0D24\u0D46",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"nostring",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -}
|
| -
|
| -// Try to reproduce the crash seen in http://crbug.com/14491, where an assert
|
| -// hits in the BitStack size comparison in WebKit.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindCrash_Issue14491) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kBitstackCrash);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // This used to crash the tab.
|
| - int ordinal = 0;
|
| - EXPECT_EQ(0, FindInPageWchar(browser()->GetSelectedTabContents(),
|
| - L"s", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -}
|
| -
|
| -// Test to make sure Find does the right thing when restarting from a timeout.
|
| -// We used to have a problem where we'd stop finding matches when all of the
|
| -// following conditions were true:
|
| -// 1) The page has a lot of text to search.
|
| -// 2) The page contains more than one match.
|
| -// 3) It takes longer than the time-slice given to each Find operation (100
|
| -// ms) to find one or more of those matches (so Find times out and has to try
|
| -// again from where it left off).
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindRestarts_Issue1155639) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our page.
|
| - GURL url = server->TestServerPageW(kTooFewMatchesPage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // This string appears 5 times at the bottom of a long page. If Find restarts
|
| - // properly after a timeout, it will find 5 matches, not just 1.
|
| - int ordinal = 0;
|
| - EXPECT_EQ(5, FindInPageWchar(browser()->GetSelectedTabContents(),
|
| - L"008.xml",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -}
|
| -
|
| -// This tests bug 11761: FindInPage terminates search prematurely.
|
| -// This test will be enabled once the bug is fixed.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - DISABLED_FindInPagePrematureEnd) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our special focus tracking page.
|
| - GURL url = server->TestServerPageW(kPrematureEnd);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - TabContents* tab_contents = browser()->GetSelectedTabContents();
|
| - ASSERT_TRUE(NULL != tab_contents);
|
| -
|
| - // Search for a text that exists within a link on the page.
|
| - int ordinal = 0;
|
| - EXPECT_EQ(2, FindInPageWchar(tab_contents, L"html ",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -}
|
| -
|
| -// Make sure Find box disappears on Navigate but not on Refresh.
|
| -#if defined(OS_LINUX) && defined(TOOLKIT_VIEWS)
|
| -// The last EXPECT_FALSE(fully_visible) is failing all the time on
|
| -// the linux_views bot. See bug: http://crbug.com/28629.
|
| -#define FindDisappearOnNavigate DISABLED_FindDisappearOnNavigate
|
| -#endif
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindDisappearOnNavigate) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our special focus tracking page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - GURL url2 = server->TestServerPageW(kFramePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Open the Find window with animations disabled.
|
| - DropdownBarHost::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - gfx::Point position;
|
| - bool fully_visible = false;
|
| -
|
| - // Make sure it is open.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Reload the tab and make sure Find window doesn't go away.
|
| - browser()->Reload();
|
| -
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Navigate and make sure the Find window goes away.
|
| - ui_test_utils::NavigateToURL(browser(), url2);
|
| -
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_FALSE(fully_visible);
|
| -}
|
| -
|
| -// Make sure Find box disappears when History/Downloads page is opened, and
|
| -// when a New Tab is opened.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - FindDisappearOnNewTabAndHistory) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to our special focus tracking page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Open the Find window with animations disabled.
|
| - DropdownBarHost::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - gfx::Point position;
|
| - bool fully_visible = false;
|
| -
|
| - // Make sure it is open.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Open another tab (tab B).
|
| - browser()->NewTab();
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Make sure Find box is closed.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_FALSE(fully_visible);
|
| -
|
| - // Close tab B.
|
| - browser()->CloseTab();
|
| -
|
| - // Make sure Find window appears again.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - browser()->ShowHistoryTab();
|
| -
|
| - // Make sure Find box is closed.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_FALSE(fully_visible);
|
| -}
|
| -
|
| -// Make sure Find box moves out of the way if it is obscuring the active match.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindMovesWhenObscuring) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - GURL url = server->TestServerPageW(kMoveIfOver);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Open the Find window with animations disabled.
|
| - DropdownBarHost::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - gfx::Point start_position;
|
| - gfx::Point position;
|
| - bool fully_visible = false;
|
| -
|
| - // Make sure it is open.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&start_position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Search for 'Chromium' which the Find box is obscuring.
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - int index = 0;
|
| - for (; index < kMoveIterations; ++index) {
|
| - EXPECT_EQ(kMoveIterations, FindInPageWchar(tab, L"Chromium",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| -
|
| - // Check the position.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // If the Find box has moved then we are done.
|
| - if (position.x() != start_position.x())
|
| - break;
|
| - }
|
| -
|
| - // We should not have reached the end.
|
| - ASSERT_GT(kMoveIterations, index);
|
| -
|
| - // Search for something guaranteed not to be obscured by the Find box.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"Done",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - // Check the position.
|
| - EXPECT_TRUE(GetFindBarWindowInfo(&position, &fully_visible));
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Make sure Find box has moved back to its original location.
|
| - EXPECT_EQ(position.x(), start_position.x());
|
| -}
|
| -
|
| -// Make sure F3 in a new tab works if Find has previous string to search for.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - FindNextInNewTabUsesPrepopulate) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to any page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Search for 'no_match'. No matches should be found.
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - EXPECT_EQ(0, FindInPageWchar(tab, L"no_match",
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // Open another tab (tab B).
|
| - browser()->NewTab();
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Simulate what happens when you press F3 for FindNext. We should get a
|
| - // response here (a hang means search was aborted).
|
| - EXPECT_EQ(0, ui_test_utils::FindInPage(tab, string16(),
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // Open another tab (tab C).
|
| - browser()->NewTab();
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Simulate what happens when you press F3 for FindNext. We should get a
|
| - // response here (a hang means search was aborted).
|
| - EXPECT_EQ(0, ui_test_utils::FindInPage(tab, string16(),
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -}
|
| -
|
| -// Make sure Find box grabs the Esc accelerator and restores it again.
|
| -#if defined(OS_LINUX)
|
| -// TODO(oshima): On Gtk/Linux, a focus out event is asynchronous and
|
| -// hiding a find bar does not immediately update the target
|
| -// accelerator. The last condition fails in most cases due to this
|
| -// behavior. See http://crbug.com/26870.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - DISABLED_AcceleratorRestoring) {
|
| -#else
|
| - IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, AcceleratorRestoring) {
|
| -#endif
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to any page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| -#if defined(OS_WIN)
|
| - // TODO(oshima): Windows code assumes that NativeView is
|
| - // assignable from NativeWindow, which is not true on other platforms.
|
| - // This has to be fixed, probably by having explicit
|
| - // GetNativeView / GetNativewWindow methods on BrowserWindow.
|
| - // See http://crbug.com/26873.
|
| - gfx::NativeView browser_view = browser()->window()->GetNativeHandle();
|
| -#elif defined(OS_LINUX)
|
| - gfx::NativeView browser_view =
|
| - GTK_WIDGET(browser()->window()->GetNativeHandle());
|
| -#else
|
| - // Mac does not use views.
|
| - NOTREACHED();
|
| -#endif
|
| -
|
| - views::FocusManager* focus_manager =
|
| - views::FocusManager::GetFocusManagerForNativeView(browser_view);
|
| -
|
| - // See where Escape is registered.
|
| - views::Accelerator escape(base::VKEY_ESCAPE, false, false, false);
|
| - views::AcceleratorTarget* old_target =
|
| - focus_manager->GetCurrentTargetForAccelerator(escape);
|
| - EXPECT_TRUE(old_target != NULL);
|
| -
|
| - // Open the Find window with animations disabled.
|
| - DropdownBarHost::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - // Our Find bar should be the new target.
|
| - views::AcceleratorTarget* new_target =
|
| - focus_manager->GetCurrentTargetForAccelerator(escape);
|
| -
|
| - EXPECT_TRUE(new_target != NULL);
|
| - EXPECT_NE(new_target, old_target);
|
| -
|
| - // Close the Find box.
|
| - browser()->GetFindBarController()->EndFindSession();
|
| -
|
| - // The accelerator for Escape should be back to what it was before.
|
| - EXPECT_EQ(old_target,
|
| - focus_manager->GetCurrentTargetForAccelerator(escape));
|
| -}
|
| -
|
| -// Make sure Find box does not become UI-inactive when no text is in the box as
|
| -// we switch to a tab contents with an empty find string. See issue 13570.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, StayActive) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to any page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Open the Find window with animations disabled.
|
| - DropdownBarHost::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - // Simulate a user clearing the search string. Ideally, we should be
|
| - // simulating keypresses here for searching for something and pressing
|
| - // backspace, but that's been proven flaky in the past, so we go straight to
|
| - // tab_contents.
|
| - TabContents* tab_contents = browser()->GetSelectedTabContents();
|
| - // Stop the (non-existing) find operation, and clear the selection (which
|
| - // signals the UI is still active).
|
| - tab_contents->StopFinding(true);
|
| - // Make sure the Find UI flag hasn't been cleared, it must be so that the UI
|
| - // still responds to browser window resizing.
|
| - ASSERT_TRUE(tab_contents->find_ui_active());
|
| -}
|
| -
|
| -// Make sure F3 works after you FindNext a couple of times and end the Find
|
| -// session. See issue http://crbug.com/28306.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, RestartSearchFromF3) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to a simple page.
|
| - GURL url = server->TestServerPageW(kSimple);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Search for 'page'. Should have 1 match.
|
| - int ordinal = 0;
|
| - TabContents* tab = browser()->GetSelectedTabContents();
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"page", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Simulate what happens when you press F3 for FindNext. Still should show
|
| - // one match. This cleared the pre-populate string at one point (see bug).
|
| - EXPECT_EQ(1, ui_test_utils::FindInPage(tab, string16(),
|
| - kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // End the Find session, thereby making the next F3 start afresh.
|
| - browser()->GetFindBarController()->EndFindSession();
|
| -
|
| - // Simulate F3 while Find box is closed. Should have 1 match.
|
| - EXPECT_EQ(1, FindInPageWchar(tab, L"", kFwd, kIgnoreCase, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -}
|
| -
|
| -// When re-opening the find bar with F3, the find bar should be re-populated
|
| -// with the last search from the same tab rather than the last overall search.
|
| -// http://crbug.com/30006
|
| -#if defined(OS_CHROMEOS)
|
| -#define PreferPreviousSearch FLAKY_PreferPreviousSearch
|
| -#endif
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, PreferPreviousSearch) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - DropdownBarHost::disable_animations_during_testing_ = true;
|
| -
|
| - // First we navigate to any page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Find "Default".
|
| - int ordinal = 0;
|
| - TabContents* tab1 = browser()->GetSelectedTabContents();
|
| - EXPECT_EQ(1, FindInPageWchar(tab1, L"Default", kFwd, kIgnoreCase, &ordinal));
|
| -
|
| - // Create a second tab.
|
| - browser()->AddTabWithURL(url, GURL(), PageTransition::TYPED, true, -1,
|
| - false, NULL);
|
| - browser()->SelectTabContentsAt(1, false);
|
| - TabContents* tab2 = browser()->GetSelectedTabContents();
|
| - EXPECT_NE(tab1, tab2);
|
| -
|
| - // Find "given".
|
| - FindInPageWchar(tab2, L"given", kFwd, kIgnoreCase, &ordinal);
|
| -
|
| - // Switch back to first tab.
|
| - browser()->SelectTabContentsAt(0, false);
|
| - browser()->GetFindBarController()->EndFindSession();
|
| - // Simulate F3.
|
| - ui_test_utils::FindInPage(tab1, string16(), kFwd, kIgnoreCase, &ordinal);
|
| - EXPECT_EQ(tab1->find_text(), WideToUTF16(L"Default"));
|
| -}
|
|
|