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

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

Issue 7321001: Changes SearchProvider to set the description of the first consecutive (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix DCHECK Created 9 years, 5 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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"
6
5 #include "base/string_util.h" 7 #include "base/string_util.h"
6 #include "base/time.h" 8 #include "base/time.h"
7 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
8 #include "build/build_config.h" 10 #include "build/build_config.h"
11 #include "chrome/browser/autocomplete/autocomplete.h"
9 #include "chrome/browser/autocomplete/autocomplete_match.h" 12 #include "chrome/browser/autocomplete/autocomplete_match.h"
10 #include "chrome/browser/autocomplete/search_provider.h"
11 #include "chrome/browser/history/history.h" 13 #include "chrome/browser/history/history.h"
12 #include "chrome/browser/prefs/pref_service.h" 14 #include "chrome/browser/prefs/pref_service.h"
13 #include "chrome/browser/search_engines/template_url.h" 15 #include "chrome/browser/search_engines/template_url.h"
14 #include "chrome/browser/search_engines/template_url_service.h" 16 #include "chrome/browser/search_engines/template_url_service.h"
15 #include "chrome/browser/search_engines/template_url_service_factory.h" 17 #include "chrome/browser/search_engines/template_url_service_factory.h"
16 #include "chrome/common/pref_names.h" 18 #include "chrome/common/pref_names.h"
17 #include "chrome/test/testing_browser_process.h" 19 #include "chrome/test/testing_browser_process.h"
18 #include "chrome/test/testing_browser_process_test.h" 20 #include "chrome/test/testing_browser_process_test.h"
19 #include "chrome/test/testing_profile.h" 21 #include "chrome/test/testing_profile.h"
20 #include "content/browser/browser_thread.h" 22 #include "content/browser/browser_thread.h"
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 void SearchProviderTest::SetUp() { 103 void SearchProviderTest::SetUp() {
102 SearchProvider::set_query_suggest_immediately(true); 104 SearchProvider::set_query_suggest_immediately(true);
103 105
104 // We need both the history service and template url model loaded. 106 // We need both the history service and template url model loaded.
105 profile_.CreateHistoryService(true, false); 107 profile_.CreateHistoryService(true, false);
106 profile_.CreateTemplateURLService(); 108 profile_.CreateTemplateURLService();
107 109
108 TemplateURLService* turl_model = 110 TemplateURLService* turl_model =
109 TemplateURLServiceFactory::GetForProfile(&profile_); 111 TemplateURLServiceFactory::GetForProfile(&profile_);
110 112
113 turl_model->Load();
114
111 // Reset the default TemplateURL. 115 // Reset the default TemplateURL.
112 default_t_url_ = new TemplateURL(); 116 default_t_url_ = new TemplateURL();
113 default_t_url_->SetURL("http://defaultturl/{searchTerms}", 0, 0); 117 default_t_url_->SetURL("http://defaultturl/{searchTerms}", 0, 0);
114 default_t_url_->SetSuggestionsURL("http://defaultturl2/{searchTerms}", 0, 0); 118 default_t_url_->SetSuggestionsURL("http://defaultturl2/{searchTerms}", 0, 0);
119 default_t_url_->set_short_name(ASCIIToUTF16("t"));
115 turl_model->Add(default_t_url_); 120 turl_model->Add(default_t_url_);
116 turl_model->SetDefaultSearchProvider(default_t_url_); 121 turl_model->SetDefaultSearchProvider(default_t_url_);
117 TemplateURLID default_provider_id = default_t_url_->id(); 122 TemplateURLID default_provider_id = default_t_url_->id();
118 ASSERT_NE(0, default_provider_id); 123 ASSERT_NE(0, default_provider_id);
119 124
120 // Add url1, with search term term1_. 125 // Add url1, with search term term1_.
121 HistoryService* history = 126 HistoryService* history =
122 profile_.GetHistoryService(Profile::EXPLICIT_ACCESS); 127 profile_.GetHistoryService(Profile::EXPLICIT_ACCESS);
123 term1_url_ = GURL(default_t_url_->url()->ReplaceSearchTerms( 128 term1_url_ = GURL(default_t_url_->url()->ReplaceSearchTerms(
124 *default_t_url_, term1_, 0, string16())); 129 *default_t_url_, term1_, 0, string16()));
125 history->AddPageWithDetails(term1_url_, string16(), 1, 1, 130 history->AddPageWithDetails(term1_url_, string16(), 1, 1,
126 base::Time::Now(), false, 131 base::Time::Now(), false,
127 history::SOURCE_BROWSED); 132 history::SOURCE_BROWSED);
128 history->SetKeywordSearchTermsForURL(term1_url_, default_t_url_->id(), 133 history->SetKeywordSearchTermsForURL(term1_url_, default_t_url_->id(),
129 term1_); 134 term1_);
130 135
131 // Create another TemplateURL. 136 // Create another TemplateURL.
132 keyword_t_url_ = new TemplateURL(); 137 keyword_t_url_ = new TemplateURL();
133 keyword_t_url_->set_keyword(ASCIIToUTF16("k")); 138 keyword_t_url_->set_keyword(ASCIIToUTF16("k"));
139 keyword_t_url_->set_short_name(ASCIIToUTF16("k"));
134 keyword_t_url_->SetURL("http://keyword/{searchTerms}", 0, 0); 140 keyword_t_url_->SetURL("http://keyword/{searchTerms}", 0, 0);
135 keyword_t_url_->SetSuggestionsURL("http://suggest_keyword/{searchTerms}", 0, 141 keyword_t_url_->SetSuggestionsURL("http://suggest_keyword/{searchTerms}", 0,
136 0); 142 0);
137 turl_model->Add(keyword_t_url_); 143 turl_model->Add(keyword_t_url_);
138 ASSERT_NE(0, keyword_t_url_->id()); 144 ASSERT_NE(0, keyword_t_url_->id());
139 145
140 // Add a page and search term for keyword_t_url_. 146 // Add a page and search term for keyword_t_url_.
141 keyword_url_ = GURL(keyword_t_url_->url()->ReplaceSearchTerms( 147 keyword_url_ = GURL(keyword_t_url_->url()->ReplaceSearchTerms(
142 *keyword_t_url_, keyword_term_, 0, string16())); 148 *keyword_t_url_, keyword_term_, 0, string16()));
143 history->AddPageWithDetails(keyword_url_, string16(), 1, 1, 149 history->AddPageWithDetails(keyword_url_, string16(), 1, 1,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 std::string()); 248 std::string());
243 fetcher = NULL; 249 fetcher = NULL;
244 250
245 // Run till the history results complete. 251 // Run till the history results complete.
246 RunTillProviderDone(); 252 RunTillProviderDone();
247 253
248 // The SearchProvider is done. Make sure it has a result for the history 254 // The SearchProvider is done. Make sure it has a result for the history
249 // term term1. 255 // term term1.
250 AutocompleteMatch term1_match = FindMatchWithDestination(term1_url_); 256 AutocompleteMatch term1_match = FindMatchWithDestination(term1_url_);
251 EXPECT_TRUE(!term1_match.destination_url.is_empty()); 257 EXPECT_TRUE(!term1_match.destination_url.is_empty());
252 // Term1 should have a description. 258 // Term1 should not have a description, it's set later.
253 EXPECT_FALSE(term1_match.description.empty()); 259 EXPECT_TRUE(term1_match.description.empty());
254 260
255 GURL what_you_typed_url = GURL(default_t_url_->url()->ReplaceSearchTerms( 261 GURL what_you_typed_url = GURL(default_t_url_->url()->ReplaceSearchTerms(
256 *default_t_url_, term, 0, string16())); 262 *default_t_url_, term, 0, string16()));
257 AutocompleteMatch what_you_typed_match = 263 AutocompleteMatch what_you_typed_match =
258 FindMatchWithDestination(what_you_typed_url); 264 FindMatchWithDestination(what_you_typed_url);
259 EXPECT_TRUE(!what_you_typed_match.destination_url.is_empty()); 265 EXPECT_TRUE(!what_you_typed_match.destination_url.is_empty());
260 EXPECT_TRUE(what_you_typed_match.description.empty()); 266 EXPECT_TRUE(what_you_typed_match.description.empty());
261 267
262 // The match for term1 should be more relevant than the what you typed result. 268 // The match for term1 should be more relevant than the what you typed result.
263 EXPECT_GT(term1_match.relevance, what_you_typed_match.relevance); 269 EXPECT_GT(term1_match.relevance, what_you_typed_match.relevance);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 EXPECT_TRUE(provider_->done()); 377 EXPECT_TRUE(provider_->done());
372 378
373 // There should be two matches, one for what you typed, the other for 379 // There should be two matches, one for what you typed, the other for
374 // 'foobar'. 380 // 'foobar'.
375 EXPECT_EQ(2u, provider_->matches().size()); 381 EXPECT_EQ(2u, provider_->matches().size());
376 GURL instant_url = GURL(default_t_url_->url()->ReplaceSearchTerms( 382 GURL instant_url = GURL(default_t_url_->url()->ReplaceSearchTerms(
377 *default_t_url_, ASCIIToUTF16("foobar"), 0, string16())); 383 *default_t_url_, ASCIIToUTF16("foobar"), 0, string16()));
378 AutocompleteMatch instant_match = FindMatchWithDestination(instant_url); 384 AutocompleteMatch instant_match = FindMatchWithDestination(instant_url);
379 EXPECT_TRUE(!instant_match.destination_url.is_empty()); 385 EXPECT_TRUE(!instant_match.destination_url.is_empty());
380 386
381 // And the 'foobar' match should have a description. 387 // And the 'foobar' match should not have a description, it'll be set later.
382 EXPECT_FALSE(instant_match.description.empty()); 388 EXPECT_TRUE(instant_match.description.empty());
383 389
384 // Make sure the what you typed match has no description. 390 // Make sure the what you typed match has no description.
385 GURL what_you_typed_url = GURL(default_t_url_->url()->ReplaceSearchTerms( 391 GURL what_you_typed_url = GURL(default_t_url_->url()->ReplaceSearchTerms(
386 *default_t_url_, ASCIIToUTF16("foo"), 0, string16())); 392 *default_t_url_, ASCIIToUTF16("foo"), 0, string16()));
387 AutocompleteMatch what_you_typed_match = 393 AutocompleteMatch what_you_typed_match =
388 FindMatchWithDestination(what_you_typed_url); 394 FindMatchWithDestination(what_you_typed_url);
389 EXPECT_TRUE(!what_you_typed_match.destination_url.is_empty()); 395 EXPECT_TRUE(!what_you_typed_match.destination_url.is_empty());
390 EXPECT_TRUE(what_you_typed_match.description.empty()); 396 EXPECT_TRUE(what_you_typed_match.description.empty());
391 397
392 // The instant search should be more relevant. 398 // The instant search should be more relevant.
(...skipping 25 matching lines...) Expand all
418 424
419 // Provider should be done. 425 // Provider should be done.
420 EXPECT_TRUE(provider_->done()); 426 EXPECT_TRUE(provider_->done());
421 427
422 // There should be two matches, one for what you typed, the other for 428 // There should be two matches, one for what you typed, the other for
423 // 'foobar'. 429 // 'foobar'.
424 EXPECT_EQ(2u, provider_->matches().size()); 430 EXPECT_EQ(2u, provider_->matches().size());
425 instant_match = FindMatchWithDestination(instant_url); 431 instant_match = FindMatchWithDestination(instant_url);
426 EXPECT_FALSE(instant_match.destination_url.is_empty()); 432 EXPECT_FALSE(instant_match.destination_url.is_empty());
427 433
428 // And the 'foobar' match should have a description. 434 // And the 'foobar' match should not have a description, it'll be set later.
429 EXPECT_FALSE(instant_match.description.empty()); 435 EXPECT_TRUE(instant_match.description.empty());
430 } 436 }
431 437
432 // Make sure that if trailing whitespace is added to the text supplied to 438 // Make sure that if trailing whitespace is added to the text supplied to
433 // AutocompleteInput the default suggest text is cleared. 439 // AutocompleteInput the default suggest text is cleared.
434 TEST_F(SearchProviderTest, DifferingText) { 440 TEST_F(SearchProviderTest, DifferingText) {
435 PrefService* service = profile_.GetPrefs(); 441 PrefService* service = profile_.GetPrefs();
436 service->SetBoolean(prefs::kInstantEnabled, true); 442 service->SetBoolean(prefs::kInstantEnabled, true);
437 443
438 QueryForInput(ASCIIToUTF16("foo"), false, false); 444 QueryForInput(ASCIIToUTF16("foo"), false, false);
439 445
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 GURL what_you_typed_url = GURL(default_t_url_->url()->ReplaceSearchTerms( 532 GURL what_you_typed_url = GURL(default_t_url_->url()->ReplaceSearchTerms(
527 *default_t_url_, ASCIIToUTF16("two "), 0, string16())); 533 *default_t_url_, ASCIIToUTF16("two "), 0, string16()));
528 AutocompleteMatch what_you_typed_match = 534 AutocompleteMatch what_you_typed_match =
529 FindMatchWithDestination(what_you_typed_url); 535 FindMatchWithDestination(what_you_typed_url);
530 EXPECT_FALSE(what_you_typed_match.destination_url.is_empty()); 536 EXPECT_FALSE(what_you_typed_match.destination_url.is_empty());
531 // term_match should be autocompleted. 537 // term_match should be autocompleted.
532 EXPECT_GT(term_match.relevance, what_you_typed_match.relevance); 538 EXPECT_GT(term_match.relevance, what_you_typed_match.relevance);
533 // And the offset should be at 4. 539 // And the offset should be at 4.
534 EXPECT_EQ(4u, term_match.inline_autocomplete_offset); 540 EXPECT_EQ(4u, term_match.inline_autocomplete_offset);
535 } 541 }
542
543 // Verifies the SearchProvider sets descriptions for results correctly.
544 TEST_F(SearchProviderTest, PostProcessResults) {
545 // Add an entry that corresponds to a keyword search with 'term2'.
546 string16 term(ASCIIToUTF16("term2"));
547 HistoryService* history =
548 profile_.GetHistoryService(Profile::EXPLICIT_ACCESS);
549 GURL term_url(keyword_t_url_->url()->ReplaceSearchTerms(
550 *keyword_t_url_, term, 0, string16()));
551 history->AddPageWithDetails(term_url, string16(), 1, 1,
552 base::Time::Now(), false,
553 history::SOURCE_BROWSED);
554 history->SetKeywordSearchTermsForURL(term_url, keyword_t_url_->id(), term);
555
556 profile_.BlockUntilHistoryProcessesPendingRequests();
557
558 ACProviders providers;
559 SearchProvider* provider = provider_.release();
560 providers.push_back(provider);
561 AutocompleteController controller(providers);
562 provider->set_listener(&controller);
563 controller.Start(ASCIIToUTF16("k t"), string16(), false, false, true,
564 AutocompleteInput::ALL_MATCHES);
565 const AutocompleteResult& result = controller.result();
566
567 // There should be two matches, one for the keyword one for what you typed.
568 ASSERT_EQ(2u, result.size());
569
570 EXPECT_TRUE(result.match_at(0).template_url != NULL);
571 EXPECT_TRUE(result.match_at(1).template_url != NULL);
572 EXPECT_NE(result.match_at(0).template_url,
573 result.match_at(1).template_url);
574
575 EXPECT_FALSE(result.match_at(0).description.empty());
576 EXPECT_FALSE(result.match_at(1).description.empty());
577 EXPECT_NE(result.match_at(0).description,
578 result.match_at(1).description);
579 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/search_provider.cc ('k') | chrome/browser/instant/instant_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698