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()); |
-} |