| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/file_util.h" | 5 #include "base/file_util.h" |
| 6 #include "base/message_loop.h" | 6 #include "base/message_loop.h" |
| 7 #include "base/string16.h" | 7 #include "base/string16.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/common/cancelable_request.h" | 10 #include "chrome/browser/common/cancelable_request.h" |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 } | 131 } |
| 132 | 132 |
| 133 // Platform independent FindInPage that takes |const wchar_t*| | 133 // Platform independent FindInPage that takes |const wchar_t*| |
| 134 // as an input. | 134 // as an input. |
| 135 int FindInPageWchar(WebContents* web_contents, | 135 int FindInPageWchar(WebContents* web_contents, |
| 136 const wchar_t* search_str, | 136 const wchar_t* search_str, |
| 137 bool forward, | 137 bool forward, |
| 138 bool case_sensitive, | 138 bool case_sensitive, |
| 139 int* ordinal) { | 139 int* ordinal) { |
| 140 return ui_test_utils::FindInPage( | 140 return ui_test_utils::FindInPage( |
| 141 web_contents, base::WideToUTF16(std::wstring(search_str)), | 141 web_contents, WideToUTF16(std::wstring(search_str)), |
| 142 forward, case_sensitive, ordinal, NULL); | 142 forward, case_sensitive, ordinal, NULL); |
| 143 } | 143 } |
| 144 | 144 |
| 145 // Calls FindInPageWchar till the find box's x position != |start_x_position|. | 145 // Calls FindInPageWchar till the find box's x position != |start_x_position|. |
| 146 // Return |start_x_position| if the find box has not moved after iterating | 146 // Return |start_x_position| if the find box has not moved after iterating |
| 147 // through all matches of |search_str|. | 147 // through all matches of |search_str|. |
| 148 int FindInPageTillBoxMoves(WebContents* web_contents, | 148 int FindInPageTillBoxMoves(WebContents* web_contents, |
| 149 int start_x_position, | 149 int start_x_position, |
| 150 const wchar_t* search_str, | 150 const wchar_t* search_str, |
| 151 int expected_matches) { | 151 int expected_matches) { |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 | 313 |
| 314 GURL download_url = ui_test_utils::GetTestUrl( | 314 GURL download_url = ui_test_utils::GetTestUrl( |
| 315 base::FilePath().AppendASCII("downloads"), | 315 base::FilePath().AppendASCII("downloads"), |
| 316 base::FilePath().AppendASCII("a_zip_file.zip")); | 316 base::FilePath().AppendASCII("a_zip_file.zip")); |
| 317 ui_test_utils::DownloadURL(browser(), download_url); | 317 ui_test_utils::DownloadURL(browser(), download_url); |
| 318 | 318 |
| 319 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); | 319 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL)); |
| 320 FlushHistoryService(); | 320 FlushHistoryService(); |
| 321 EXPECT_EQ(1, | 321 EXPECT_EQ(1, |
| 322 FindInPageWchar(web_contents, | 322 FindInPageWchar(web_contents, |
| 323 base::ASCIIToWide(download_url.spec()).c_str(), | 323 ASCIIToWide(download_url.spec()).c_str(), kFwd, |
| 324 kFwd, kIgnoreCase, NULL)); | 324 kIgnoreCase, NULL)); |
| 325 } | 325 } |
| 326 | 326 |
| 327 // Verify search selection coordinates. The data file used is set-up such that | 327 // Verify search selection coordinates. The data file used is set-up such that |
| 328 // the text occurs on the same line, and we verify their positions by verifying | 328 // the text occurs on the same line, and we verify their positions by verifying |
| 329 // their relative positions. | 329 // their relative positions. |
| 330 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPageSpecialURLs) { | 330 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindInPageSpecialURLs) { |
| 331 std::wstring search_string(L"\u5728\u897f\u660c\u536b\u661f\u53d1"); | 331 std::wstring search_string(L"\u5728\u897f\u660c\u536b\u661f\u53d1"); |
| 332 gfx::Rect first, second, first_reverse; | 332 gfx::Rect first, second, first_reverse; |
| 333 WebContents* web_contents = | 333 WebContents* web_contents = |
| 334 browser()->tab_strip_model()->GetActiveWebContents(); | 334 browser()->tab_strip_model()->GetActiveWebContents(); |
| 335 ui_test_utils::NavigateToURL(browser(), GetURL("specialchar.html")); | 335 ui_test_utils::NavigateToURL(browser(), GetURL("specialchar.html")); |
| 336 ui_test_utils::FindInPage(web_contents, base::WideToUTF16(search_string), | 336 ui_test_utils::FindInPage(web_contents, WideToUTF16(search_string), |
| 337 kFwd, kIgnoreCase, NULL, &first); | 337 kFwd, kIgnoreCase, NULL, &first); |
| 338 ui_test_utils::FindInPage(web_contents, base::WideToUTF16(search_string), | 338 ui_test_utils::FindInPage(web_contents, WideToUTF16(search_string), |
| 339 kFwd, kIgnoreCase, NULL, &second); | 339 kFwd, kIgnoreCase, NULL, &second); |
| 340 | 340 |
| 341 // We have search occurrence in the same row, so top-bottom coordinates should | 341 // We have search occurrence in the same row, so top-bottom coordinates should |
| 342 // be the same even for second search. | 342 // be the same even for second search. |
| 343 ASSERT_EQ(first.y(), second.y()); | 343 ASSERT_EQ(first.y(), second.y()); |
| 344 ASSERT_EQ(first.bottom(), second.bottom()); | 344 ASSERT_EQ(first.bottom(), second.bottom()); |
| 345 ASSERT_LT(first.x(), second.x()); | 345 ASSERT_LT(first.x(), second.x()); |
| 346 ASSERT_LT(first.right(), second.right()); | 346 ASSERT_LT(first.right(), second.right()); |
| 347 | 347 |
| 348 ui_test_utils::FindInPage( | 348 ui_test_utils::FindInPage( |
| 349 web_contents, base::WideToUTF16(search_string), kBack, kIgnoreCase, NULL, | 349 web_contents, WideToUTF16(search_string), kBack, kIgnoreCase, NULL, |
| 350 &first_reverse); | 350 &first_reverse); |
| 351 // We find next and we go back so find coordinates should be the same as | 351 // We find next and we go back so find coordinates should be the same as |
| 352 // previous ones. | 352 // previous ones. |
| 353 ASSERT_EQ(first, first_reverse); | 353 ASSERT_EQ(first, first_reverse); |
| 354 } | 354 } |
| 355 | 355 |
| 356 // Verifies that comments and meta data are not searchable. | 356 // Verifies that comments and meta data are not searchable. |
| 357 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, | 357 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, |
| 358 CommentsAndMetaDataNotSearchable) { | 358 CommentsAndMetaDataNotSearchable) { |
| 359 WebContents* web_contents = | 359 WebContents* web_contents = |
| 360 browser()->tab_strip_model()->GetActiveWebContents(); | 360 browser()->tab_strip_model()->GetActiveWebContents(); |
| 361 ui_test_utils::NavigateToURL(browser(), GetURL("specialchar.html")); | 361 ui_test_utils::NavigateToURL(browser(), GetURL("specialchar.html")); |
| 362 | 362 |
| 363 std::wstring search_string = | 363 std::wstring search_string = |
| 364 L"\u4e2d\u65b0\u793e\u8bb0\u8005\u5b8b" | 364 L"\u4e2d\u65b0\u793e\u8bb0\u8005\u5b8b\u5409\u6cb3\u6444\u4e2d\u65b0\u7f51
"; |
| 365 L"\u5409\u6cb3\u6444\u4e2d\u65b0\u7f51"; | |
| 366 EXPECT_EQ(0, ui_test_utils::FindInPage( | 365 EXPECT_EQ(0, ui_test_utils::FindInPage( |
| 367 web_contents, base::WideToUTF16(search_string), kFwd, kIgnoreCase, NULL, | 366 web_contents, WideToUTF16(search_string), kFwd, kIgnoreCase, NULL, NULL)); |
| 368 NULL)); | |
| 369 } | 367 } |
| 370 | 368 |
| 371 // Verifies that span and lists are searchable. | 369 // Verifies that span and lists are searchable. |
| 372 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, SpanAndListsSearchable) { | 370 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, SpanAndListsSearchable) { |
| 373 WebContents* web_contents = | 371 WebContents* web_contents = |
| 374 browser()->tab_strip_model()->GetActiveWebContents(); | 372 browser()->tab_strip_model()->GetActiveWebContents(); |
| 375 ui_test_utils::NavigateToURL(browser(), GetURL("FindRandomTests.html")); | 373 ui_test_utils::NavigateToURL(browser(), GetURL("FindRandomTests.html")); |
| 376 | 374 |
| 377 std::wstring search_string = L"has light blue eyes and my father has dark"; | 375 std::wstring search_string = L"has light blue eyes and my father has dark"; |
| 378 EXPECT_EQ(1, ui_test_utils::FindInPage( | 376 EXPECT_EQ(1, ui_test_utils::FindInPage( |
| 379 web_contents, base::WideToUTF16(search_string), kFwd, kIgnoreCase, NULL, | 377 web_contents, WideToUTF16(search_string), kFwd, kIgnoreCase, NULL, NULL)); |
| 380 NULL)); | |
| 381 | 378 |
| 382 search_string = L"Google\nApple\nandroid"; | 379 search_string = L"Google\nApple\nandroid"; |
| 383 EXPECT_EQ(1, ui_test_utils::FindInPage( | 380 EXPECT_EQ(1, ui_test_utils::FindInPage( |
| 384 web_contents, base::WideToUTF16(search_string), kFwd, kIgnoreCase, NULL, | 381 web_contents, WideToUTF16(search_string), kFwd, kIgnoreCase, NULL, NULL)); |
| 385 NULL)); | |
| 386 } | 382 } |
| 387 | 383 |
| 388 // Find in a very large page. | 384 // Find in a very large page. |
| 389 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, LargePage) { | 385 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, LargePage) { |
| 390 WebContents* web_contents = | 386 WebContents* web_contents = |
| 391 browser()->tab_strip_model()->GetActiveWebContents(); | 387 browser()->tab_strip_model()->GetActiveWebContents(); |
| 392 ui_test_utils::NavigateToURL(browser(), GetURL("largepage.html")); | 388 ui_test_utils::NavigateToURL(browser(), GetURL("largepage.html")); |
| 393 | 389 |
| 394 std::wstring search_string = L"daughter of Prince"; | 390 std::wstring search_string = L"daughter of Prince"; |
| 395 EXPECT_EQ(373, | 391 EXPECT_EQ(373, |
| 396 FindInPageWchar(web_contents, search_string.c_str(), | 392 FindInPageWchar(web_contents, search_string.c_str(), |
| 397 kFwd, kIgnoreCase, NULL)); | 393 kFwd, kIgnoreCase, NULL)); |
| 398 } | 394 } |
| 399 | 395 |
| 400 // Find a very long string in a large page. | 396 // Find a very long string in a large page. |
| 401 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindLongString) { | 397 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, FindLongString) { |
| 402 WebContents* web_contents = | 398 WebContents* web_contents = |
| 403 browser()->tab_strip_model()->GetActiveWebContents(); | 399 browser()->tab_strip_model()->GetActiveWebContents(); |
| 404 ui_test_utils::NavigateToURL(browser(), GetURL("largepage.html")); | 400 ui_test_utils::NavigateToURL(browser(), GetURL("largepage.html")); |
| 405 | 401 |
| 406 base::FilePath path = ui_test_utils::GetTestFilePath( | 402 base::FilePath path = ui_test_utils::GetTestFilePath( |
| 407 base::FilePath().AppendASCII("find_in_page"), | 403 base::FilePath().AppendASCII("find_in_page"), |
| 408 base::FilePath().AppendASCII("LongFind.txt")); | 404 base::FilePath().AppendASCII("LongFind.txt")); |
| 409 std::string query; | 405 std::string query; |
| 410 file_util::ReadFileToString(path, &query); | 406 file_util::ReadFileToString(path, &query); |
| 411 std::wstring search_string = base::UTF8ToWide(query); | 407 std::wstring search_string = UTF8ToWide(query); |
| 412 EXPECT_EQ(1, | 408 EXPECT_EQ(1, |
| 413 FindInPageWchar(web_contents, search_string.c_str(), | 409 FindInPageWchar(web_contents, search_string.c_str(), |
| 414 kFwd, kIgnoreCase, NULL)); | 410 kFwd, kIgnoreCase, NULL)); |
| 415 } | 411 } |
| 416 | 412 |
| 417 // Find a big font string in a page. | 413 // Find a big font string in a page. |
| 418 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, BigString) { | 414 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, BigString) { |
| 419 WebContents* web_contents = | 415 WebContents* web_contents = |
| 420 browser()->tab_strip_model()->GetActiveWebContents(); | 416 browser()->tab_strip_model()->GetActiveWebContents(); |
| 421 ui_test_utils::NavigateToURL(browser(), GetURL("BigText.html")); | 417 ui_test_utils::NavigateToURL(browser(), GetURL("BigText.html")); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 WebContents* web_contents = | 460 WebContents* web_contents = |
| 465 browser()->tab_strip_model()->GetActiveWebContents(); | 461 browser()->tab_strip_model()->GetActiveWebContents(); |
| 466 | 462 |
| 467 base::FilePath path = ui_test_utils::GetTestFilePath( | 463 base::FilePath path = ui_test_utils::GetTestFilePath( |
| 468 base::FilePath().AppendASCII("find_in_page"), | 464 base::FilePath().AppendASCII("find_in_page"), |
| 469 base::FilePath().AppendASCII("find_test.txt")); | 465 base::FilePath().AppendASCII("find_test.txt")); |
| 470 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(path)); | 466 ui_test_utils::NavigateToURL(browser(), net::FilePathToFileURL(path)); |
| 471 | 467 |
| 472 std::string query; | 468 std::string query; |
| 473 file_util::ReadFileToString(path, &query); | 469 file_util::ReadFileToString(path, &query); |
| 474 std::wstring search_string = base::UTF8ToWide(query); | 470 std::wstring search_string = UTF8ToWide(query); |
| 475 EXPECT_EQ(1, | 471 EXPECT_EQ(1, |
| 476 FindInPageWchar(web_contents, search_string.c_str(), | 472 FindInPageWchar(web_contents, search_string.c_str(), |
| 477 false, false, NULL)); | 473 false, false, NULL)); |
| 478 } | 474 } |
| 479 | 475 |
| 480 // Specifying a prototype so that we can add the WARN_UNUSED_RESULT attribute. | 476 // Specifying a prototype so that we can add the WARN_UNUSED_RESULT attribute. |
| 481 bool FocusedOnPage(WebContents* web_contents, std::string* result) | 477 bool FocusedOnPage(WebContents* web_contents, std::string* result) |
| 482 WARN_UNUSED_RESULT; | 478 WARN_UNUSED_RESULT; |
| 483 | 479 |
| 484 bool FocusedOnPage(WebContents* web_contents, std::string* result) { | 480 bool FocusedOnPage(WebContents* web_contents, std::string* result) { |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1187 | 1183 |
| 1188 // Switch back to first tab. | 1184 // Switch back to first tab. |
| 1189 browser()->tab_strip_model()->ActivateTabAt(0, false); | 1185 browser()->tab_strip_model()->ActivateTabAt(0, false); |
| 1190 browser()->GetFindBarController()->EndFindSession( | 1186 browser()->GetFindBarController()->EndFindSession( |
| 1191 FindBarController::kKeepSelectionOnPage, | 1187 FindBarController::kKeepSelectionOnPage, |
| 1192 FindBarController::kKeepResultsInFindBox); | 1188 FindBarController::kKeepResultsInFindBox); |
| 1193 // Simulate F3. | 1189 // Simulate F3. |
| 1194 ui_test_utils::FindInPage(web_contents_1, string16(), | 1190 ui_test_utils::FindInPage(web_contents_1, string16(), |
| 1195 kFwd, kIgnoreCase, &ordinal, NULL); | 1191 kFwd, kIgnoreCase, &ordinal, NULL); |
| 1196 EXPECT_EQ(FindTabHelper::FromWebContents(web_contents_1)->find_text(), | 1192 EXPECT_EQ(FindTabHelper::FromWebContents(web_contents_1)->find_text(), |
| 1197 base::WideToUTF16(L"text")); | 1193 WideToUTF16(L"text")); |
| 1198 } | 1194 } |
| 1199 | 1195 |
| 1200 // This tests that whenever you close and reopen the Find bar, it should show | 1196 // This tests that whenever you close and reopen the Find bar, it should show |
| 1201 // the last search entered in that tab. http://crbug.com/40121. | 1197 // the last search entered in that tab. http://crbug.com/40121. |
| 1202 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, PrepopulateSameTab) { | 1198 IN_PROC_BROWSER_TEST_F(FindInPageControllerTest, PrepopulateSameTab) { |
| 1203 #if defined(OS_MACOSX) | 1199 #if defined(OS_MACOSX) |
| 1204 // FindInPage on Mac doesn't use prepopulated values. Search there is global. | 1200 // FindInPage on Mac doesn't use prepopulated values. Search there is global. |
| 1205 return; | 1201 return; |
| 1206 #endif | 1202 #endif |
| 1207 | 1203 |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1507 content::RunAllPendingInMessageLoop(); // Needed on Linux. | 1503 content::RunAllPendingInMessageLoop(); // Needed on Linux. |
| 1508 EXPECT_TRUE(GetFindBarWindowInfo(&position, NULL)); | 1504 EXPECT_TRUE(GetFindBarWindowInfo(&position, NULL)); |
| 1509 | 1505 |
| 1510 ui_test_utils::NavigateToURLWithDisposition( | 1506 ui_test_utils::NavigateToURLWithDisposition( |
| 1511 browser(), url, NEW_FOREGROUND_TAB, | 1507 browser(), url, NEW_FOREGROUND_TAB, |
| 1512 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1508 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1513 chrome::CloseTab(browser()); | 1509 chrome::CloseTab(browser()); |
| 1514 EXPECT_TRUE(GetFindBarWindowInfo(&position2, NULL)); | 1510 EXPECT_TRUE(GetFindBarWindowInfo(&position2, NULL)); |
| 1515 EXPECT_EQ(position, position2); | 1511 EXPECT_EQ(position, position2); |
| 1516 } | 1512 } |
| OLD | NEW |