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

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

Issue 10537154: A working implementation of AQS (Assisted Query Stats). (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Added Autocomplete unit tests. Created 8 years, 6 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/search_provider.h" 5 #include "chrome/browser/autocomplete/search_provider.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 AutocompleteMatch* wyt_match) { 203 AutocompleteMatch* wyt_match) {
204 QueryForInput(text, string16(), false); 204 QueryForInput(text, string16(), false);
205 profile_.BlockUntilHistoryProcessesPendingRequests(); 205 profile_.BlockUntilHistoryProcessesPendingRequests();
206 ASSERT_NO_FATAL_FAILURE(FinishDefaultSuggestQuery()); 206 ASSERT_NO_FATAL_FAILURE(FinishDefaultSuggestQuery());
207 EXPECT_NE(profile_.GetPrefs()->GetBoolean(prefs::kInstantEnabled), 207 EXPECT_NE(profile_.GetPrefs()->GetBoolean(prefs::kInstantEnabled),
208 provider_->done()); 208 provider_->done());
209 if (!wyt_match) 209 if (!wyt_match)
210 return; 210 return;
211 ASSERT_GE(provider_->matches().size(), 1u); 211 ASSERT_GE(provider_->matches().size(), 1u);
212 EXPECT_TRUE(FindMatchWithDestination(GURL( 212 EXPECT_TRUE(FindMatchWithDestination(GURL(
213 default_t_url_->url_ref().ReplaceSearchTerms(text, 213 default_t_url_->url_ref().ReplaceSearchTerms(
214 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())), wyt_match)); 214 TemplateURLRef::SearchTermsArgs(text))),
215 wyt_match));
215 } 216 }
216 217
217 void SearchProviderTest::TearDown() { 218 void SearchProviderTest::TearDown() {
218 message_loop_.RunAllPending(); 219 message_loop_.RunAllPending();
219 220
220 // Shutdown the provider before the profile. 221 // Shutdown the provider before the profile.
221 provider_ = NULL; 222 provider_ = NULL;
222 } 223 }
223 224
224 GURL SearchProviderTest::AddSearchToHistory(TemplateURL* t_url, 225 GURL SearchProviderTest::AddSearchToHistory(TemplateURL* t_url,
225 string16 term, 226 string16 term,
226 int visit_count) { 227 int visit_count) {
227 HistoryService* history = 228 HistoryService* history =
228 profile_.GetHistoryService(Profile::EXPLICIT_ACCESS); 229 profile_.GetHistoryService(Profile::EXPLICIT_ACCESS);
229 GURL search(t_url->url_ref().ReplaceSearchTerms(term, 230 GURL search(t_url->url_ref().ReplaceSearchTerms(
230 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 231 TemplateURLRef::SearchTermsArgs(term)));
231 static base::Time last_added_time; 232 static base::Time last_added_time;
232 last_added_time = std::max(base::Time::Now(), 233 last_added_time = std::max(base::Time::Now(),
233 last_added_time + base::TimeDelta::FromMicroseconds(1)); 234 last_added_time + base::TimeDelta::FromMicroseconds(1));
234 history->AddPageWithDetails(search, string16(), visit_count, visit_count, 235 history->AddPageWithDetails(search, string16(), visit_count, visit_count,
235 last_added_time, false, history::SOURCE_BROWSED); 236 last_added_time, false, history::SOURCE_BROWSED);
236 history->SetKeywordSearchTermsForURL(search, t_url->id(), term); 237 history->SetKeywordSearchTermsForURL(search, t_url->id(), term);
237 return search; 238 return search;
238 } 239 }
239 240
240 bool SearchProviderTest::FindMatchWithContents(const string16& contents, 241 bool SearchProviderTest::FindMatchWithContents(const string16& contents,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 string16 term = term1_.substr(0, term1_.length() - 1); 280 string16 term = term1_.substr(0, term1_.length() - 1);
280 QueryForInput(term, string16(), false); 281 QueryForInput(term, string16(), false);
281 282
282 // Make sure the default providers suggest service was queried. 283 // Make sure the default providers suggest service was queried.
283 TestURLFetcher* fetcher = test_factory_.GetFetcherByID( 284 TestURLFetcher* fetcher = test_factory_.GetFetcherByID(
284 SearchProvider::kDefaultProviderURLFetcherID); 285 SearchProvider::kDefaultProviderURLFetcherID);
285 ASSERT_TRUE(fetcher); 286 ASSERT_TRUE(fetcher);
286 287
287 // And the URL matches what we expected. 288 // And the URL matches what we expected.
288 GURL expected_url(default_t_url_->suggestions_url_ref().ReplaceSearchTerms( 289 GURL expected_url(default_t_url_->suggestions_url_ref().ReplaceSearchTerms(
289 term, TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 290 TemplateURLRef::SearchTermsArgs(term)));
290 ASSERT_TRUE(fetcher->GetOriginalURL() == expected_url); 291 ASSERT_TRUE(fetcher->GetOriginalURL() == expected_url);
291 292
292 // Tell the SearchProvider the suggest query is done. 293 // Tell the SearchProvider the suggest query is done.
293 fetcher->set_response_code(200); 294 fetcher->set_response_code(200);
294 fetcher->delegate()->OnURLFetchComplete(fetcher); 295 fetcher->delegate()->OnURLFetchComplete(fetcher);
295 fetcher = NULL; 296 fetcher = NULL;
296 297
297 // Run till the history results complete. 298 // Run till the history results complete.
298 RunTillProviderDone(); 299 RunTillProviderDone();
299 300
300 // The SearchProvider is done. Make sure it has a result for the history 301 // The SearchProvider is done. Make sure it has a result for the history
301 // term term1. 302 // term term1.
302 AutocompleteMatch term1_match; 303 AutocompleteMatch term1_match;
303 EXPECT_TRUE(FindMatchWithDestination(term1_url_, &term1_match)); 304 EXPECT_TRUE(FindMatchWithDestination(term1_url_, &term1_match));
304 // Term1 should not have a description, it's set later. 305 // Term1 should not have a description, it's set later.
305 EXPECT_TRUE(term1_match.description.empty()); 306 EXPECT_TRUE(term1_match.description.empty());
306 307
307 AutocompleteMatch wyt_match; 308 AutocompleteMatch wyt_match;
308 EXPECT_TRUE(FindMatchWithDestination( 309 EXPECT_TRUE(FindMatchWithDestination(
309 GURL(default_t_url_->url_ref().ReplaceSearchTerms(term, 310 GURL(default_t_url_->url_ref().ReplaceSearchTerms(
310 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())), &wyt_match)); 311 TemplateURLRef::SearchTermsArgs(term))), &wyt_match));
311 EXPECT_TRUE(wyt_match.description.empty()); 312 EXPECT_TRUE(wyt_match.description.empty());
312 313
313 // The match for term1 should be more relevant than the what you typed result. 314 // The match for term1 should be more relevant than the what you typed result.
314 EXPECT_GT(term1_match.relevance, wyt_match.relevance); 315 EXPECT_GT(term1_match.relevance, wyt_match.relevance);
315 } 316 }
316 317
317 TEST_F(SearchProviderTest, HonorPreventInlineAutocomplete) { 318 TEST_F(SearchProviderTest, HonorPreventInlineAutocomplete) {
318 string16 term = term1_.substr(0, term1_.length() - 1); 319 string16 term = term1_.substr(0, term1_.length() - 1);
319 QueryForInput(term, string16(), true); 320 QueryForInput(term, string16(), true);
320 321
(...skipping 19 matching lines...) Expand all
340 default_fetcher->delegate()->OnURLFetchComplete(default_fetcher); 341 default_fetcher->delegate()->OnURLFetchComplete(default_fetcher);
341 default_fetcher = NULL; 342 default_fetcher = NULL;
342 343
343 // Make sure the keyword providers suggest service was queried. 344 // Make sure the keyword providers suggest service was queried.
344 TestURLFetcher* keyword_fetcher = test_factory_.GetFetcherByID( 345 TestURLFetcher* keyword_fetcher = test_factory_.GetFetcherByID(
345 SearchProvider::kKeywordProviderURLFetcherID); 346 SearchProvider::kKeywordProviderURLFetcherID);
346 ASSERT_TRUE(keyword_fetcher); 347 ASSERT_TRUE(keyword_fetcher);
347 348
348 // And the URL matches what we expected. 349 // And the URL matches what we expected.
349 GURL expected_url(keyword_t_url_->suggestions_url_ref().ReplaceSearchTerms( 350 GURL expected_url(keyword_t_url_->suggestions_url_ref().ReplaceSearchTerms(
350 term, TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 351 TemplateURLRef::SearchTermsArgs(term)));
351 ASSERT_TRUE(keyword_fetcher->GetOriginalURL() == expected_url); 352 ASSERT_TRUE(keyword_fetcher->GetOriginalURL() == expected_url);
352 353
353 // Tell the SearchProvider the keyword suggest query is done. 354 // Tell the SearchProvider the keyword suggest query is done.
354 keyword_fetcher->set_response_code(200); 355 keyword_fetcher->set_response_code(200);
355 keyword_fetcher->delegate()->OnURLFetchComplete(keyword_fetcher); 356 keyword_fetcher->delegate()->OnURLFetchComplete(keyword_fetcher);
356 keyword_fetcher = NULL; 357 keyword_fetcher = NULL;
357 358
358 // Run till the history results complete. 359 // Run till the history results complete.
359 RunTillProviderDone(); 360 RunTillProviderDone();
360 361
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 // Tell the provider instant is done. 410 // Tell the provider instant is done.
410 provider_->FinalizeInstantQuery(ASCIIToUTF16("foo"), ASCIIToUTF16("bar")); 411 provider_->FinalizeInstantQuery(ASCIIToUTF16("foo"), ASCIIToUTF16("bar"));
411 412
412 // The provider should now be done. 413 // The provider should now be done.
413 EXPECT_TRUE(provider_->done()); 414 EXPECT_TRUE(provider_->done());
414 415
415 // There should be two matches, one for what you typed, the other for 416 // There should be two matches, one for what you typed, the other for
416 // 'foobar'. 417 // 'foobar'.
417 EXPECT_EQ(2u, provider_->matches().size()); 418 EXPECT_EQ(2u, provider_->matches().size());
418 GURL instant_url(default_t_url_->url_ref().ReplaceSearchTerms( 419 GURL instant_url(default_t_url_->url_ref().ReplaceSearchTerms(
419 ASCIIToUTF16("foobar"), TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, 420 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("foobar"))));
420 string16()));
421 AutocompleteMatch instant_match; 421 AutocompleteMatch instant_match;
422 EXPECT_TRUE(FindMatchWithDestination(instant_url, &instant_match)); 422 EXPECT_TRUE(FindMatchWithDestination(instant_url, &instant_match));
423 423
424 // And the 'foobar' match should not have a description, it'll be set later. 424 // And the 'foobar' match should not have a description, it'll be set later.
425 EXPECT_TRUE(instant_match.description.empty()); 425 EXPECT_TRUE(instant_match.description.empty());
426 426
427 // Make sure the what you typed match has no description. 427 // Make sure the what you typed match has no description.
428 AutocompleteMatch wyt_match; 428 AutocompleteMatch wyt_match;
429 EXPECT_TRUE(FindMatchWithDestination( 429 EXPECT_TRUE(FindMatchWithDestination(
430 GURL(default_t_url_->url_ref().ReplaceSearchTerms(ASCIIToUTF16("foo"), 430 GURL(default_t_url_->url_ref().ReplaceSearchTerms(
431 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())), &wyt_match)); 431 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("foo")))),
432 &wyt_match));
432 EXPECT_TRUE(wyt_match.description.empty()); 433 EXPECT_TRUE(wyt_match.description.empty());
433 434
434 // The instant search should be more relevant. 435 // The instant search should be more relevant.
435 EXPECT_GT(instant_match.relevance, wyt_match.relevance); 436 EXPECT_GT(instant_match.relevance, wyt_match.relevance);
436 } 437 }
437 438
438 // Make sure that if FinalizeInstantQuery is invoked before suggest results 439 // Make sure that if FinalizeInstantQuery is invoked before suggest results
439 // return, the suggest text from FinalizeInstantQuery is remembered. 440 // return, the suggest text from FinalizeInstantQuery is remembered.
440 TEST_F(SearchProviderTest, RememberInstantQuery) { 441 TEST_F(SearchProviderTest, RememberInstantQuery) {
441 PrefService* service = profile_.GetPrefs(); 442 PrefService* service = profile_.GetPrefs();
442 service->SetBoolean(prefs::kInstantEnabled, true); 443 service->SetBoolean(prefs::kInstantEnabled, true);
443 444
444 QueryForInput(ASCIIToUTF16("foo"), string16(), false); 445 QueryForInput(ASCIIToUTF16("foo"), string16(), false);
445 446
446 // Finalize the instant query immediately. 447 // Finalize the instant query immediately.
447 provider_->FinalizeInstantQuery(ASCIIToUTF16("foo"), ASCIIToUTF16("bar")); 448 provider_->FinalizeInstantQuery(ASCIIToUTF16("foo"), ASCIIToUTF16("bar"));
448 449
449 // There should be two matches, one for what you typed, the other for 450 // There should be two matches, one for what you typed, the other for
450 // 'foobar'. 451 // 'foobar'.
451 EXPECT_EQ(2u, provider_->matches().size()); 452 EXPECT_EQ(2u, provider_->matches().size());
452 GURL instant_url(default_t_url_->url_ref().ReplaceSearchTerms( 453 GURL instant_url(default_t_url_->url_ref().ReplaceSearchTerms(
453 ASCIIToUTF16("foobar"), TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, 454 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("foobar"))));
454 string16()));
455 AutocompleteMatch instant_match; 455 AutocompleteMatch instant_match;
456 EXPECT_TRUE(FindMatchWithDestination(instant_url, &instant_match)); 456 EXPECT_TRUE(FindMatchWithDestination(instant_url, &instant_match));
457 457
458 // Wait until history and the suggest query complete. 458 // Wait until history and the suggest query complete.
459 profile_.BlockUntilHistoryProcessesPendingRequests(); 459 profile_.BlockUntilHistoryProcessesPendingRequests();
460 ASSERT_NO_FATAL_FAILURE(FinishDefaultSuggestQuery()); 460 ASSERT_NO_FATAL_FAILURE(FinishDefaultSuggestQuery());
461 461
462 // Provider should be done. 462 // Provider should be done.
463 EXPECT_TRUE(provider_->done()); 463 EXPECT_TRUE(provider_->done());
464 464
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 EXPECT_EQ(AutocompleteMatch::ACMatchClassification::URL, 1215 EXPECT_EQ(AutocompleteMatch::ACMatchClassification::URL,
1216 match.contents_class[0].style); 1216 match.contents_class[0].style);
1217 EXPECT_EQ(4U, match.contents_class[1].offset); 1217 EXPECT_EQ(4U, match.contents_class[1].offset);
1218 EXPECT_EQ(AutocompleteMatch::ACMatchClassification::URL | 1218 EXPECT_EQ(AutocompleteMatch::ACMatchClassification::URL |
1219 AutocompleteMatch::ACMatchClassification::MATCH, 1219 AutocompleteMatch::ACMatchClassification::MATCH,
1220 match.contents_class[1].style); 1220 match.contents_class[1].style);
1221 EXPECT_EQ(5U, match.contents_class[2].offset); 1221 EXPECT_EQ(5U, match.contents_class[2].offset);
1222 EXPECT_EQ(AutocompleteMatch::ACMatchClassification::URL, 1222 EXPECT_EQ(AutocompleteMatch::ACMatchClassification::URL,
1223 match.contents_class[2].style); 1223 match.contents_class[2].style);
1224 } 1224 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698