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

Side by Side Diff: chrome/browser/autocomplete/history_contents_provider_unittest.cc

Issue 12623029: Upstreaming mechanism to add query refinement to omnibox searches. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed ChromeOS. Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/autocomplete/history_contents_provider.h" 5 #include "chrome/browser/autocomplete/history_contents_provider.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 scoped_ptr<TestingProfile> profile_; 125 scoped_ptr<TestingProfile> profile_;
126 scoped_refptr<HistoryContentsProvider> provider_; 126 scoped_refptr<HistoryContentsProvider> provider_;
127 }; 127 };
128 128
129 class HistoryContentsProviderBodyOnlyTest : public HistoryContentsProviderTest { 129 class HistoryContentsProviderBodyOnlyTest : public HistoryContentsProviderTest {
130 protected: 130 protected:
131 virtual bool BodyOnly() OVERRIDE { return true; } 131 virtual bool BodyOnly() OVERRIDE { return true; }
132 }; 132 };
133 133
134 TEST_F(HistoryContentsProviderTest, Body) { 134 TEST_F(HistoryContentsProviderTest, Body) {
135 AutocompleteInput input(ASCIIToUTF16("FOO"), string16::npos, string16(), true, 135 AutocompleteInput input(ASCIIToUTF16("FOO"), string16::npos, string16(),
136 false, true, AutocompleteInput::ALL_MATCHES); 136 GURL(), true, false, true,
137 AutocompleteInput::ALL_MATCHES);
137 RunQuery(input, false); 138 RunQuery(input, false);
138 139
139 // The results should be the first two pages, in decreasing order. 140 // The results should be the first two pages, in decreasing order.
140 const ACMatches& m = matches(); 141 const ACMatches& m = matches();
141 ASSERT_EQ(2U, m.size()); 142 ASSERT_EQ(2U, m.size());
142 EXPECT_EQ(test_entries[0].url, m[0].destination_url.spec()); 143 EXPECT_EQ(test_entries[0].url, m[0].destination_url.spec());
143 EXPECT_STREQ(test_entries[0].title, UTF16ToUTF8(m[0].description).c_str()); 144 EXPECT_STREQ(test_entries[0].title, UTF16ToUTF8(m[0].description).c_str());
144 EXPECT_EQ(test_entries[1].url, m[1].destination_url.spec()); 145 EXPECT_EQ(test_entries[1].url, m[1].destination_url.spec());
145 EXPECT_STREQ(test_entries[1].title, UTF16ToUTF8(m[1].description).c_str()); 146 EXPECT_STREQ(test_entries[1].title, UTF16ToUTF8(m[1].description).c_str());
146 } 147 }
147 148
148 TEST_F(HistoryContentsProviderTest, Title) { 149 TEST_F(HistoryContentsProviderTest, Title) {
149 AutocompleteInput input(ASCIIToUTF16("PAGEONE"), string16::npos, string16(), 150 AutocompleteInput input(ASCIIToUTF16("PAGEONE"), string16::npos, string16(),
150 true, false, true, AutocompleteInput::ALL_MATCHES); 151 GURL(), true, false, true,
152 AutocompleteInput::ALL_MATCHES);
151 RunQuery(input, false); 153 RunQuery(input, false);
152 154
153 // The results should be the first two pages. 155 // The results should be the first two pages.
154 const ACMatches& m = matches(); 156 const ACMatches& m = matches();
155 ASSERT_EQ(2U, m.size()); 157 ASSERT_EQ(2U, m.size());
156 EXPECT_EQ(test_entries[0].url, m[0].destination_url.spec()); 158 EXPECT_EQ(test_entries[0].url, m[0].destination_url.spec());
157 EXPECT_STREQ(test_entries[0].title, UTF16ToUTF8(m[0].description).c_str()); 159 EXPECT_STREQ(test_entries[0].title, UTF16ToUTF8(m[0].description).c_str());
158 EXPECT_EQ(test_entries[1].url, m[1].destination_url.spec()); 160 EXPECT_EQ(test_entries[1].url, m[1].destination_url.spec());
159 EXPECT_STREQ(test_entries[1].title, UTF16ToUTF8(m[1].description).c_str()); 161 EXPECT_STREQ(test_entries[1].title, UTF16ToUTF8(m[1].description).c_str());
160 } 162 }
161 163
162 // The "minimal changes" flag should mean that we don't re-query the DB. 164 // The "minimal changes" flag should mean that we don't re-query the DB.
163 TEST_F(HistoryContentsProviderTest, MinimalChanges) { 165 TEST_F(HistoryContentsProviderTest, MinimalChanges) {
164 // A minimal changes request when there have been no real queries should 166 // A minimal changes request when there have been no real queries should
165 // give us no results. 167 // give us no results.
166 AutocompleteInput sync_input(ASCIIToUTF16("PAGEONE"), string16::npos, 168 AutocompleteInput sync_input(ASCIIToUTF16("PAGEONE"), string16::npos,
167 string16(), true, false, true, 169 string16(), GURL(), true, false, true,
168 AutocompleteInput::SYNCHRONOUS_MATCHES); 170 AutocompleteInput::SYNCHRONOUS_MATCHES);
169 RunQuery(sync_input, true); 171 RunQuery(sync_input, true);
170 const ACMatches& m1 = matches(); 172 const ACMatches& m1 = matches();
171 EXPECT_EQ(0U, m1.size()); 173 EXPECT_EQ(0U, m1.size());
172 174
173 // Now do a "regular" query to get the results. 175 // Now do a "regular" query to get the results.
174 AutocompleteInput async_input(ASCIIToUTF16("PAGEONE"), string16::npos, 176 AutocompleteInput async_input(ASCIIToUTF16("PAGEONE"), string16::npos,
175 string16(), true, false, true, 177 string16(), GURL(), true, false, true,
176 AutocompleteInput::ALL_MATCHES); 178 AutocompleteInput::ALL_MATCHES);
177 RunQuery(async_input, false); 179 RunQuery(async_input, false);
178 const ACMatches& m2 = matches(); 180 const ACMatches& m2 = matches();
179 EXPECT_EQ(2U, m2.size()); 181 EXPECT_EQ(2U, m2.size());
180 182
181 // Now do a minimal one where we want synchronous results, and the results 183 // Now do a minimal one where we want synchronous results, and the results
182 // should still be there. 184 // should still be there.
183 RunQuery(sync_input, true); 185 RunQuery(sync_input, true);
184 const ACMatches& m3 = matches(); 186 const ACMatches& m3 = matches();
185 EXPECT_EQ(2U, m3.size()); 187 EXPECT_EQ(2U, m3.size());
186 } 188 }
187 189
188 TEST_F(HistoryContentsProviderBodyOnlyTest, MinimalChanges) { 190 TEST_F(HistoryContentsProviderBodyOnlyTest, MinimalChanges) {
189 // A minimal changes request when there have been no real queries should 191 // A minimal changes request when there have been no real queries should
190 // give us no results. 192 // give us no results.
191 AutocompleteInput sync_input(ASCIIToUTF16("PAGEONE"), string16::npos, 193 AutocompleteInput sync_input(ASCIIToUTF16("PAGEONE"), string16::npos,
192 string16(), true, false, true, 194 string16(), GURL(), true, false, true,
193 AutocompleteInput::SYNCHRONOUS_MATCHES); 195 AutocompleteInput::SYNCHRONOUS_MATCHES);
194 RunQuery(sync_input, true); 196 RunQuery(sync_input, true);
195 const ACMatches& m1 = matches(); 197 const ACMatches& m1 = matches();
196 EXPECT_EQ(0U, m1.size()); 198 EXPECT_EQ(0U, m1.size());
197 199
198 // Now do a "regular" query to get no results because we are body-only. 200 // Now do a "regular" query to get no results because we are body-only.
199 AutocompleteInput async_input(ASCIIToUTF16("PAGEONE"), string16::npos, 201 AutocompleteInput async_input(ASCIIToUTF16("PAGEONE"), string16::npos,
200 string16(), true, false, true, 202 string16(), GURL(), true, false, true,
201 AutocompleteInput::ALL_MATCHES); 203 AutocompleteInput::ALL_MATCHES);
202 RunQuery(async_input, false); 204 RunQuery(async_input, false);
203 const ACMatches& m2 = matches(); 205 const ACMatches& m2 = matches();
204 EXPECT_EQ(0U, m2.size()); 206 EXPECT_EQ(0U, m2.size());
205 207
206 // Now do a minimal one where we want synchronous results, and the results 208 // Now do a minimal one where we want synchronous results, and the results
207 // should still not be there. 209 // should still not be there.
208 RunQuery(sync_input, true); 210 RunQuery(sync_input, true);
209 const ACMatches& m3 = matches(); 211 const ACMatches& m3 = matches();
210 EXPECT_EQ(0U, m3.size()); 212 EXPECT_EQ(0U, m3.size());
211 } 213 }
212 214
213 // Tests that history is deleted properly. 215 // Tests that history is deleted properly.
214 TEST_F(HistoryContentsProviderTest, DeleteMatch) { 216 TEST_F(HistoryContentsProviderTest, DeleteMatch) {
215 AutocompleteInput input(ASCIIToUTF16("bar"), string16::npos, string16(), true, 217 AutocompleteInput input(ASCIIToUTF16("bar"), string16::npos, string16(),
216 false, true, AutocompleteInput::ALL_MATCHES); 218 GURL(), true, false, true,
219 AutocompleteInput::ALL_MATCHES);
217 RunQuery(input, false); 220 RunQuery(input, false);
218 221
219 // Query; the result should be the third page. 222 // Query; the result should be the third page.
220 const ACMatches& m = matches(); 223 const ACMatches& m = matches();
221 ASSERT_EQ(1U, m.size()); 224 ASSERT_EQ(1U, m.size());
222 EXPECT_EQ(test_entries[2].url, m[0].destination_url.spec()); 225 EXPECT_EQ(test_entries[2].url, m[0].destination_url.spec());
223 226
224 // Now delete the match and ensure it was removed. 227 // Now delete the match and ensure it was removed.
225 provider()->DeleteMatch(m[0]); 228 provider()->DeleteMatch(m[0]);
226 EXPECT_EQ(0U, matches().size()); 229 EXPECT_EQ(0U, matches().size());
227 } 230 }
228 231
229 // Tests deleting starred results from history, not affecting bookmarks/matches. 232 // Tests deleting starred results from history, not affecting bookmarks/matches.
230 TEST_F(HistoryContentsProviderTest, DeleteStarredMatch) { 233 TEST_F(HistoryContentsProviderTest, DeleteStarredMatch) {
231 profile()->CreateBookmarkModel(false); 234 profile()->CreateBookmarkModel(false);
232 profile()->BlockUntilBookmarkModelLoaded(); 235 profile()->BlockUntilBookmarkModelLoaded();
233 236
234 // Bookmark a history item. 237 // Bookmark a history item.
235 GURL bookmark_url(test_entries[2].url); 238 GURL bookmark_url(test_entries[2].url);
236 bookmark_utils::AddIfNotBookmarked( 239 bookmark_utils::AddIfNotBookmarked(
237 BookmarkModelFactory::GetForProfile(profile()), 240 BookmarkModelFactory::GetForProfile(profile()),
238 bookmark_url, 241 bookmark_url,
239 ASCIIToUTF16("bar")); 242 ASCIIToUTF16("bar"));
240 243
241 // Get the match to delete its history 244 // Get the match to delete its history
242 AutocompleteInput input(ASCIIToUTF16("bar"), string16::npos, string16(), true, 245 AutocompleteInput input(ASCIIToUTF16("bar"), string16::npos, string16(),
243 false, true, AutocompleteInput::ALL_MATCHES); 246 GURL(), true, false, true,
247 AutocompleteInput::ALL_MATCHES);
244 RunQuery(input, false); 248 RunQuery(input, false);
245 const ACMatches& m = matches(); 249 const ACMatches& m = matches();
246 ASSERT_EQ(1U, m.size()); 250 ASSERT_EQ(1U, m.size());
247 251
248 // Now delete the match and ensure it was *not* removed. 252 // Now delete the match and ensure it was *not* removed.
249 provider()->DeleteMatch(m[0]); 253 provider()->DeleteMatch(m[0]);
250 EXPECT_EQ(1U, matches().size()); 254 EXPECT_EQ(1U, matches().size());
251 255
252 // Run a query that would only match history (but the history is deleted) 256 // Run a query that would only match history (but the history is deleted)
253 AutocompleteInput you_input(ASCIIToUTF16("you"), string16::npos, string16(), 257 AutocompleteInput you_input(ASCIIToUTF16("you"), string16::npos, string16(),
254 true, false, true, 258 GURL(), true, false, true,
255 AutocompleteInput::ALL_MATCHES); 259 AutocompleteInput::ALL_MATCHES);
256 RunQuery(you_input, false); 260 RunQuery(you_input, false);
257 EXPECT_EQ(0U, matches().size()); 261 EXPECT_EQ(0U, matches().size());
258 } 262 }
259 263
260 TEST_F(HistoryContentsProviderTest, CullSearchResults) { 264 TEST_F(HistoryContentsProviderTest, CullSearchResults) {
261 // Set up a default search engine. 265 // Set up a default search engine.
262 TemplateURLData data; 266 TemplateURLData data;
263 data.SetKeyword(ASCIIToUTF16("TestEngine")); 267 data.SetKeyword(ASCIIToUTF16("TestEngine"));
264 data.SetURL("http://testsearch.com/?q={searchTerms}"); 268 data.SetURL("http://testsearch.com/?q={searchTerms}");
265 TemplateURLService* template_url_service = 269 TemplateURLService* template_url_service =
266 TemplateURLServiceFactory::GetForProfile(profile()); 270 TemplateURLServiceFactory::GetForProfile(profile());
267 TemplateURL* template_url = new TemplateURL(profile(), data); 271 TemplateURL* template_url = new TemplateURL(profile(), data);
268 template_url_service->Add(template_url); 272 template_url_service->Add(template_url);
269 template_url_service->SetDefaultSearchProvider(template_url); 273 template_url_service->SetDefaultSearchProvider(template_url);
270 template_url_service->Load(); 274 template_url_service->Load();
271 275
272 AutocompleteInput input(ASCIIToUTF16("moo"), string16::npos, string16(), true, 276 AutocompleteInput input(ASCIIToUTF16("moo"), string16::npos, string16(),
273 false, true, AutocompleteInput::ALL_MATCHES); 277 GURL(), true, false, true,
278 AutocompleteInput::ALL_MATCHES);
274 RunQuery(input, false); 279 RunQuery(input, false);
275 280
276 // Run a query that is found on a search result page and on the main page 281 // Run a query that is found on a search result page and on the main page
277 // of the default search engine. The result should be the main page, the 282 // of the default search engine. The result should be the main page, the
278 // SRP should be culled. 283 // SRP should be culled.
279 const ACMatches& m = matches(); 284 const ACMatches& m = matches();
280 ASSERT_EQ(1U, m.size()); 285 ASSERT_EQ(1U, m.size());
281 EXPECT_EQ(test_entries[4].url, m[0].destination_url.spec()); 286 EXPECT_EQ(test_entries[4].url, m[0].destination_url.spec());
282 } 287 }
283 288
284 } // namespace 289 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698