| Index: chrome/browser/autocomplete/search_provider_unittest.cc
|
| diff --git a/chrome/browser/autocomplete/search_provider_unittest.cc b/chrome/browser/autocomplete/search_provider_unittest.cc
|
| index a0257db70f5f4135ea9f8dc0071c6dc65dd65e10..bae74a73fa47250bd597ca52fd6e952f8bc8bbe8 100644
|
| --- a/chrome/browser/autocomplete/search_provider_unittest.cc
|
| +++ b/chrome/browser/autocomplete/search_provider_unittest.cc
|
| @@ -45,6 +45,19 @@
|
| #include "net/url_request/url_request_status.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace {
|
| +
|
| +// Returns the first match in |matches| with |allowed_to_be_default_match|
|
| +// set to true.
|
| +ACMatches::const_iterator FindDefaultMatch(const ACMatches& matches) {
|
| + ACMatches::const_iterator it = matches.begin();
|
| + while ((it != matches.end()) && !it->allowed_to_be_default_match)
|
| + ++it;
|
| + return it;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| // SearchProviderTest ---------------------------------------------------------
|
|
|
| // The following environment is configured for these tests:
|
| @@ -60,18 +73,22 @@ class SearchProviderTest : public testing::Test,
|
| public AutocompleteProviderListener {
|
| public:
|
| struct ResultInfo {
|
| - ResultInfo() : result_type(AutocompleteMatchType::NUM_TYPES) {
|
| + ResultInfo() : result_type(AutocompleteMatchType::NUM_TYPES),
|
| + allowed_to_be_default_match(false) {
|
| }
|
| ResultInfo(GURL gurl,
|
| AutocompleteMatch::Type result_type,
|
| + bool allowed_to_be_default_match,
|
| string16 fill_into_edit)
|
| : gurl(gurl),
|
| result_type(result_type),
|
| + allowed_to_be_default_match(allowed_to_be_default_match),
|
| fill_into_edit(fill_into_edit) {
|
| }
|
|
|
| const GURL gurl;
|
| const AutocompleteMatch::Type result_type;
|
| + const bool allowed_to_be_default_match;
|
| const string16 fill_into_edit;
|
| };
|
|
|
| @@ -261,11 +278,9 @@ void SearchProviderTest::RunTest(TestData* cases,
|
| EXPECT_EQ(cases[i].output[j].result_type, matches[j].type) <<
|
| diagnostic_details;
|
| EXPECT_EQ(cases[i].output[j].fill_into_edit,
|
| - matches[j].fill_into_edit) <<
|
| - diagnostic_details;
|
| - // All callers that use this helper function at the moment produce
|
| - // matches that are always allowed to be the default match.
|
| - EXPECT_TRUE(matches[j].allowed_to_be_default_match);
|
| + matches[j].fill_into_edit) << diagnostic_details;
|
| + EXPECT_EQ(cases[i].output[j].allowed_to_be_default_match,
|
| + matches[j].allowed_to_be_default_match) << diagnostic_details;
|
| }
|
| }
|
| }
|
| @@ -830,7 +845,7 @@ TEST_F(SearchProviderTest, KeywordOrderingAndDescriptions) {
|
| EXPECT_GT(result.match_at(1).relevance, result.match_at(2).relevance);
|
| EXPECT_TRUE(result.match_at(0).allowed_to_be_default_match);
|
| EXPECT_TRUE(result.match_at(1).allowed_to_be_default_match);
|
| - EXPECT_TRUE(result.match_at(2).allowed_to_be_default_match);
|
| + EXPECT_FALSE(result.match_at(2).allowed_to_be_default_match);
|
|
|
| // The two keyword results should come with the keyword we expect.
|
| EXPECT_EQ(ASCIIToUTF16("k"), result.match_at(0).keyword);
|
| @@ -855,9 +870,11 @@ TEST_F(SearchProviderTest, KeywordVerbatim) {
|
| { ASCIIToUTF16("k foo"), 2,
|
| { ResultInfo(GURL("http://keyword/foo"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k foo")),
|
| ResultInfo(GURL("http://defaultturl/k%20foo"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("k foo") ) } },
|
|
|
| // Make sure extra whitespace after the keyword doesn't change the
|
| @@ -865,9 +882,11 @@ TEST_F(SearchProviderTest, KeywordVerbatim) {
|
| { ASCIIToUTF16("k foo"), 2,
|
| { ResultInfo(GURL("http://keyword/foo"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k foo")),
|
| ResultInfo(GURL("http://defaultturl/k%20%20%20foo"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("k foo")) } },
|
| // Leading whitespace should be stripped before SearchProvider gets the
|
| // input; hence there are no tests here about how it handles those inputs.
|
| @@ -877,9 +896,11 @@ TEST_F(SearchProviderTest, KeywordVerbatim) {
|
| { ASCIIToUTF16("k foo bar"), 2,
|
| { ResultInfo(GURL("http://keyword/foo%20%20bar"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k foo bar")),
|
| ResultInfo(GURL("http://defaultturl/k%20%20foo%20%20bar"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("k foo bar")) } },
|
| // Note in the above test case we don't test trailing whitespace because
|
| // SearchProvider still doesn't handle this well. See related bugs:
|
| @@ -890,23 +911,29 @@ TEST_F(SearchProviderTest, KeywordVerbatim) {
|
| { ASCIIToUTF16("www.k foo"), 2,
|
| { ResultInfo(GURL("http://keyword/foo"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k foo")),
|
| ResultInfo(GURL("http://defaultturl/www.k%20foo"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("www.k foo")) } },
|
| { ASCIIToUTF16("http://k foo"), 2,
|
| { ResultInfo(GURL("http://keyword/foo"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k foo")),
|
| ResultInfo(GURL("http://defaultturl/http%3A//k%20foo"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("http://k foo")) } },
|
| { ASCIIToUTF16("http://www.k foo"), 2,
|
| { ResultInfo(GURL("http://keyword/foo"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k foo")),
|
| ResultInfo(GURL("http://defaultturl/http%3A//www.k%20foo"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("http://www.k foo")) } },
|
|
|
| // A keyword with no remaining input shouldn't get a keyword
|
| @@ -914,10 +941,12 @@ TEST_F(SearchProviderTest, KeywordVerbatim) {
|
| { ASCIIToUTF16("k"), 1,
|
| { ResultInfo(GURL("http://defaultturl/k"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + true,
|
| ASCIIToUTF16("k")) } },
|
| { ASCIIToUTF16("k "), 1,
|
| { ResultInfo(GURL("http://defaultturl/k%20"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + true,
|
| ASCIIToUTF16("k ")) } }
|
|
|
| // The fact that verbatim queries to keyword are handled by KeywordProvider
|
| @@ -955,9 +984,11 @@ TEST_F(SearchProviderTest, CommandLineOverrides) {
|
| { ASCIIToUTF16("k a"), 2,
|
| { ResultInfo(GURL("http://keyword/a"),
|
| AutocompleteMatchType::SEARCH_OTHER_ENGINE,
|
| + true,
|
| ASCIIToUTF16("k a")),
|
| ResultInfo(GURL("http://www.bar.com/k%20a?a=b"),
|
| AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED,
|
| + false,
|
| ASCIIToUTF16("k a")) } },
|
| };
|
|
|
| @@ -1601,10 +1632,13 @@ TEST_F(SearchProviderTest, DefaultFetcherSuggestRelevanceWithReorder) {
|
|
|
| const std::string description = "for input with json=" + cases[i].json;
|
| const ACMatches& matches = provider_->matches();
|
| - // The top match must inline and score as highly as calculated verbatim.
|
| ASSERT_FALSE(matches.empty());
|
| + // Find the first match that's allowed to be the default match and check
|
| + // its inline_autocompletion.
|
| + ACMatches::const_iterator it = FindDefaultMatch(matches);
|
| + ASSERT_NE(matches.end(), it);
|
| EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion),
|
| - matches[0].inline_autocompletion) << description;
|
| + it->inline_autocompletion) << description;
|
|
|
| ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches));
|
| size_t j = 0;
|
| @@ -1647,7 +1681,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| // the default provider verbatim.
|
| { "[\"a\",[\"b\", \"c\"],[],[],{\"google:suggestrelevance\":[1, 2]}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "c", true, false },
|
| { "b", true, false },
|
| kEmptyMatch, kEmptyMatch },
|
| @@ -1655,12 +1689,9 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| // Again, check that relevance scores reorder matches, just this
|
| // time with navigation matches. This also checks that with
|
| // suggested relevance scores we allow multiple navsuggest results.
|
| - // It's odd that navsuggest results that come from a keyword
|
| - // provider are marked as not a keyword result. I think this
|
| - // comes from them not going to a keyword search engine).
|
| - // TODO(mpearson): Investigate the implications (if any) of
|
| - // tagging these results appropriately. If so, do it because it
|
| - // makes more sense.
|
| + // Note that navsuggest results that come from a keyword provider
|
| + // are marked as not a keyword result. (They don't go to a
|
| + // keyword search engine.)
|
| { "[\"a\",[\"http://b.com\", \"http://c.com\", \"d\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:suggestrelevance\":[1301, 1302, 1303]}]",
|
| @@ -1668,7 +1699,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { "d", true, false },
|
| { "c.com", false, false },
|
| { "b.com", false, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -1678,7 +1709,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"]}]",
|
| { { "a", true, true },
|
| { "b.com", false, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -1688,27 +1719,27 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:suggestrelevance\":[9998]}]",
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":9998,"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a1", true, true },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":-1,"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a1", true, true },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"http://a.com\"],[],[],"
|
| @@ -1716,8 +1747,8 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9999,"
|
| "\"google:suggestrelevance\":[9998]}]",
|
| { { "a", true, true },
|
| - { "a.com", false, true },
|
| - { "k a", false, true },
|
| + { "a.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -1727,7 +1758,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { { "a1", true, true },
|
| { "a", true, true },
|
| { "a2", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "1" },
|
|
|
| @@ -1736,14 +1767,14 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { "[\"a\",[\"b\"],[],[],{\"google:suggestrelevance\":[9999]}]",
|
| { { "a", true, true },
|
| { "b", true, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"b\"],[],[],{\"google:suggestrelevance\":[9999],"
|
| "\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| { "b", true, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://b.com\"],[],[],"
|
| @@ -1751,7 +1782,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a", true, true },
|
| { "b.com", false, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://b.com\"],[],[],"
|
| @@ -1760,7 +1791,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| { "b.com", false, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -1771,13 +1802,13 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":1}]",
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // Continuing the same category of tests, but make sure we keep the
|
| @@ -1786,14 +1817,14 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { "[\"a\",[\"a1\"],[],[],{\"google:suggestrelevance\":[1],"
|
| "\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "a1", true, true },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"a1\", \"a2\"],[],[],{\"google:suggestrelevance\":[1, 2],"
|
| "\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "a2", true, true },
|
| { "a1", true, true },
|
| kEmptyMatch, kEmptyMatch },
|
| @@ -1801,7 +1832,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { "[\"a\",[\"a1\", \"a2\"],[],[],{\"google:suggestrelevance\":[1, 3],"
|
| "\"google:verbatimrelevance\":2}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "a2", true, true },
|
| { "a1", true, true },
|
| kEmptyMatch, kEmptyMatch },
|
| @@ -1811,7 +1842,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { "[\"a\",[\"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\"],[],[],"
|
| "{\"google:suggestrelevance\":[1, 2, 3, 4, 5, 6, 7]}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "h", true, false },
|
| { "g", true, false },
|
| { "f", true, false },
|
| @@ -1826,7 +1857,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[1, 2, 3, 4, 5, 6, 7]}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "h.com", false, false },
|
| { "g.com", false, false },
|
| { "f.com", false, false },
|
| @@ -1840,13 +1871,13 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| { "a2", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:suggestrelevance\":[9999, 1]}]",
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // In this case, ignoring the suggested relevance scores means we keep
|
| @@ -1855,16 +1886,16 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[1]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[9999, 1]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -1874,7 +1905,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { { "a2", true, true },
|
| { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "2" },
|
| { "[\"a\",[\"a\", \"a1\", \"a2\"],[],[],"
|
| @@ -1883,7 +1914,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| { { "a2", true, true },
|
| { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "2" },
|
|
|
| @@ -1892,12 +1923,12 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| // (except when suggested relevances are ignored).
|
| { "[\"a\",[],[],[],{\"google:verbatimrelevance\":1}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[],[],[],{\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -1911,9 +1942,9 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9999]}]",
|
| { { "a", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\"],[],[],"
|
| @@ -1921,17 +1952,17 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9999, 9998]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"https://a/\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| - { { "a", true, true },
|
| - { "https://a", false, true },
|
| - { "k a", false, true },
|
| + { { "a", true, true },
|
| + { "https://a", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // Check when navsuggest scores more than verbatim and there is query
|
| @@ -1941,10 +1972,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9999, 1300]}]",
|
| { { "a", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| + { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| { "a3", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -1952,10 +1983,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9999, 9998, 1300]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| + { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| { "a3", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| std::string() },
|
| // Check when navsuggest scores more than a query suggestion. There is
|
| @@ -1965,10 +1996,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9999, 9997]}]",
|
| { { "a3", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| + { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -1976,10 +2007,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9999, 9998, 9997]}]",
|
| { { "a3", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| + { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -1987,9 +2018,9 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9998, 9999, 9997]}]",
|
| { { "a3", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -1997,9 +2028,9 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9999, 9998, 9997]}]",
|
| { { "a3", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "3" },
|
| // Check when there is neither verbatim nor a query suggestion that,
|
| @@ -2014,8 +2045,8 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9998, 9999]}]",
|
| { { "a", true, true },
|
| - { "a2.com", false, true },
|
| - { "k a", false, true },
|
| + { "a2.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\"],[],[],"
|
| @@ -2023,8 +2054,8 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9999, 9998]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // More checks that everything works when it's not necessary to demote.
|
| @@ -2033,10 +2064,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9997, 9998, 9999]}]",
|
| { { "a3", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| + { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -2044,10 +2075,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevance) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9997, 9999]}]",
|
| { { "a3", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| + { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| };
|
| @@ -2124,7 +2155,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| // the default provider verbatim.
|
| { "[\"a\",[\"b\", \"c\"],[],[],{\"google:suggestrelevance\":[1, 2]}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "c", true, false },
|
| { "b", true, false },
|
| kEmptyMatch, kEmptyMatch },
|
| @@ -2132,12 +2163,9 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| // Again, check that relevance scores reorder matches, just this
|
| // time with navigation matches. This also checks that with
|
| // suggested relevance scores we allow multiple navsuggest results.
|
| - // It's odd that navsuggest results that come from a keyword
|
| - // provider are marked as not a keyword result. I think this
|
| - // comes from them not going to a keyword search engine.
|
| - // TODO(mpearson): Investigate the implications (if any) of
|
| - // tagging these results appropriately. If so, do it because it
|
| - // makes more sense.
|
| + // Note that navsuggest results that come from a keyword provider
|
| + // are marked as not a keyword result. (They don't go to a
|
| + // keyword search engine.)
|
| { "[\"a\",[\"http://b.com\", \"http://c.com\", \"d\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:suggestrelevance\":[1301, 1302, 1303]}]",
|
| @@ -2145,7 +2173,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| { "d", true, false },
|
| { "c.com", false, false },
|
| { "b.com", false, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -2155,7 +2183,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"]}]",
|
| { { "a", true, true },
|
| { "b.com", false, false },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -2165,27 +2193,27 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "\"google:suggestrelevance\":[9998]}]",
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":9998,"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a1", true, true },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":-1,"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "a1", true, true },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"http://a.com\"],[],[],"
|
| @@ -2193,8 +2221,8 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "\"google:verbatimrelevance\":9999,"
|
| "\"google:suggestrelevance\":[9998]}]",
|
| { { "a", true, true },
|
| - { "a.com", false, true },
|
| - { "k a", false, true },
|
| + { "a.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -2204,7 +2232,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| { { "a1", true, true },
|
| { "a", true, true },
|
| { "a2", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "1" },
|
|
|
| @@ -2213,21 +2241,24 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| { "[\"a\",[\"b\"],[],[],{\"google:suggestrelevance\":[9999]}]",
|
| { { "b", true, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| - { "[\"a\",[\"b\"],[],[],{\"google:suggestrelevance\":[9999],"
|
| - "\"google:verbatimrelevance\":0}]",
|
| - { { "b", true, false },
|
| - { "k a", false, true },
|
| - kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| - std::string() },
|
| { "[\"a\",[\"http://b.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| { { "b.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| + kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| + std::string() },
|
| + // On the other hand, if there is no inlineable match, restore
|
| + // the keyword verbatim score.
|
| + { "[\"a\",[\"b\"],[],[],{\"google:suggestrelevance\":[9999],"
|
| + "\"google:verbatimrelevance\":0}]",
|
| + { { "b", true, false },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://b.com\"],[],[],"
|
| @@ -2235,8 +2266,9 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "\"google:suggestrelevance\":[9999],"
|
| "\"google:verbatimrelevance\":0}]",
|
| { { "b.com", false, false },
|
| - { "k a", false, true },
|
| - kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| + kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| // The top result does not have to score as highly as calculated
|
| @@ -2244,43 +2276,43 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| // this provider.
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":0}]",
|
| { { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:verbatimrelevance\":1}]",
|
| { { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "a", true, true },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| "1" },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:suggestrelevance\":[1],"
|
| "\"google:verbatimrelevance\":0}]",
|
| - { { "k a", false, true },
|
| + { { "k a", false, false },
|
| { "a1", true, true },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| - std::string() },
|
| + "1" },
|
| { "[\"a\",[\"a1\", \"a2\"],[],[],{\"google:suggestrelevance\":[1, 2],"
|
| "\"google:verbatimrelevance\":0}]",
|
| {
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "a2", true, true },
|
| { "a1", true, true },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| - std::string() },
|
| + "2" },
|
| { "[\"a\",[\"a1\", \"a2\"],[],[],{\"google:suggestrelevance\":[1, 3],"
|
| "\"google:verbatimrelevance\":2}]",
|
| - { { "k a", false, true },
|
| + { { "k a", false, false },
|
| { "a2", true, true },
|
| { "a", true, true },
|
| { "a1", true, true },
|
| kEmptyMatch, kEmptyMatch },
|
| - std::string() },
|
| + "2" },
|
|
|
| // Ensure that all suggestions are considered, regardless of order.
|
| { "[\"a\",[\"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\"],[],[],"
|
| "{\"google:suggestrelevance\":[1, 2, 3, 4, 5, 6, 7]}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "h", true, false },
|
| { "g", true, false },
|
| { "f", true, false },
|
| @@ -2295,7 +2327,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[1, 2, 3, 4, 5, 6, 7]}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| { "h.com", false, false },
|
| { "g.com", false, false },
|
| { "f.com", false, false },
|
| @@ -2309,13 +2341,13 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| { "a2", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"a1\"],[],[],{\"google:suggestrelevance\":[9999, 1]}]",
|
| { { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // In this case, ignoring the suggested relevance scores means we keep
|
| @@ -2324,16 +2356,16 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[1]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[9999, 1]}]",
|
| { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { "a1.com", false, false },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| @@ -2343,7 +2375,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| { { "a2", true, true },
|
| { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "2" },
|
| { "[\"a\",[\"a\", \"a1\", \"a2\"],[],[],"
|
| @@ -2352,7 +2384,7 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| { { "a2", true, true },
|
| { "a", true, true },
|
| { "a1", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "2" },
|
|
|
| @@ -2360,47 +2392,45 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| // TODO(mpearson): Ensure the value of verbatimrelevance is respected
|
| // (except when suggested relevances are ignored).
|
| { "[\"a\",[],[],[],{\"google:verbatimrelevance\":1}]",
|
| - { { "k a", false, true },
|
| + { { "k a", false, false },
|
| { "a", true, true },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[],[],[],{\"google:verbatimrelevance\":0}]",
|
| { { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
|
|
| - // Check that navsuggestions will be demoted below queries.
|
| - // (Navsuggestions are not allowed to appear first.) In the process,
|
| - // make sure the navsuggestions still remain in the same order.
|
| - // First, check the situation where navsuggest scores more than verbatim
|
| - // and there are no query suggestions.
|
| + // In reorder mode, navsuggestions will not need to be demoted (because
|
| + // they are marked as not allowed to be default match and will be
|
| + // reordered as necessary).
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"],"
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9999]}]",
|
| - { { "a", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"],"
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9999, 9998]}]",
|
| - { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| - { "k a", false, true },
|
| + { { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"https://a/\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\"],"
|
| "\"google:suggestrelevance\":[9999]}]",
|
| - { { "a", true, true },
|
| - { "https://a", false, true },
|
| - { "k a", false, true },
|
| + { { "https://a", false, false },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // Check when navsuggest scores more than verbatim and there is query
|
| @@ -2409,22 +2439,22 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9999, 1300]}]",
|
| - { { "a", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| + { { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "a", true, true },
|
| { "a3", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9999, 9998, 1300]}]",
|
| - { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| + { { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "a", true, true },
|
| { "a3", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| std::string() },
|
| // Check when navsuggest scores more than a query suggestion. There is
|
| @@ -2433,68 +2463,66 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9999, 9997]}]",
|
| - { { "a3", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| + { { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "a3", true, true },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9999, 9998, 9997]}]",
|
| - { { "a3", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| + { { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "a3", true, true },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9998, 9999, 9997]}]",
|
| - { { "a3", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| + { { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "a3", true, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\", \"QUERY\"],"
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9999, 9998, 9997]}]",
|
| - { { "a3", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| - { "k a", false, true },
|
| + { { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "a3", true, true },
|
| + { "k a", false, false },
|
| kEmptyMatch, kEmptyMatch },
|
| "3" },
|
| // Check when there is neither verbatim nor a query suggestion that,
|
| // because we can't demote navsuggestions below a query suggestion,
|
| - // we abandon suggested relevance scores entirely. One consequence is
|
| - // that this means we restore the keyword verbatim match. Note
|
| - // that in this case of abandoning suggested relevance scores, we still
|
| - // keep the navsuggestions in the same order, but we revert to only allowing
|
| - // one navigation to appear because the scores are completely local.
|
| + // we restore the keyword verbatim score.
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"],"
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9998, 9999]}]",
|
| - { { "a", true, true },
|
| - { "a2.com", false, true },
|
| - { "k a", false, true },
|
| - kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| + { { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| + kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\"],[],[],"
|
| "{\"google:suggesttype\":[\"NAVIGATION\", \"NAVIGATION\"],"
|
| "\"google:verbatimrelevance\":0,"
|
| "\"google:suggestrelevance\":[9999, 9998]}]",
|
| - { { "a", true, true },
|
| - { "a1.com", false, true },
|
| - { "k a", false, true },
|
| - kEmptyMatch, kEmptyMatch, kEmptyMatch },
|
| + { { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| + { "a", true, true },
|
| + { "k a", false, false },
|
| + kEmptyMatch, kEmptyMatch },
|
| std::string() },
|
| // More checks that everything works when it's not necessary to demote.
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -2502,10 +2530,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9997, 9998, 9999]}]",
|
| { { "a3", true, true },
|
| - { "a2.com", false, true },
|
| - { "a1.com", false, true },
|
| + { "a2.com", false, false },
|
| + { "a1.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| { "[\"a\",[\"http://a1.com\", \"http://a2.com\", \"a3\"],[],[],"
|
| @@ -2513,10 +2541,10 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
| "\"google:verbatimrelevance\":9990,"
|
| "\"google:suggestrelevance\":[9998, 9997, 9999]}]",
|
| { { "a3", true, true },
|
| - { "a1.com", false, true },
|
| - { "a2.com", false, true },
|
| + { "a1.com", false, false },
|
| + { "a2.com", false, false },
|
| { "a", true, true },
|
| - { "k a", false, true },
|
| + { "k a", false, false },
|
| kEmptyMatch },
|
| "3" },
|
| };
|
| @@ -2554,10 +2582,13 @@ TEST_F(SearchProviderTest, KeywordFetcherSuggestRelevanceWithReorder) {
|
|
|
| const std::string description = "for input with json=" + cases[i].json;
|
| const ACMatches& matches = provider_->matches();
|
| - // The top match must inline and score as highly as calculated verbatim.
|
| ASSERT_FALSE(matches.empty());
|
| + // Find the first match that's allowed to be the default match and check
|
| + // its inline_autocompletion.
|
| + ACMatches::const_iterator it = FindDefaultMatch(matches);
|
| + ASSERT_NE(matches.end(), it);
|
| EXPECT_EQ(ASCIIToUTF16(cases[i].inline_autocompletion),
|
| - matches[0].inline_autocompletion) << description;
|
| + it->inline_autocompletion) << description;
|
|
|
| ASSERT_LE(matches.size(), ARRAYSIZE_UNSAFE(cases[i].matches));
|
| size_t j = 0;
|
|
|