diff options
author | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-27 21:53:03 +0000 |
---|---|---|
committer | jcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-27 21:53:03 +0000 |
commit | bad6ba908752e520d0613bfe912d87edb1308d2e (patch) | |
tree | 51ca22902cac2da87a88833b9c050a5f63ab537a /chrome/browser/views/find_bar_win_browsertest.cc | |
parent | 73404fdaa6f3ba6e63c56566061c5699336280a5 (diff) | |
download | chromium_src-bad6ba908752e520d0613bfe912d87edb1308d2e.zip chromium_src-bad6ba908752e520d0613bfe912d87edb1308d2e.tar.gz chromium_src-bad6ba908752e520d0613bfe912d87edb1308d2e.tar.bz2 |
Reverting my change it breaks release compilation on Windows.
TBR=maruel
Review URL: http://codereview.chromium.org/103001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14669 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/find_bar_win_browsertest.cc')
-rw-r--r-- | chrome/browser/views/find_bar_win_browsertest.cc | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/chrome/browser/views/find_bar_win_browsertest.cc b/chrome/browser/views/find_bar_win_browsertest.cc deleted file mode 100644 index 4cca160..0000000 --- a/chrome/browser/views/find_bar_win_browsertest.cc +++ /dev/null @@ -1,200 +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/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/tab_contents/web_contents.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" - -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"; - -class FindInPageNotificationObserver : public NotificationObserver { - public: - explicit FindInPageNotificationObserver(TabContents* parent_tab) - : parent_tab_(parent_tab), - active_match_ordinal_(-1), - number_of_matches_(0) { - 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() == kFindInPageRequestId) { - // 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(); - } - } - - // The Find mechanism is over asynchronous IPC, so a search is kicked off and - // we wait for notification to find out what the results are. As the user is - // typing, new search requests can be issued and the Request ID helps us make - // sense of whether this is the current request or an old one. The unit tests, - // however, which uses this constant issues only one search at a time, so we - // don't need a rolling id to identify each search. But, we still need to - // specify one, so we just use a fixed one - its value does not matter. - static const int kFindInPageRequestId; - - 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_; -}; - -typedef enum FindInPageDirection { BACK = 0, FWD = 1 }; -typedef enum FindInPageCase { IGNORE_CASE = 0, CASE_SENSITIVE = 1 }; - -class FindInPageControllerTest : public InProcessBrowserTest { - public: - FindInPageControllerTest() { - EnableDOMAutomation(); - } - - protected: - int FindInPage(const std::wstring& search_string, - FindInPageDirection forward, - FindInPageCase match_case, - bool find_next) { - WebContents* web_contents = - browser()->GetSelectedTabContents()->AsWebContents(); - if (web_contents) { - web_contents->set_current_find_request_id( - FindInPageNotificationObserver::kFindInPageRequestId); - web_contents->render_view_host()->StartFinding( - FindInPageNotificationObserver::kFindInPageRequestId, - search_string, forward == FWD, match_case == CASE_SENSITIVE, - find_next); - return FindInPageNotificationObserver(web_contents).number_of_matches(); - } - return 0; - } -}; - -// 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). - EXPECT_EQ(18, FindInPage(L"g", FWD, IGNORE_CASE, false)); - EXPECT_EQ(11, FindInPage(L"go", FWD, IGNORE_CASE, false)); - EXPECT_EQ(04, FindInPage(L"goo", FWD, IGNORE_CASE, false)); - EXPECT_EQ(03, FindInPage(L"goog", FWD, IGNORE_CASE, false)); - EXPECT_EQ(02, FindInPage(L"googl", FWD, IGNORE_CASE, false)); - EXPECT_EQ(01, FindInPage(L"google", FWD, IGNORE_CASE, false)); - EXPECT_EQ(00, FindInPage(L"google!", FWD, IGNORE_CASE, false)); - - // Negative test (no matches should be found). - EXPECT_EQ(0, FindInPage(L"Non-existing string", FWD, IGNORE_CASE, false)); - - // 'horse' only exists in the three right frames. - EXPECT_EQ(3, FindInPage(L"horse", FWD, IGNORE_CASE, false)); - - // 'cat' only exists in the first frame. - EXPECT_EQ(1, FindInPage(L"cat", FWD, IGNORE_CASE, false)); - - // Try searching again, should still come up with 1 match. - EXPECT_EQ(1, FindInPage(L"cat", FWD, IGNORE_CASE, false)); - - // Try searching backwards, ignoring case, should still come up with 1 match. - EXPECT_EQ(1, FindInPage(L"CAT", BACK, IGNORE_CASE, false)); - - // Try case sensitive, should NOT find it. - EXPECT_EQ(0, FindInPage(L"CAT", FWD, CASE_SENSITIVE, false)); - - // Try again case sensitive, but this time with right case. - EXPECT_EQ(1, FindInPage(L"dog", FWD, CASE_SENSITIVE, false)); - - // Try non-Latin characters ('Hreggvidur' with 'eth' for 'd' in left frame). - EXPECT_EQ(1, FindInPage(L"Hreggvi\u00F0ur", FWD, IGNORE_CASE, false)); - EXPECT_EQ(1, FindInPage(L"Hreggvi\u00F0ur", FWD, CASE_SENSITIVE, false)); - EXPECT_EQ(0, FindInPage(L"hreggvi\u00F0ur", FWD, CASE_SENSITIVE, false)); -} - -std::string FocusedOnPage(WebContents* web_contents) { - ui_test_utils::JavaScriptRunner js_runner( - web_contents, - L"", - L"window.domAutomationController.send(getFocusedElement());"); - return js_runner.Run(); -} - -// 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); - - WebContents* web_contents = - browser()->GetSelectedTabContents()->AsWebContents(); - ASSERT_TRUE(NULL != web_contents); - - // Verify that nothing has focus. - ASSERT_STREQ("{nothing focused}", FocusedOnPage(web_contents).c_str()); - - // Search for a text that exists within a link on the page. - EXPECT_EQ(1, FindInPage(L"nk", FWD, IGNORE_CASE, false)); - - // End the find session, which should set focus to the link. - web_contents->StopFinding(false); - - // Verify that the link is focused. - EXPECT_STREQ("link1", FocusedOnPage(web_contents).c_str()); - - // Search for a text that exists within a link on the page. - EXPECT_EQ(1, FindInPage(L"Google", FWD, IGNORE_CASE, false)); - - // Move the selection to link 1, after searching. - ui_test_utils::JavaScriptRunner js_runner( - web_contents, - L"", - L"window.domAutomationController.send(selectLink1());"); - js_runner.Run(); - - // End the find session. - web_contents->StopFinding(false); - - // Verify that link2 is not focused. - EXPECT_STREQ("", FocusedOnPage(web_contents).c_str()); -} |