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

Side by Side Diff: components/omnibox/base_search_provider_unittest.cc

Issue 598253002: Revert of [AiS] Merge answers into highest-scoring result (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@top-hit
Patch Set: Created 6 years, 3 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 unified diff | Download patch
« no previous file with comments | « components/omnibox/base_search_provider.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/omnibox/base_search_provider.h"
6
7 #include "base/strings/string16.h"
8 #include "base/strings/utf_string_conversions.h"
9 #include "components/omnibox/autocomplete_match.h"
10 #include "components/omnibox/autocomplete_match_type.h"
11 #include "components/omnibox/autocomplete_provider_client.h"
12 #include "components/omnibox/autocomplete_scheme_classifier.h"
13 #include "components/omnibox/search_suggestion_parser.h"
14 #include "components/search_engines/search_terms_data.h"
15 #include "components/search_engines/template_url_service.h"
16 #include "components/search_engines/template_url_service_client.h"
17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19
20 using testing::NiceMock;
21 using testing::Return;
22 using testing::_;
23
24 class MockAutocompleteProviderClient : public AutocompleteProviderClient {
25 public:
26 MockAutocompleteProviderClient() {}
27 MOCK_METHOD0(RequestContext, net::URLRequestContextGetter*());
28 MOCK_METHOD0(IsOffTheRecord, bool());
29 MOCK_METHOD0(AcceptLanguages, std::string());
30 MOCK_METHOD0(SearchSuggestEnabled, bool());
31 MOCK_METHOD0(ShowBookmarkBar, bool());
32 MOCK_METHOD0(SchemeClassifier, const AutocompleteSchemeClassifier&());
33 MOCK_METHOD6(
34 Classify,
35 void(const base::string16& text,
36 bool prefer_keyword,
37 bool allow_exact_keyword_match,
38 metrics::OmniboxEventProto::PageClassification page_classification,
39 AutocompleteMatch* match,
40 GURL* alternate_nav_url));
41 MOCK_METHOD0(InMemoryDatabase, history::URLDatabase*());
42 MOCK_METHOD2(DeleteMatchingURLsForKeywordFromHistory,
43 void(history::KeywordID keyword_id, const base::string16& term));
44 MOCK_METHOD0(TabSyncEnabledAndUnencrypted, bool());
45 MOCK_METHOD1(PrefetchImage, void(const GURL& url));
46
47 private:
48 DISALLOW_COPY_AND_ASSIGN(MockAutocompleteProviderClient);
49 };
50
51 class TestBaseSearchProvider : public BaseSearchProvider {
52 public:
53 typedef BaseSearchProvider::MatchMap MatchMap;
54
55 // Note: Takes ownership of client. scoped_ptr<> would be the right way to
56 // express that, but NiceMock<> can't forward a scoped_ptr.
57 TestBaseSearchProvider(TemplateURLService* template_url_service,
58 AutocompleteProviderClient* client,
59 AutocompleteProvider::Type type)
60 : BaseSearchProvider(template_url_service,
61 scoped_ptr<AutocompleteProviderClient>(client),
62 type) {}
63 MOCK_METHOD1(DeleteMatch, void(const AutocompleteMatch& match));
64 MOCK_CONST_METHOD1(AddProviderInfo, void(ProvidersInfo* provider_info));
65 MOCK_CONST_METHOD1(GetTemplateURL, const TemplateURL*(bool is_keyword));
66 MOCK_CONST_METHOD1(GetInput, const AutocompleteInput(bool is_keyword));
67 MOCK_CONST_METHOD1(ShouldAppendExtraParams,
68 bool(const SearchSuggestionParser::SuggestResult& result));
69 MOCK_METHOD1(RecordDeletionResult, void(bool success));
70
71 MOCK_METHOD2(Start,
72 void(const AutocompleteInput& input, bool minimal_changes));
73 void AddMatchToMap(const SearchSuggestionParser::SuggestResult& result,
74 const std::string& metadata,
75 int accepted_suggestion,
76 bool mark_as_deletable,
77 bool in_keyword_mode,
78 MatchMap* map) {
79 BaseSearchProvider::AddMatchToMap(result,
80 metadata,
81 accepted_suggestion,
82 mark_as_deletable,
83 in_keyword_mode,
84 map);
85 }
86
87 protected:
88 virtual ~TestBaseSearchProvider() {}
89
90 private:
91 DISALLOW_COPY_AND_ASSIGN(TestBaseSearchProvider);
92 };
93
94 class BaseSearchProviderTest : public testing::Test {
95 public:
96 virtual ~BaseSearchProviderTest() {}
97
98 protected:
99 virtual void SetUp() {
100 service_.reset(
101 new TemplateURLService(NULL,
102 scoped_ptr<SearchTermsData>(new SearchTermsData),
103 NULL,
104 scoped_ptr<TemplateURLServiceClient>(),
105 NULL,
106 NULL,
107 base::Closure()));
108 provider_ = new NiceMock<TestBaseSearchProvider>(
109 service_.get(),
110 new NiceMock<MockAutocompleteProviderClient>,
111 AutocompleteProvider::TYPE_SEARCH);
112 }
113
114 scoped_refptr<NiceMock<TestBaseSearchProvider> > provider_;
115 scoped_ptr<TemplateURLService> service_;
116 };
117
118 TEST_F(BaseSearchProviderTest, PreserveAnswersWhenDeduplicating) {
119 TemplateURLData data;
120 data.SetURL("http://foo.com/url?bar={searchTerms}");
121 TemplateURL* template_url = new TemplateURL(data);
122
123 TestBaseSearchProvider::MatchMap map;
124 base::string16 query = base::ASCIIToUTF16("weather los angeles");
125 base::string16 answer_contents = base::ASCIIToUTF16("some answer content");
126 base::string16 answer_type = base::ASCIIToUTF16("2334");
127
128 EXPECT_CALL(*provider_, GetInput(_))
129 .WillRepeatedly(Return(AutocompleteInput()));
130 EXPECT_CALL(*provider_, GetTemplateURL(_))
131 .WillRepeatedly(Return(template_url));
132
133 SearchSuggestionParser::SuggestResult more_relevant(
134 query, AutocompleteMatchType::SEARCH_HISTORY, query, base::string16(),
135 base::string16(), base::string16(), base::string16(), std::string(),
136 std::string(), false, 1300, true, false, query);
137 provider_->AddMatchToMap(
138 more_relevant, std::string(), TemplateURLRef::NO_SUGGESTION_CHOSEN,
139 false, false, &map);
140
141 SearchSuggestionParser::SuggestResult less_relevant(
142 query, AutocompleteMatchType::SEARCH_SUGGEST, query, base::string16(),
143 base::string16(), answer_contents, answer_type, std::string(),
144 std::string(), false, 850, true, false, query);
145 provider_->AddMatchToMap(
146 less_relevant, std::string(), TemplateURLRef::NO_SUGGESTION_CHOSEN,
147 false, false, &map);
148
149 ASSERT_EQ(1U, map.size());
150 AutocompleteMatch match = map.begin()->second;
151 ASSERT_EQ(1U, match.duplicate_matches.size());
152 AutocompleteMatch duplicate = match.duplicate_matches[0];
153
154 EXPECT_EQ(answer_contents, match.answer_contents);
155 EXPECT_EQ(answer_type, match.answer_type);
156 EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, match.type);
157 EXPECT_EQ(1300, match.relevance);
158
159 EXPECT_EQ(answer_contents, duplicate.answer_contents);
160 EXPECT_EQ(answer_type, duplicate.answer_type);
161 EXPECT_EQ(AutocompleteMatchType::SEARCH_SUGGEST, duplicate.type);
162 EXPECT_EQ(850, duplicate.relevance);
163
164 // Ensure answers are not copied over existing answers.
165 map.clear();
166 base::string16 answer_contents2 = base::ASCIIToUTF16("different answer");
167 more_relevant = SearchSuggestionParser::SuggestResult(
168 query, AutocompleteMatchType::SEARCH_HISTORY, query, base::string16(),
169 base::string16(), answer_contents2, answer_type, std::string(),
170 std::string(), false, 1300, true, false, query);
171 provider_->AddMatchToMap(
172 more_relevant, std::string(), TemplateURLRef::NO_SUGGESTION_CHOSEN,
173 false, false, &map);
174 provider_->AddMatchToMap(
175 less_relevant, std::string(), TemplateURLRef::NO_SUGGESTION_CHOSEN,
176 false, false, &map);
177 ASSERT_EQ(1U, map.size());
178 match = map.begin()->second;
179 ASSERT_EQ(1U, match.duplicate_matches.size());
180 duplicate = match.duplicate_matches[0];
181
182 EXPECT_EQ(answer_contents2, match.answer_contents);
183 EXPECT_EQ(answer_type, match.answer_type);
184 EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, match.type);
185 EXPECT_EQ(1300, match.relevance);
186
187 EXPECT_EQ(answer_contents, duplicate.answer_contents);
188 EXPECT_EQ(answer_type, duplicate.answer_type);
189 EXPECT_EQ(AutocompleteMatchType::SEARCH_SUGGEST, duplicate.type);
190 EXPECT_EQ(850, duplicate.relevance);
191
192 }
OLDNEW
« no previous file with comments | « components/omnibox/base_search_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698