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 116f900c1d201c4aad7b7d4da3dfbdc0bc04f82b..9be3ed190bd990372c9abea210ede767c01988bf 100644 |
--- a/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc |
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_browsertest.cc |
@@ -96,15 +96,15 @@ const struct TestHistoryEntry { |
int typed_count; |
bool starred; |
} kHistoryEntries[] = { |
- {"http://www.bar.com/1", "Page 1", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/2", "Page 2", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/3", "Page 3", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/4", "Page 4", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/5", "Page 5", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/6", "Page 6", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/7", "Page 7", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/8", "Page 8", kSearchText, 1, 1, false }, |
- {"http://www.bar.com/9", "Page 9", kSearchText, 1, 1, false }, |
+ {"http://www.bar.com/1", "Page 1", kSearchText, 10, 10, false }, |
+ {"http://www.bar.com/2", "Page 2", kSearchText, 9, 9, false }, |
+ {"http://www.bar.com/3", "Page 3", kSearchText, 8, 8, false }, |
+ {"http://www.bar.com/4", "Page 4", kSearchText, 7, 7, false }, |
+ {"http://www.bar.com/5", "Page 5", kSearchText, 6, 6, false }, |
+ {"http://www.bar.com/6", "Page 6", kSearchText, 5, 5, false }, |
+ {"http://www.bar.com/7", "Page 7", kSearchText, 4, 4, false }, |
+ {"http://www.bar.com/8", "Page 8", kSearchText, 3, 3, false }, |
+ {"http://www.bar.com/9", "Page 9", kSearchText, 2, 2, false }, |
// To trigger inline autocomplete. |
{"http://www.def.com", "Page def", kSearchText, 10000, 10000, true }, |
@@ -244,6 +244,13 @@ class AutocompleteEditViewTest : public InProcessBrowserTest, |
} |
ASSERT_TRUE(model->loaded()); |
+ // Remove built-in template urls, like google.com, bing.com etc., as they |
+ // may appear as autocomplete suggests and interfere with our tests. |
+ model->SetDefaultSearchProvider(NULL); |
+ TemplateURLModel::TemplateURLVector builtins = model->GetTemplateURLs(); |
+ TemplateURLModel::TemplateURLVector::const_iterator i = builtins.begin(); |
Peter Kasting
2011/01/26 17:36:22
Nit: Never pull loop index variables out of the lo
|
+ for (; i != builtins.end(); ++i) |
+ model->Remove(*i); |
TemplateURL* template_url = new TemplateURL(); |
template_url->SetURL(kSearchURL, 0, 0); |
@@ -841,6 +848,102 @@ class AutocompleteEditViewTest : public InProcessBrowserTest, |
ASSERT_EQ("http://abc.com/", |
popup_model->result().default_match()->destination_url.spec()); |
} |
+ |
+ void DeleteItemTest() { |
+ // Disable the search provider, to make sure the popup contains only history |
+ // items. |
+ TemplateURLModel* model = browser()->profile()->GetTemplateURLModel(); |
+ model->SetDefaultSearchProvider(NULL); |
+ |
+ ui_test_utils::NavigateToURL(browser(), GURL(chrome::kAboutBlankURL)); |
+ 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); |
+ |
+ string16 old_text = edit_view->GetText(); |
+ |
+ // Input something that can match history items. |
+ edit_view->SetUserText(ASCIIToUTF16("bar")); |
+ ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
+ ASSERT_TRUE(popup_model->IsOpen()); |
+ |
+ // Delete the inline autocomplete part. |
+ ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_DELETE, false, false, false)); |
+ string16 user_text = edit_view->GetText(); |
+ ASSERT_EQ(ASCIIToUTF16("bar"), user_text); |
+ edit_view->SelectAll(true); |
+ ASSERT_TRUE(edit_view->IsSelectAll()); |
+ |
+ // The first item should be the default match. |
+ size_t default_line = popup_model->selected_line(); |
+ std::string default_url = |
+ popup_model->result().match_at(default_line).destination_url.spec(); |
+ |
+ // Move down. |
+ edit_view->model()->OnUpOrDownKeyPressed(1); |
+ ASSERT_EQ(default_line + 1, popup_model->selected_line()); |
+ string16 selected_text = |
+ popup_model->result().match_at(default_line + 1).fill_into_edit; |
+ // Temporary text is shown. |
+ ASSERT_EQ(selected_text, edit_view->GetText()); |
+ ASSERT_FALSE(edit_view->IsSelectAll()); |
+ |
+ // Delete the item. |
+ popup_model->TryDeletingCurrentItem(); |
+ ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
+ // The selected line shouldn't be changed, because we have more than two |
+ // items. |
+ ASSERT_EQ(default_line + 1, popup_model->selected_line()); |
+ // Make sure the item is really deleted. |
+ ASSERT_NE(selected_text, |
+ popup_model->result().match_at(default_line + 1).fill_into_edit); |
+ selected_text = |
+ popup_model->result().match_at(default_line + 1).fill_into_edit; |
+ // New temporary text is shown. |
+ ASSERT_EQ(selected_text, edit_view->GetText()); |
+ |
+ // Revert to the default match. |
+ ASSERT_TRUE(edit_view->model()->OnEscapeKeyPressed()); |
+ ASSERT_EQ(default_line, popup_model->selected_line()); |
+ ASSERT_EQ(user_text, edit_view->GetText()); |
+ ASSERT_TRUE(edit_view->IsSelectAll()); |
+ |
+ // Move down and up to select the default match as temporary text. |
+ edit_view->model()->OnUpOrDownKeyPressed(1); |
+ ASSERT_EQ(default_line + 1, popup_model->selected_line()); |
+ edit_view->model()->OnUpOrDownKeyPressed(-1); |
+ ASSERT_EQ(default_line, popup_model->selected_line()); |
+ |
+ selected_text = popup_model->result().match_at(default_line).fill_into_edit; |
+ // New temporary text is shown. |
+ ASSERT_EQ(selected_text, edit_view->GetText()); |
+ ASSERT_FALSE(edit_view->IsSelectAll()); |
+ |
+ // Delete the default item. |
+ popup_model->TryDeletingCurrentItem(); |
+ ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone()); |
+ // The selected line shouldn't be changed, but the default item should have |
+ // been changed. |
+ ASSERT_EQ(default_line, popup_model->selected_line()); |
+ // Make sure the item is really deleted. |
+ ASSERT_NE(selected_text, |
+ popup_model->result().match_at(default_line).fill_into_edit); |
+ selected_text = |
+ popup_model->result().match_at(default_line).fill_into_edit; |
+ // New temporary text is shown. |
+ ASSERT_EQ(selected_text, edit_view->GetText()); |
+ |
+ // As the current selected item is the new default item, pressing Escape key |
+ // should revert all directly. |
+ ASSERT_TRUE(edit_view->model()->OnEscapeKeyPressed()); |
+ ASSERT_EQ(old_text, edit_view->GetText()); |
+ ASSERT_TRUE(edit_view->IsSelectAll()); |
+ } |
+ |
}; |
// Test if ctrl-* accelerators are workable in omnibox. |
@@ -898,6 +1001,10 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, NonSubstitutingKeywordTest) { |
NonSubstitutingKeywordTest(); |
} |
+IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, DeleteItem) { |
+ DeleteItemTest(); |
+} |
+ |
#if defined(OS_LINUX) |
// TODO(oshima): enable these tests for views-implmentation when |
// these featuers are supported. |
@@ -1079,4 +1186,8 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, |
NonSubstitutingKeywordTest(); |
} |
+IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, DeleteItem) { |
+ DeleteItemTest(); |
+} |
+ |
#endif |