Index: chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc |
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc |
index be700cbbf3457c9a87f8113c2b647f2cb8aa4b5f..247ef03f16be9525de744134f7ddb3e2d4dc1445 100644 |
--- a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc |
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc |
@@ -65,6 +65,11 @@ const wchar_t kDesiredTLDKeys[] = { |
ui::VKEY_B, ui::VKEY_A, ui::VKEY_R, 0 |
}; |
+const char kInlineAutocompleteText[] = "def"; |
+const wchar_t kInlineAutocompleteTextKeys[] = { |
+ ui::VKEY_D, ui::VKEY_E, ui::VKEY_F, 0 |
+}; |
+ |
// Hostnames that shall be blocked by host resolver. |
const char *kBlockedHostnames[] = { |
"foo", |
@@ -73,6 +78,8 @@ const char *kBlockedHostnames[] = { |
"*.bar.com", |
"abc", |
"*.abc.com", |
+ "def", |
+ "*.def.com", |
"history", |
"z" |
}; |
@@ -96,7 +103,7 @@ const struct TestHistoryEntry { |
{"http://www.bar.com/9", "Page 9", kSearchText, 1, 1, false }, |
// To trigger inline autocomplete. |
- {"http://www.abc.com", "Page abc", kSearchText, 10000, 10000, true }, |
+ {"http://www.def.com", "Page def", kSearchText, 10000, 10000, true }, |
}; |
#if defined(OS_LINUX) |
@@ -129,6 +136,13 @@ class AutocompleteEditViewTest : public InProcessBrowserTest, |
set_show_window(true); |
} |
+ virtual void SetUpOnMainThread() { |
+ ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
+ ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
+ browser()->FocusLocationBar(); |
+ ASSERT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_LOCATION_BAR)); |
+ } |
+ |
static void GetAutocompleteEditViewForBrowser( |
const Browser* browser, |
AutocompleteEditView** edit_view) { |
@@ -307,9 +321,6 @@ class AutocompleteEditViewTest : public InProcessBrowserTest, |
// |
// Flaky on interactive tests (dbg), http://crbug.com/69433 |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, FLAKY_BrowserAccelerators) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- browser()->FocusLocationBar(); |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
@@ -367,10 +378,7 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, FLAKY_BrowserAccelerators) { |
#else |
#define MAYBE_PopupAccelerators PopupAccelerators |
#endif |
- |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, MAYBE_PopupAccelerators) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
// Create a popup. |
Browser* popup = CreateBrowserForPopup(browser()->profile()); |
AutocompleteEditView* edit_view = NULL; |
@@ -418,11 +426,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, MAYBE_PopupAccelerators) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BackspaceInKeywordMode) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
- browser()->FocusLocationBar(); |
- |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
@@ -472,9 +475,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BackspaceInKeywordMode) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, Escape) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIHistoryURL)); |
browser()->FocusLocationBar(); |
@@ -496,11 +496,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, Escape) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, DesiredTLD) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
- browser()->FocusLocationBar(); |
- |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
@@ -518,11 +513,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, DesiredTLD) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, AltEnter) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
- browser()->FocusLocationBar(); |
- |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
@@ -534,12 +524,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, AltEnter) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EnterToSearch) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupHostResolver()); |
- ASSERT_NO_FATAL_FAILURE(SetupSearchEngine()); |
- browser()->FocusLocationBar(); |
- |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
@@ -578,25 +562,20 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EnterToSearch) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EscapeToDefaultMatch) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
- browser()->FocusLocationBar(); |
- |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |
ASSERT_TRUE(popup_model); |
// Input something to trigger inline autocomplete. |
- ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchTextKeys)); |
+ ASSERT_NO_FATAL_FAILURE(SendKeySequence(kInlineAutocompleteTextKeys)); |
ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
ASSERT_TRUE(popup_model->IsOpen()); |
std::wstring old_text = edit_view->GetText(); |
// Make sure inline autocomplete is triggerred. |
- EXPECT_GT(old_text.length(), arraysize(kSearchText) - 1); |
+ EXPECT_GT(old_text.length(), arraysize(kInlineAutocompleteText) - 1); |
size_t old_selected_line = popup_model->selected_line(); |
EXPECT_EQ(0U, old_selected_line); |
@@ -619,9 +598,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, EscapeToDefaultMatch) { |
} |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BasicTextOperations) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); |
browser()->FocusLocationBar(); |
@@ -679,11 +655,109 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, BasicTextOperations) { |
EXPECT_EQ(old_text.size(), end); |
} |
+IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, AcceptKeywordBySpace) { |
+ AutocompleteEditView* edit_view = NULL; |
+ ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
+ |
+ std::wstring text = UTF8ToWide(kSearchKeyword); |
+ |
+ // Trigger keyword hint mode. |
+ ASSERT_NO_FATAL_FAILURE(SendKeySequence(kSearchKeywordKeys)); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text, edit_view->GetText()); |
+ |
+ // Trigger keyword mode by space. |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); |
+ ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_TRUE(edit_view->GetText().empty()); |
+ |
+ // Revert to keyword hint mode. |
+ edit_view->model()->ClearKeyword(std::wstring()); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text, edit_view->GetText()); |
+ |
+ // Keyword should also be accepted by typing an ideographic space. |
+ edit_view->OnBeforePossibleChange(); |
+ edit_view->SetWindowTextAndCaretPos(text + L"\x3000", text.length() + 1); |
+ edit_view->OnAfterPossibleChange(); |
+ ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_TRUE(edit_view->GetText().empty()); |
+ |
+ // Revert to keyword hint mode. |
+ edit_view->model()->ClearKeyword(std::wstring()); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text, edit_view->GetText()); |
+ |
+ // Keyword shouldn't be accepted by pasting. |
+ // Simulate pasting a whitespace to the end of content. |
+ edit_view->OnBeforePossibleChange(); |
+ edit_view->model()->on_paste(); |
+ edit_view->SetWindowTextAndCaretPos(text + L" ", text.length() + 1); |
+ edit_view->OnAfterPossibleChange(); |
+ // Should be still in keyword hint mode. |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text + L" ", edit_view->GetText()); |
+ |
+ // Keyword shouldn't be accepted by pressing space with a trailing whitespace. |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text + L" ", edit_view->GetText()); |
+ |
+ // Keyword shouldn't be accepted by deleting the trailing space. |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_BACK, false, false, false)); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text + L" ", edit_view->GetText()); |
+ |
+ // Keyword shouldn't be accepted by pressing space in the middle of content. |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_LEFT, false, false, false)); |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text + L" ", edit_view->GetText()); |
+ |
+ // Keyword shouldn't be accepted by pasting "foo bar". |
+ edit_view->SetUserText(std::wstring()); |
+ ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_TRUE(edit_view->model()->keyword().empty()); |
+ |
+ edit_view->OnBeforePossibleChange(); |
+ edit_view->model()->on_paste(); |
+ edit_view->SetWindowTextAndCaretPos(text + L" bar", text.length() + 4); |
+ edit_view->OnAfterPossibleChange(); |
+ ASSERT_FALSE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_TRUE(edit_view->model()->keyword().empty()); |
+ ASSERT_EQ(text + L" bar", edit_view->GetText()); |
+ |
+ // Keyword shouldn't be accepted by pressing space with a selected range. |
+ edit_view->OnBeforePossibleChange(); |
+ edit_view->OnInlineAutocompleteTextMaybeChanged(text + L" ", text.length()); |
+ edit_view->OnAfterPossibleChange(); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text + L" ", edit_view->GetText()); |
+ |
+ std::wstring::size_type start, end; |
+ edit_view->GetSelectionBounds(&start, &end); |
+ ASSERT_NE(start, end); |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_SPACE, false, false, false)); |
+ ASSERT_TRUE(edit_view->model()->is_keyword_hint()); |
+ ASSERT_EQ(text, edit_view->model()->keyword()); |
+ ASSERT_EQ(text + L" ", edit_view->GetText()); |
+ |
+ edit_view->GetSelectionBounds(&start, &end); |
+ ASSERT_EQ(start, end); |
+} |
+ |
#if defined(OS_LINUX) |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, UndoRedoLinux) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); |
browser()->FocusLocationBar(); |
@@ -748,9 +822,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, UndoRedoLinux) { |
// See http://crbug.com/63860 |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PrimarySelection) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- browser()->FocusLocationBar(); |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
edit_view->SetUserText(L"Hello world"); |
@@ -777,9 +848,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PrimarySelection) { |
// See http://crosbug.com/10306 |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, |
BackspaceDeleteHalfWidthKatakana) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- browser()->FocusLocationBar(); |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
// Insert text: ダ |
@@ -795,11 +863,6 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, |
// http://crbug.com/12316 |
IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, PasteReplacingAll) { |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- |
- ASSERT_NO_FATAL_FAILURE(SetupComponents()); |
- browser()->FocusLocationBar(); |
- |
AutocompleteEditView* edit_view = NULL; |
ASSERT_NO_FATAL_FAILURE(GetAutocompleteEditView(&edit_view)); |
AutocompletePopupModel* popup_model = edit_view->model()->popup_model(); |