Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(491)

Unified Diff: chrome/browser/autocomplete/autocomplete_provider_unittest.cc

Issue 440753003: Omnibox: Make Exact Match Tab-to-Search Work (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: loop termination condition Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autocomplete/autocomplete_provider_unittest.cc
diff --git a/chrome/browser/autocomplete/autocomplete_provider_unittest.cc b/chrome/browser/autocomplete/autocomplete_provider_unittest.cc
index a05bba0794a505c6d89d665c09b29eeb35619cda..b2e02658790fbb689d66e5bcb3171158823a2819 100644
--- a/chrome/browser/autocomplete/autocomplete_provider_unittest.cc
+++ b/chrome/browser/autocomplete/autocomplete_provider_unittest.cc
@@ -162,7 +162,7 @@ class AutocompleteProviderTest : public testing::Test,
struct KeywordTestData {
const base::string16 fill_into_edit;
const base::string16 keyword;
- const bool expected_keyword_result;
+ const base::string16 expected_associated_keyword;
};
struct AssistedQueryStatsTestData {
@@ -185,7 +185,13 @@ class AutocompleteProviderTest : public testing::Test,
// properly collected.
void RunTest();
- void RunRedundantKeywordTest(const KeywordTestData* match_data, size_t size);
+ // Constructs an AutocompleteResult from |match_data|, sets the |controller_|
+ // to pretend it was running against input |input|, calls the |controller_|'s
+ // UpdateAssociatedKeywords, and checks that the matches have associated
+ // keywords as expected.
+ void RunKeywordTest(const base::string16& input,
+ const KeywordTestData* match_data,
+ size_t size);
void RunAssistedQueryStatsTest(
const AssistedQueryStatsTestData* aqs_test_data,
@@ -341,6 +347,15 @@ void AutocompleteProviderTest::ResetControllerWithKeywordProvider() {
turl_model->Add(keyword_t_url);
ASSERT_NE(0, keyword_t_url->id());
+ // Make a TemplateURL for KeywordProvider that a shorter version of the
+ // first.
+ data.short_name = base::ASCIIToUTF16("f");
+ data.SetKeyword(base::ASCIIToUTF16("f"));
+ data.SetURL("http://f.com/{searchTerms}");
+ keyword_t_url = new TemplateURL(data);
+ turl_model->Add(keyword_t_url);
+ ASSERT_NE(0, keyword_t_url->id());
+
// Create another TemplateURL for KeywordProvider.
data.short_name = base::ASCIIToUTF16("bar.com");
data.SetKeyword(base::ASCIIToUTF16("bar.com"));
@@ -358,9 +373,9 @@ void AutocompleteProviderTest::RunTest() {
RunQuery(base::ASCIIToUTF16("a"));
}
-void AutocompleteProviderTest::RunRedundantKeywordTest(
- const KeywordTestData* match_data,
- size_t size) {
+void AutocompleteProviderTest::RunKeywordTest(const base::string16& input,
+ const KeywordTestData* match_data,
+ size_t size) {
ACMatches matches;
for (size_t i = 0; i < size; ++i) {
AutocompleteMatch match;
@@ -374,11 +389,17 @@ void AutocompleteProviderTest::RunRedundantKeywordTest(
AutocompleteResult result;
result.AppendMatches(matches);
+ controller_->input_ = AutocompleteInput(
+ input, base::string16::npos, base::string16(), GURL(),
+ metrics::OmniboxEventProto::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS,
+ false, true, true, true, ChromeAutocompleteSchemeClassifier(&profile_));
controller_->UpdateAssociatedKeywords(&result);
for (size_t j = 0; j < result.size(); ++j) {
- EXPECT_EQ(match_data[j].expected_keyword_result,
- result.match_at(j)->associated_keyword.get() != NULL);
+ EXPECT_EQ(match_data[j].expected_associated_keyword,
+ result.match_at(j)->associated_keyword.get() ?
+ result.match_at(j)->associated_keyword->keyword :
+ base::string16());
}
}
@@ -542,36 +563,74 @@ TEST_F(AutocompleteProviderTest, RedundantKeywordsIgnoredInResult) {
{
KeywordTestData duplicate_url[] = {
- { base::ASCIIToUTF16("fo"), base::string16(), false },
- { base::ASCIIToUTF16("foo.com"), base::string16(), true },
- { base::ASCIIToUTF16("foo.com"), base::string16(), false }
+ { base::ASCIIToUTF16("fo"), base::string16(), base::string16() },
+ { base::ASCIIToUTF16("foo.com"), base::string16(),
+ base::ASCIIToUTF16("foo.com") },
+ { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() }
};
SCOPED_TRACE("Duplicate url");
- RunRedundantKeywordTest(duplicate_url, ARRAYSIZE_UNSAFE(duplicate_url));
+ RunKeywordTest(base::ASCIIToUTF16("fo"), duplicate_url,
+ ARRAYSIZE_UNSAFE(duplicate_url));
}
{
KeywordTestData keyword_match[] = {
- { base::ASCIIToUTF16("foo.com"), base::ASCIIToUTF16("foo.com"), false },
- { base::ASCIIToUTF16("foo.com"), base::string16(), false }
+ { base::ASCIIToUTF16("foo.com"), base::ASCIIToUTF16("foo.com"),
+ base::string16() },
+ { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() }
};
SCOPED_TRACE("Duplicate url with keyword match");
- RunRedundantKeywordTest(keyword_match, ARRAYSIZE_UNSAFE(keyword_match));
+ RunKeywordTest(base::ASCIIToUTF16("fo"), keyword_match,
+ ARRAYSIZE_UNSAFE(keyword_match));
}
{
KeywordTestData multiple_keyword[] = {
- { base::ASCIIToUTF16("fo"), base::string16(), false },
- { base::ASCIIToUTF16("foo.com"), base::string16(), true },
- { base::ASCIIToUTF16("foo.com"), base::string16(), false },
- { base::ASCIIToUTF16("bar.com"), base::string16(), true },
+ { base::ASCIIToUTF16("fo"), base::string16(), base::string16() },
+ { base::ASCIIToUTF16("foo.com"), base::string16(),
+ base::ASCIIToUTF16("foo.com") },
+ { base::ASCIIToUTF16("foo.com"), base::string16(), base::string16() },
+ { base::ASCIIToUTF16("bar.com"), base::string16(),
+ base::ASCIIToUTF16("bar.com") },
};
SCOPED_TRACE("Duplicate url with multiple keywords");
- RunRedundantKeywordTest(multiple_keyword,
- ARRAYSIZE_UNSAFE(multiple_keyword));
+ RunKeywordTest(base::ASCIIToUTF16("fo"), multiple_keyword,
+ ARRAYSIZE_UNSAFE(multiple_keyword));
+ }
+}
+
+// Test that exact match keywords trump keywords associated with
+// the match.
+TEST_F(AutocompleteProviderTest, ExactMatchKeywords) {
+ ResetControllerWithKeywordProvider();
+
+ {
+ KeywordTestData keyword_match[] = {
+ { base::ASCIIToUTF16("foo.com"), base::string16(),
+ base::ASCIIToUTF16("foo.com") }
+ };
+
+ SCOPED_TRACE("keyword match as usual");
+ RunKeywordTest(base::ASCIIToUTF16("fo"), keyword_match,
+ ARRAYSIZE_UNSAFE(keyword_match));
+ }
+
+ // The same result set with an input of "f" (versus "fo") should get
+ // a different associated keyword because "f" is an exact match for
+ // a keyword and that should trump the keyword normally associated with
+ // this match.
+ {
+ KeywordTestData keyword_match[] = {
+ { base::ASCIIToUTF16("foo.com"), base::string16(),
+ base::ASCIIToUTF16("f") }
+ };
+
+ SCOPED_TRACE("keyword exact match");
+ RunKeywordTest(base::ASCIIToUTF16("f"), keyword_match,
+ ARRAYSIZE_UNSAFE(keyword_match));
}
}
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_controller.cc ('k') | chrome/browser/ui/omnibox/omnibox_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698