| Index: chrome/browser/views/find_bar_win_browsertest.cc
|
| ===================================================================
|
| --- chrome/browser/views/find_bar_win_browsertest.cc (revision 25765)
|
| +++ chrome/browser/views/find_bar_win_browsertest.cc (working copy)
|
| @@ -1,639 +0,0 @@
|
| -// Copyright (c) 2009 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/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_win.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";
|
| -
|
| -namespace {
|
| -
|
| -class FindInPageNotificationObserver : public NotificationObserver {
|
| - public:
|
| - explicit FindInPageNotificationObserver(TabContents* parent_tab)
|
| - : parent_tab_(parent_tab),
|
| - active_match_ordinal_(-1),
|
| - number_of_matches_(0) {
|
| - current_find_request_id_ = parent_tab->current_find_request_id();
|
| - registrar_.Add(this, NotificationType::FIND_RESULT_AVAILABLE,
|
| - Source<TabContents>(parent_tab_));
|
| - ui_test_utils::RunMessageLoop();
|
| - }
|
| -
|
| - int active_match_ordinal() const { return active_match_ordinal_; }
|
| -
|
| - int number_of_matches() const { return number_of_matches_; }
|
| -
|
| - virtual void Observe(NotificationType type, const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - if (type == NotificationType::FIND_RESULT_AVAILABLE) {
|
| - Details<FindNotificationDetails> find_details(details);
|
| - if (find_details->request_id() == current_find_request_id_) {
|
| - // We get multiple responses and one of those will contain the ordinal.
|
| - // This message comes to us before the final update is sent.
|
| - if (find_details->active_match_ordinal() > -1)
|
| - active_match_ordinal_ = find_details->active_match_ordinal();
|
| - if (find_details->final_update()) {
|
| - number_of_matches_ = find_details->number_of_matches();
|
| - MessageLoopForUI::current()->Quit();
|
| - } else {
|
| - DLOG(INFO) << "Ignoring, since we only care about the final message";
|
| - }
|
| - }
|
| - } else {
|
| - NOTREACHED();
|
| - }
|
| - }
|
| -
|
| - private:
|
| - NotificationRegistrar registrar_;
|
| - TabContents* parent_tab_;
|
| - // We will at some point (before final update) be notified of the ordinal and
|
| - // we need to preserve it so we can send it later.
|
| - int active_match_ordinal_;
|
| - int number_of_matches_;
|
| - // The id of the current find request, obtained from TabContents. Allows us
|
| - // to monitor when the search completes.
|
| - int current_find_request_id_;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -typedef enum { BACK = 0, FWD = 1 } FindInPageDirection;
|
| -typedef enum { IGNORE_CASE = 0, CASE_SENSITIVE = 1 } FindInPageCase;
|
| -
|
| -class FindInPageControllerTest : public InProcessBrowserTest {
|
| - public:
|
| - FindInPageControllerTest() {
|
| - EnableDOMAutomation();
|
| - }
|
| -
|
| - protected:
|
| - int FindInPage(const std::wstring& search_string,
|
| - FindInPageDirection forward,
|
| - FindInPageCase match_case,
|
| - int* ordinal) {
|
| - TabContents* tab_contents = browser()->GetSelectedTabContents();
|
| - tab_contents->StartFinding(search_string, forward == FWD,
|
| - match_case == CASE_SENSITIVE);
|
| -
|
| - FindInPageNotificationObserver observer =
|
| - FindInPageNotificationObserver(tab_contents);
|
| - if (ordinal)
|
| - *ordinal = observer.active_match_ordinal();
|
| - return observer.number_of_matches();
|
| - }
|
| -
|
| - void GetFindBarWindowInfo(gfx::Point* position, bool* fully_visible) {
|
| - FindBarTesting* find_bar =
|
| - browser()->find_bar()->find_bar()->GetFindBarTesting();
|
| - find_bar->GetFindBarWindowInfo(position, fully_visible);
|
| - }
|
| -};
|
| -
|
| -// 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;
|
| - EXPECT_EQ(18, FindInPage(L"g", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(11, FindInPage(L"go", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(04, FindInPage(L"goo", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(03, FindInPage(L"goog", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(02, FindInPage(L"googl", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(01, FindInPage(L"google", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(00, FindInPage(L"google!", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // Negative test (no matches should be found).
|
| - EXPECT_EQ(0, FindInPage(L"Non-existing string", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // 'horse' only exists in the three right frames.
|
| - EXPECT_EQ(3, FindInPage(L"horse", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // 'cat' only exists in the first frame.
|
| - EXPECT_EQ(1, FindInPage(L"cat", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try searching again, should still come up with 1 match.
|
| - EXPECT_EQ(1, FindInPage(L"cat", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try searching backwards, ignoring case, should still come up with 1 match.
|
| - EXPECT_EQ(1, FindInPage(L"CAT", BACK, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try case sensitive, should NOT find it.
|
| - EXPECT_EQ(0, FindInPage(L"CAT", FWD, CASE_SENSITIVE, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -
|
| - // Try again case sensitive, but this time with right case.
|
| - EXPECT_EQ(1, FindInPage(L"dog", FWD, CASE_SENSITIVE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Try non-Latin characters ('Hreggvidur' with 'eth' for 'd' in left frame).
|
| - EXPECT_EQ(1, FindInPage(L"Hreggvi\u00F0ur", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(1, FindInPage(L"Hreggvi\u00F0ur", FWD, CASE_SENSITIVE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(0, FindInPage(L"hreggvi\u00F0ur", FWD, CASE_SENSITIVE, &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, FindInPage(L"nk", FWD, IGNORE_CASE, &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, FindInPage(L"Google", FWD, IGNORE_CASE, &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).
|
| - int ordinal = 0;
|
| - EXPECT_EQ(3, FindInPage(L"o", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(3, FindInPage(L"o", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(3, FindInPage(L"o", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - // Go back one match.
|
| - EXPECT_EQ(3, FindInPage(L"o", BACK, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(3, FindInPage(L"o", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - // This should wrap to the top.
|
| - EXPECT_EQ(3, FindInPage(L"o", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - // This should go back to the end.
|
| - EXPECT_EQ(3, FindInPage(L"o", BACK, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| -}
|
| -
|
| -// 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).
|
| - int ordinal = 0;
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(4, ordinal);
|
| - // Go back one, which should go back one frame.
|
| - EXPECT_EQ(7, FindInPage(L"a", BACK, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(4, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(5, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(6, ordinal);
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(7, ordinal);
|
| - // Now we should wrap back to frame 1.
|
| - EXPECT_EQ(7, FindInPage(L"a", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - // Now we should wrap back to frame last frame.
|
| - EXPECT_EQ(7, FindInPage(L"a", BACK, IGNORE_CASE, &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;
|
| - EXPECT_EQ(6, FindInPage(L"goa", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(6, FindInPage(L"goa", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(2, ordinal);
|
| - EXPECT_EQ(6, FindInPage(L"goa", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(3, ordinal);
|
| - // Add space to search (should result in no matches).
|
| - EXPECT_EQ(0, FindInPage(L"goa ", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| - // Remove the space, should be back to '3 out of 6')
|
| - EXPECT_EQ(6, FindInPage(L"goa", FWD, IGNORE_CASE, &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;
|
| - EXPECT_EQ(0, FindInPage(L"text", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(-1, ordinal); // Nothing is selected.
|
| - EXPECT_EQ(0, FindInPage(L"Non-existing string", FWD, IGNORE_CASE, &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;
|
| - FindInPage(L"\u0D4C", FWD, IGNORE_CASE, &ordinal);
|
| - FindInPage(L"\u0D4C", FWD, IGNORE_CASE, &ordinal);
|
| -
|
| - // This should work fine.
|
| - EXPECT_EQ(1, FindInPage(L"\u0D24\u0D46", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| - EXPECT_EQ(0, FindInPage(L"nostring", FWD, IGNORE_CASE, &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, FindInPage(L"s", FWD, IGNORE_CASE, &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, FindInPage(L"008.xml", FWD, IGNORE_CASE, &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, FindInPage(L"html ", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -}
|
| -
|
| -// Make sure Find box disappears on Navigate but not on Refresh.
|
| -// Flaky, see http://crbug.com/16447.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - DISABLED_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.
|
| - FindBarWin::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - gfx::Point position;
|
| - bool fully_visible = false;
|
| -
|
| - // Make sure it is open.
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Reload the tab and make sure Find window doesn't go away.
|
| - browser()->Reload();
|
| -
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Navigate and make sure the Find window goes away.
|
| - ui_test_utils::NavigateToURL(browser(), url2);
|
| -
|
| - 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.
|
| - FindBarWin::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - gfx::Point position;
|
| - bool fully_visible = false;
|
| -
|
| - // Make sure it is open.
|
| - 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.
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_FALSE(fully_visible);
|
| -
|
| - // Close tab B.
|
| - browser()->CloseTab();
|
| -
|
| - // Make sure Find window appears again.
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - browser()->ShowHistoryTab();
|
| -
|
| - // Make sure Find box is closed.
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_FALSE(fully_visible);
|
| -}
|
| -
|
| -// Make sure Find box moves out of the way if it is obscuring the active match.
|
| -// Flaky, see http://crbug.com/16447.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest,
|
| - DISABLED_FindMovesWhenObscuring) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - GURL url = server->TestServerPageW(kMoveIfOver);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - // Open the Find window with animations disabled.
|
| - FindBarWin::disable_animations_during_testing_ = true;
|
| - browser()->ShowFindBar();
|
| -
|
| - gfx::Point start_position;
|
| - gfx::Point position;
|
| - bool fully_visible = false;
|
| -
|
| - // Make sure it is open.
|
| - GetFindBarWindowInfo(&start_position, &fully_visible);
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Search for 'dream' which the Find box is obscuring.
|
| - int ordinal = 0;
|
| - EXPECT_EQ(1, FindInPage(L"dream", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Make sure Find box has moved.
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_EQ(start_position.y(), position.y());
|
| - EXPECT_NE(start_position.x(), position.x());
|
| - EXPECT_TRUE(fully_visible);
|
| -
|
| - // Search for 'Too much' which the Find box is not obscuring.
|
| - EXPECT_EQ(1, FindInPage(L"Too much", FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(1, ordinal);
|
| -
|
| - // Make sure Find box has moved back to its original location.
|
| - GetFindBarWindowInfo(&position, &fully_visible);
|
| - EXPECT_EQ(start_position, position);
|
| - EXPECT_TRUE(fully_visible);
|
| -}
|
| -
|
| -// 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;
|
| - EXPECT_EQ(0, FindInPage(L"no_match", FWD, IGNORE_CASE, &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, FindInPage(std::wstring(), FWD, IGNORE_CASE, &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, FindInPage(std::wstring(), FWD, IGNORE_CASE, &ordinal));
|
| - EXPECT_EQ(0, ordinal);
|
| -}
|
| -
|
| -// Make sure Find box grabs the Esc accelerator and restores it again.
|
| -IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, AcceleratorRestoring) {
|
| - HTTPTestServer* server = StartHTTPServer();
|
| -
|
| - // First we navigate to any page.
|
| - GURL url = server->TestServerPageW(kSimplePage);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| -
|
| - gfx::NativeView browser_view = browser()->window()->GetNativeHandle();
|
| - views::FocusManager* focus_manager =
|
| - views::FocusManager::GetFocusManagerForNativeView(browser_view);
|
| -
|
| - // See where Escape is registered.
|
| - views::Accelerator escape(VK_ESCAPE, false, false, false);
|
| - views::AcceleratorTarget* old_target =
|
| - focus_manager->GetCurrentTargetForAccelerator(escape);
|
| - EXPECT_TRUE(old_target != NULL);
|
| -
|
| - // Open the Find box.
|
| - 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()->find_bar()->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.
|
| - FindBarWin::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());
|
| -}
|
|
|