15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h" 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_commands.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_tabstrip.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/find_bar/find_bar_controller.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/find_bar/find_notification_details.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/view_ids.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/find_bar_host.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/frame/browser_view.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/interactive_test_utils.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 22b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "net/test/spawned_test_server/spawned_test_server.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/clipboard/clipboard.h" 24d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/focus/focus_manager.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/views_delegate.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using base::ASCIIToUTF16; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char kSimplePage[] = "files/find_in_page/simple.html"; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FindInPageTest : public InProcessBrowserTest { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FindInPageTest() { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarHost::disable_animations_during_testing_ = true; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 GetFindBarText() { 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) FindBar* find_bar = browser()->GetFindBarController()->find_bar(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return find_bar->GetFindText(); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 GetFindBarSelectedText() { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarTesting* find_bar = 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->find_bar()->GetFindBarTesting(); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return find_bar->GetFindSelectedText(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FindInPageTest); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Flaky because the test server fails to start? See: http://crbug.com/96594. 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, CrashEscHandlers) { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First we navigate to our test page (tab A). 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL(kSimplePage); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Find(browser()); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Open another tab (tab B). 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome::AddSelectedTabWithURL(browser(), url, ui::PAGE_TRANSITION_TYPED); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Find(browser()); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Select tab A. 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(0, true); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Close tab B. 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->CloseWebContentsAt(1, 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TabStripModel::CLOSE_NONE); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Click on the location bar so that Find box loses focus. 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(ui_test_utils::ClickOnView(browser(), 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) VIEW_ID_OMNIBOX)); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Check the location bar is focused. 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This used to crash until bug 1303709 was fixed. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_ESCAPE, false, false, false, false)); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA) 951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// TODO(erg): linux_aura bringup: http://crbug.com/163931 961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define MAYBE_FocusRestore DISABLED_FocusRestore 971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#else 981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define MAYBE_FocusRestore FocusRestore 991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#endif 1001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Flaky because the test server fails to start? See: http://crbug.com/96594. 1021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, MAYBE_FocusRestore) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL("title1.html"); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus the location bar, open and close the find-in-page, focus should 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // return to the location bar. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::FocusLocationBar(browser()); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ensure the creation of the find bar controller. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->Show(); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->EndFindSession( 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarController::kKeepSelectionOnPage, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarController::kKeepResultsInFindBox); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus the location bar, find something on the page, close the find box, 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // focus should go to the page. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::FocusLocationBar(browser()); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Find(browser()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::FindInPage( 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("a"), true, false, NULL, NULL); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->EndFindSession( 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarController::kKeepSelectionOnPage, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarController::kKeepResultsInFindBox); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus the location bar, open and close the find box, focus should return to 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the location bar (same as before, just checking that http://crbug.com/23599 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // is fixed). 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::FocusLocationBar(browser()); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->Show(); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->EndFindSession( 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarController::kKeepSelectionOnPage, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindBarController::kKeepResultsInFindBox); 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// TODO(phajdan.jr): Disabling due to possible timing issues on XP 1511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// interactive_ui_tests. 1521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// http://crbug.com/311363 1531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, DISABLED_SelectionRestoreOnTabSwitch) { 1544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 1554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Make sure Chrome is in the foreground, otherwise sending input 1574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // won't do anything and the test will hang. 1584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 1594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // First we navigate to any page in the current tab (tab A). 1614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) GURL url = test_server()->GetURL(kSimplePage); 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Show the Find bar. 1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser()->GetFindBarController()->Show(); 1664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Search for "abc". 1684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_A, false, false, false, false)); 1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_B, false, false, false, false)); 1724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_C, false, false, false, false)); 1744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("abc"), GetFindBarText()); 1754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Select "bc". 1774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_LEFT, false, true, false, false)); 1794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_LEFT, false, true, false, false)); 1814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("bc"), GetFindBarSelectedText()); 1824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Open another tab (tab B). 1844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) content::WindowedNotificationObserver observer( 1854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) content::NOTIFICATION_LOAD_STOP, 1864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) content::NotificationService::AllSources()); 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome::AddSelectedTabWithURL(browser(), url, ui::PAGE_TRANSITION_TYPED); 1884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) observer.Wait(); 1894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Show the Find bar. 1914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser()->GetFindBarController()->Show(); 1924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Search for "def". 1944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_D, false, false, false, false)); 1964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_E, false, false, false, false)); 1984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 1994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_F, false, false, false, false)); 2004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("def"), GetFindBarText()); 2014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Select "de". 2034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 2044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_HOME, false, false, false, false)); 2054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 2064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_RIGHT, false, true, false, false)); 2074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 2084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_RIGHT, false, true, false, false)); 2094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("de"), GetFindBarSelectedText()); 2104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Select tab A. Find bar should select "bc". 2124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(0, true); 2134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 2144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 2154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("bc"), GetFindBarSelectedText()); 2164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Select tab B. Find bar should select "de". 2184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(1, true); 2194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 2204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 2214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("de"), GetFindBarSelectedText()); 2224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 2234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 2241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA) 2251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// TODO(erg): linux_aura bringup: http://crbug.com/163931 2261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define MAYBE_FocusRestoreOnTabSwitch DISABLED_FocusRestoreOnTabSwitch 2271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#else 2281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define MAYBE_FocusRestoreOnTabSwitch FocusRestoreOnTabSwitch 2291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#endif 2301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Flaky because the test server fails to start? See: http://crbug.com/96594. 2321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, MAYBE_FocusRestoreOnTabSwitch) { 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First we navigate to our test page (tab A). 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL(kSimplePage); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Find(browser()); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Search for 'a'. 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::FindInPage( 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("a"), true, false, NULL, NULL); 2474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a"), GetFindBarSelectedText()); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Open another tab (tab B). 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WindowedNotificationObserver observer( 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NOTIFICATION_LOAD_STOP, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome::AddSelectedTabWithURL(browser(), url, ui::PAGE_TRANSITION_TYPED); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) observer.Wait(); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure Find box is open. 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Find(browser()); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Search for 'b'. 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::FindInPage( 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(), 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("b"), true, false, NULL, NULL); 2654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("b"), GetFindBarSelectedText()); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set focus away from the Find bar (to the Location bar). 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::FocusLocationBar(browser()); 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Select tab A. Find bar should get focus. 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(0, true); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 2754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a"), GetFindBarSelectedText()); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Select tab B. Location bar should get focus. 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->ActivateTabAt(1, true); 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_OMNIBOX)); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// FindInPage on Mac doesn't use prepopulated values. Search there is global. 28323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if !defined(OS_MACOSX) && !defined(USE_AURA) 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Flaky because the test server fails to start? See: http://crbug.com/96594. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This tests that whenever you clear values from the Find box and close it that 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// it respects that and doesn't show you the last search, as reported in bug: 287d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// http://crbug.com/40121. For Aura see bug http://crbug.com/292299. 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, PrepopulateRespectBlank) { 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure Chrome is in the foreground, otherwise sending input 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // won't do anything and the test will hang. 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First we navigate to any page. 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL(kSimplePage); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Show the Find bar. 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->Show(); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Search for "a". 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_A, false, false, false, false)); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We should find "a" here. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a"), GetFindBarText()); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delete "a". 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_BACK, false, false, false, false)); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Validate we have cleared the text. 3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::string16(), GetFindBarText()); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Close the Find box. 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_ESCAPE, false, false, false, false)); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Show the Find bar. 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->Show(); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // After the Find box has been reopened, it should not have been prepopulated 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // with "a" again. 3255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::string16(), GetFindBarText()); 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Close the Find box. 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_ESCAPE, false, false, false, false)); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press F3 to trigger FindNext. 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_F3, false, false, false, false)); 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // After the Find box has been reopened, it should still have no prepopulate 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // value. 3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::string16(), GetFindBarText()); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 33923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Flaky on Win. http://crbug.com/92467 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Flaky on ChromeOS. http://crbug.com/118216 3431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Flaky on linux aura. http://crbug.com/163931 3441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#if defined(TOOLKIT_VIEWS) 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_PasteWithoutTextChange DISABLED_PasteWithoutTextChange 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_PasteWithoutTextChange PasteWithoutTextChange 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, MAYBE_PasteWithoutTextChange) { 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server()->Start()); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure Chrome is in the foreground, otherwise sending input 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // won't do anything and the test will hang. 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First we navigate to any page. 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL url = test_server()->GetURL(kSimplePage); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), url); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Show the Find bar. 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->Show(); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Search for "a". 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_A, false, false, false, false)); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We should find "a" here. 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a"), GetFindBarText()); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reload the page to clear the matching result. 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Reload(browser(), CURRENT_TAB); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus the Find bar again to make sure the text is selected. 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->GetFindBarController()->Show(); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VIEW_ID_FIND_IN_PAGE_TEXT_FIELD)); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // "a" should be selected. 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a"), GetFindBarSelectedText()); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press Ctrl-C to copy the content. 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_C, true, false, false, false)); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 390a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 str; 3914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ui::Clipboard::GetForCurrentThread()->ReadText(ui::CLIPBOARD_TYPE_COPY_PASTE, 3924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) &str); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure the text is copied successfully. 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a"), str); 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Press Ctrl-V to paste the content back, it should start finding even if the 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content is not changed. 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Source<WebContents> notification_source( 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents()); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::WindowedNotificationObserverWithDetails 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) <FindNotificationDetails> observer( 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::NOTIFICATION_FIND_RESULT_AVAILABLE, notification_source); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser(), ui::VKEY_V, true, false, false, false)); 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_NO_FATAL_FAILURE(observer.Wait()); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FindNotificationDetails details; 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(observer.GetDetailsFor(notification_source.map_key(), &details)); 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(details.number_of_matches() > 0); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_WIN) 4151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// TODO(phajdan.jr): Disabling due to possible timing issues on XP 4161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// interactive_ui_tests. 4171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// http://crbug.com/311363 4181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(FindInPageTest, DISABLED_CtrlEnter) { 4194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ui_test_utils::NavigateToURL(browser(), 4204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) GURL("data:text/html,This is some text with a " 4214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) "<a href=\"about:blank\">link</a>.")); 4224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser()->GetFindBarController()->Show(); 4244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Search for "link". 4264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 4274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_L, false, false, false, false)); 4284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 4294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_I, false, false, false, false)); 4304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 4314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_N, false, false, false, false)); 4324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 4334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_K, false, false, false, false)); 4344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("link"), GetFindBarText()); 4354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ui_test_utils::UrlLoadObserver observer( 4374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) GURL("about:blank"), content::NotificationService::AllSources()); 4384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Send Ctrl-Enter, should cause navigation to about:blank. 4404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 4414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) browser(), ui::VKEY_RETURN, true, false, false, false)); 4424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 4434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) observer.Wait(); 4444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 4454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 446