| Index: chrome/browser/autocomplete/autocomplete_browsertest.cc
|
| diff --git a/chrome/browser/autocomplete/autocomplete_browsertest.cc b/chrome/browser/autocomplete/autocomplete_browsertest.cc
|
| index 7ba7fbdbefdb5f0eb3e0b3f6fc2fe5994f2e3e24..8cce36c1ba41532eb1da62e04c5b1f46a00c0e83 100644
|
| --- a/chrome/browser/autocomplete/autocomplete_browsertest.cc
|
| +++ b/chrome/browser/autocomplete/autocomplete_browsertest.cc
|
| @@ -25,6 +25,7 @@
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| +#include "chrome/test/base/interactive_test_utils.h"
|
| #include "chrome/test/base/search_test_utils.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| #include "components/history/core/browser/history_service.h"
|
| @@ -34,6 +35,7 @@
|
| #include "components/omnibox/browser/autocomplete_provider.h"
|
| #include "components/omnibox/browser/omnibox_popup_model.h"
|
| #include "components/omnibox/browser/omnibox_view.h"
|
| +#include "components/search_engines/template_url_service.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/notification_types.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -68,6 +70,19 @@ class AutocompleteBrowserTest : public ExtensionBrowserTest {
|
| return GetLocationBar()->GetOmniboxView()->model()->popup_model()->
|
| autocomplete_controller();
|
| }
|
| +
|
| + void FocusSearchCheckPreconditions() const {
|
| + LocationBar* location_bar = GetLocationBar();
|
| + OmniboxView* omnibox_view = location_bar->GetOmniboxView();
|
| + OmniboxEditModel* omnibox_model = omnibox_view->model();
|
| +
|
| + EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| + EXPECT_EQ(base::UTF8ToUTF16(url::kAboutBlankURL),
|
| + omnibox_view->GetText());
|
| + EXPECT_EQ(base::string16(), omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_selected());
|
| + }
|
| };
|
|
|
| IN_PROC_BROWSER_TEST_F(AutocompleteBrowserTest, Basic) {
|
| @@ -179,85 +194,139 @@ IN_PROC_BROWSER_TEST_F(AutocompleteBrowserTest, FocusSearch) {
|
| WaitForTemplateURLServiceToLoad();
|
| LocationBar* location_bar = GetLocationBar();
|
| OmniboxView* omnibox_view = location_bar->GetOmniboxView();
|
| + OmniboxEditModel* omnibox_model = omnibox_view->model();
|
| +
|
| + TemplateURLService* template_url_service =
|
| + TemplateURLServiceFactory::GetForProfile(browser()->profile());
|
| + base::string16 default_search_keyword =
|
| + template_url_service->GetDefaultSearchProvider()->keyword();
|
| +
|
| + base::string16 query_text = base::ASCIIToUTF16("foo");
|
| +
|
| + size_t selection_start, selection_end;
|
|
|
| - // Focus search when omnibox is blank
|
| + // Focus search when omnibox is blank.
|
| {
|
| - EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::UTF8ToUTF16(url::kAboutBlankURL), omnibox_view->GetText());
|
| + FocusSearchCheckPreconditions();
|
|
|
| location_bar->FocusSearch();
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("?"), omnibox_view->GetText());
|
| + EXPECT_EQ(base::string16(), omnibox_view->GetText());
|
| + EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_TRUE(omnibox_model->is_keyword_selected());
|
|
|
| - size_t selection_start, selection_end;
|
| omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| - EXPECT_EQ(1U, selection_start);
|
| - EXPECT_EQ(1U, selection_end);
|
| + EXPECT_EQ(0U, selection_start);
|
| + EXPECT_EQ(0U, selection_end);
|
| +
|
| + omnibox_view->RevertAll();
|
| }
|
|
|
| - // Focus search when omnibox is _not_ alread in forced query mode.
|
| + // Focus search when omnibox is _not_ already in keyword mode.
|
| {
|
| - omnibox_view->SetUserText(base::ASCIIToUTF16("foo"));
|
| + FocusSearchCheckPreconditions();
|
| +
|
| + omnibox_view->SetUserText(query_text);
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("foo"), omnibox_view->GetText());
|
| + EXPECT_EQ(query_text, omnibox_view->GetText());
|
| + EXPECT_EQ(base::string16(), omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_selected());
|
|
|
| location_bar->FocusSearch();
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("?"), omnibox_view->GetText());
|
| + EXPECT_EQ(query_text, omnibox_view->GetText());
|
| + EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_TRUE(omnibox_model->is_keyword_selected());
|
|
|
| - size_t selection_start, selection_end;
|
| omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| - EXPECT_EQ(1U, selection_start);
|
| - EXPECT_EQ(1U, selection_end);
|
| + EXPECT_EQ(0U, std::min(selection_start, selection_end));
|
| + EXPECT_EQ(query_text.length(), std::max(selection_start, selection_end));
|
| +
|
| + omnibox_view->RevertAll();
|
| }
|
|
|
| - // Focus search when omnibox _is_ already in forced query mode, but no query
|
| + // Focus search when omnibox _is_ already in keyword mode, but no query
|
| // has been typed.
|
| {
|
| - omnibox_view->SetUserText(base::ASCIIToUTF16("?"));
|
| + FocusSearchCheckPreconditions();
|
| +
|
| + location_bar->FocusSearch();
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("?"), omnibox_view->GetText());
|
| + EXPECT_EQ(base::string16(), omnibox_view->GetText());
|
| + EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_TRUE(omnibox_model->is_keyword_selected());
|
| +
|
| + omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| + EXPECT_EQ(0U, selection_start);
|
| + EXPECT_EQ(0U, selection_end);
|
|
|
| location_bar->FocusSearch();
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("?"), omnibox_view->GetText());
|
| + EXPECT_EQ(base::string16(), omnibox_view->GetText());
|
| + EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_TRUE(omnibox_model->is_keyword_selected());
|
|
|
| - size_t selection_start, selection_end;
|
| omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| - EXPECT_EQ(1U, selection_start);
|
| - EXPECT_EQ(1U, selection_end);
|
| + EXPECT_EQ(0U, selection_start);
|
| + EXPECT_EQ(0U, selection_end);
|
| +
|
| + omnibox_view->RevertAll();
|
| }
|
|
|
| - // Focus search when omnibox _is_ already in forced query mode, and some query
|
| + // Focus search when omnibox _is_ already in keyword mode, and some query
|
| // has been typed.
|
| {
|
| - omnibox_view->SetUserText(base::ASCIIToUTF16("?foo"));
|
| + FocusSearchCheckPreconditions();
|
| +
|
| + omnibox_view->SetUserText(query_text);
|
| + location_bar->FocusSearch();
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("?foo"), omnibox_view->GetText());
|
| + EXPECT_EQ(query_text, omnibox_view->GetText());
|
| + EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_TRUE(omnibox_model->is_keyword_selected());
|
| +
|
| + omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| + EXPECT_EQ(0U, std::min(selection_start, selection_end));
|
| + EXPECT_EQ(query_text.length(), std::max(selection_start, selection_end));
|
|
|
| location_bar->FocusSearch();
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16("?foo"), omnibox_view->GetText());
|
| + EXPECT_EQ(query_text, omnibox_view->GetText());
|
| + EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_TRUE(omnibox_model->is_keyword_selected());
|
|
|
| - size_t selection_start, selection_end;
|
| omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| - EXPECT_EQ(1U, std::min(selection_start, selection_end));
|
| - EXPECT_EQ(4U, std::max(selection_start, selection_end));
|
| + EXPECT_EQ(0U, std::min(selection_start, selection_end));
|
| + EXPECT_EQ(query_text.length(), std::max(selection_start, selection_end));
|
| +
|
| + omnibox_view->RevertAll();
|
| }
|
|
|
| - // Focus search when omnibox is in forced query mode with leading whitespace.
|
| + // If the user gets into keyword mode using a keyboard shortcut, and presses
|
| + // backspace, they should be left with their original query without their dsp
|
| + // keyword.
|
| {
|
| - omnibox_view->SetUserText(base::ASCIIToUTF16(" ?foo"));
|
| - EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16(" ?foo"), omnibox_view->GetText());
|
| + FocusSearchCheckPreconditions();
|
|
|
| + omnibox_view->SetUserText(query_text);
|
| + // The user presses Ctrl-K.
|
| location_bar->FocusSearch();
|
| + // The user presses backspace.
|
| + omnibox_model->ClearKeyword();
|
| +
|
| EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
|
| - EXPECT_EQ(base::ASCIIToUTF16(" ?foo"), omnibox_view->GetText());
|
| + EXPECT_EQ(query_text, omnibox_view->GetText());
|
| + EXPECT_EQ(base::string16(), omnibox_model->keyword());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_hint());
|
| + EXPECT_FALSE(omnibox_model->is_keyword_selected());
|
|
|
| - size_t selection_start, selection_end;
|
| - omnibox_view->GetSelectionBounds(&selection_start, &selection_end);
|
| - EXPECT_EQ(4U, std::min(selection_start, selection_end));
|
| - EXPECT_EQ(7U, std::max(selection_start, selection_end));
|
| + omnibox_view->RevertAll();
|
| }
|
| }
|
|
|