| 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 6e00c9357ec845ec36e758c211a183e18a8c8715..a4c78dfffae612105d2c3da07b16fddd7fb806dc 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,11 @@ class AutocompleteEditViewTest : public InProcessBrowserTest,
|
| }
|
|
|
| ASSERT_TRUE(model->loaded());
|
| + // Remove old template urls to avoid interfering our tests.
|
| + model->SetDefaultSearchProvider(NULL);
|
| + std::vector<const TemplateURL*> old = model->GetTemplateURLs();
|
| + for (size_t i = 0; i < old.size(); ++i)
|
| + model->Remove(old[i]);
|
|
|
| TemplateURL* template_url = new TemplateURL();
|
| template_url->SetURL(kSearchURL, 0, 0);
|
| @@ -505,7 +510,8 @@ class AutocompleteEditViewTest : public InProcessBrowserTest,
|
| ASSERT_NO_FATAL_FAILURE(SendKeySequence(kDesiredTLDKeys));
|
| ASSERT_NO_FATAL_FAILURE(WaitForAutocompleteControllerDone());
|
| ASSERT_TRUE(popup_model->IsOpen());
|
| - // ctrl-Enter triggers desired_tld feature, thus www.bar.com shall be opened.
|
| + // ctrl-Enter triggers desired_tld feature, thus www.bar.com shall be
|
| + // opened.
|
| ASSERT_NO_FATAL_FAILURE(SendKey(ui::VKEY_RETURN, true, false, false));
|
|
|
| GURL url = browser()->GetSelectedTabContents()->GetURL();
|
| @@ -759,6 +765,101 @@ class AutocompleteEditViewTest : public InProcessBrowserTest,
|
| ASSERT_EQ(start, end);
|
| }
|
|
|
| + 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);
|
| +
|
| + std::wstring old_text = edit_view->GetText();
|
| +
|
| + // Input something that can match history items.
|
| + edit_view->SetUserText(L"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));
|
| + std::wstring user_text = edit_view->GetText();
|
| + ASSERT_EQ(L"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());
|
| + std::wstring 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.
|
| @@ -812,6 +913,10 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewTest, AcceptKeywordBySpace) {
|
| AcceptKeywordBySpaceTest();
|
| }
|
|
|
| +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.
|
| @@ -988,4 +1093,8 @@ IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, AcceptKeywordBySpace) {
|
| AcceptKeywordBySpaceTest();
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(AutocompleteEditViewViewsTest, DeleteItem) {
|
| + DeleteItemTest();
|
| +}
|
| +
|
| #endif
|
|
|