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

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

Issue 17022004: Replace --google-base-suggest-url and --instant-url with --google-base-url. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 suggest_results_pending_(0), 252 suggest_results_pending_(0),
253 instant_finalized_(false), 253 instant_finalized_(false),
254 field_trial_triggered_(false), 254 field_trial_triggered_(false),
255 field_trial_triggered_in_session_(false), 255 field_trial_triggered_in_session_(false),
256 suppress_search_suggestions_(false), 256 suppress_search_suggestions_(false),
257 omnibox_start_margin_(-1) { 257 omnibox_start_margin_(-1) {
258 } 258 }
259 259
260 // static 260 // static
261 AutocompleteMatch SearchProvider::CreateSearchSuggestion( 261 AutocompleteMatch SearchProvider::CreateSearchSuggestion(
262 Profile* profile,
263 AutocompleteProvider* autocomplete_provider, 262 AutocompleteProvider* autocomplete_provider,
264 const AutocompleteInput& input, 263 int relevance,
264 AutocompleteMatch::Type type,
265 const TemplateURL* template_url,
265 const string16& query_string, 266 const string16& query_string,
266 const string16& input_text, 267 const string16& input_text,
267 int relevance, 268 const AutocompleteInput& input,
268 AutocompleteMatch::Type type, 269 bool is_keyword,
269 int accepted_suggestion, 270 int accepted_suggestion,
270 bool is_keyword, 271 int omnibox_start_margin,
271 const string16& keyword, 272 bool append_extra_query_params) {
272 int omnibox_start_margin) {
273 AutocompleteMatch match(autocomplete_provider, relevance, false, type); 273 AutocompleteMatch match(autocomplete_provider, relevance, false, type);
274 274
275 // Bail out now if we don't actually have a valid provider. 275 if (!template_url)
276 match.keyword = keyword;
277 const TemplateURL* provider_url = match.GetTemplateURL(profile, false);
278 if (provider_url == NULL)
279 return match; 276 return match;
277 match.keyword = template_url->keyword();
280 278
281 match.contents.assign(query_string); 279 match.contents.assign(query_string);
282 // We do intra-string highlighting for suggestions - the suggested segment 280 // We do intra-string highlighting for suggestions - the suggested segment
283 // will be highlighted, e.g. for input_text = "you" the suggestion may be 281 // will be highlighted, e.g. for input_text = "you" the suggestion may be
284 // "youtube", so we'll bold the "tube" section: you*tube*. 282 // "youtube", so we'll bold the "tube" section: you*tube*.
285 if (input_text != query_string) { 283 if (input_text != query_string) {
286 size_t input_position = match.contents.find(input_text); 284 size_t input_position = match.contents.find(input_text);
287 if (input_position == string16::npos) { 285 if (input_position == string16::npos) {
288 // The input text is not a substring of the query string, e.g. input 286 // The input text is not a substring of the query string, e.g. input
289 // text is "slasdot" and the query string is "slashdot", so we bold the 287 // text is "slasdot" and the query string is "slashdot", so we bold the
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 match.fill_into_edit.assign(ASCIIToUTF16("?")); 323 match.fill_into_edit.assign(ASCIIToUTF16("?"));
326 if (is_keyword) 324 if (is_keyword)
327 match.fill_into_edit.append(match.keyword + char16(' ')); 325 match.fill_into_edit.append(match.keyword + char16(' '));
328 if (!input.prevent_inline_autocomplete() && 326 if (!input.prevent_inline_autocomplete() &&
329 StartsWith(query_string, input_text, false)) { 327 StartsWith(query_string, input_text, false)) {
330 match.inline_autocomplete_offset = 328 match.inline_autocomplete_offset =
331 match.fill_into_edit.length() + input_text.length(); 329 match.fill_into_edit.length() + input_text.length();
332 } 330 }
333 match.fill_into_edit.append(query_string); 331 match.fill_into_edit.append(query_string);
334 332
335 const TemplateURLRef& search_url = provider_url->url_ref(); 333 const TemplateURLRef& search_url = template_url->url_ref();
336 DCHECK(search_url.SupportsReplacement()); 334 DCHECK(search_url.SupportsReplacement());
337 match.search_terms_args.reset( 335 match.search_terms_args.reset(
338 new TemplateURLRef::SearchTermsArgs(query_string)); 336 new TemplateURLRef::SearchTermsArgs(query_string));
339 match.search_terms_args->original_query = input_text; 337 match.search_terms_args->original_query = input_text;
340 match.search_terms_args->accepted_suggestion = accepted_suggestion; 338 match.search_terms_args->accepted_suggestion = accepted_suggestion;
341 match.search_terms_args->omnibox_start_margin = omnibox_start_margin; 339 match.search_terms_args->omnibox_start_margin = omnibox_start_margin;
340 match.search_terms_args->append_extra_query_params =
341 append_extra_query_params;
342 // This is the destination URL sans assisted query stats. This must be set 342 // This is the destination URL sans assisted query stats. This must be set
343 // so the AutocompleteController can properly de-dupe; the controller will 343 // so the AutocompleteController can properly de-dupe; the controller will
344 // eventually overwrite it before it reaches the user. 344 // eventually overwrite it before it reaches the user.
345 match.destination_url = 345 match.destination_url =
346 GURL(search_url.ReplaceSearchTerms(*match.search_terms_args.get())); 346 GURL(search_url.ReplaceSearchTerms(*match.search_terms_args.get()));
347 347
348 // Search results don't look like URLs. 348 // Search results don't look like URLs.
349 match.transition = is_keyword ? 349 match.transition = is_keyword ?
350 content::PAGE_TRANSITION_KEYWORD : content::PAGE_TRANSITION_GENERATED; 350 content::PAGE_TRANSITION_KEYWORD : content::PAGE_TRANSITION_GENERATED;
351 351
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 } 1530 }
1531 1531
1532 void SearchProvider::AddMatchToMap(const string16& query_string, 1532 void SearchProvider::AddMatchToMap(const string16& query_string,
1533 const string16& input_text, 1533 const string16& input_text,
1534 int relevance, 1534 int relevance,
1535 bool relevance_from_server, 1535 bool relevance_from_server,
1536 AutocompleteMatch::Type type, 1536 AutocompleteMatch::Type type,
1537 int accepted_suggestion, 1537 int accepted_suggestion,
1538 bool is_keyword, 1538 bool is_keyword,
1539 MatchMap* map) { 1539 MatchMap* map) {
1540 const string16& keyword = is_keyword ? 1540 const TemplateURL* template_url = is_keyword ?
1541 providers_.keyword_provider() : providers_.default_provider(); 1541 providers_.GetKeywordProviderURL() : providers_.GetDefaultProviderURL();
1542 AutocompleteMatch match = CreateSearchSuggestion(profile_, this, input_, 1542 AutocompleteMatch match = CreateSearchSuggestion(this, relevance, type,
1543 query_string, input_text, relevance, type, accepted_suggestion, 1543 template_url, query_string, input_text, input_, is_keyword,
1544 is_keyword, keyword, omnibox_start_margin_); 1544 accepted_suggestion, omnibox_start_margin_,
1545 !is_keyword || providers_.default_provider().empty());
1545 if (!match.destination_url.is_valid()) 1546 if (!match.destination_url.is_valid())
1546 return; 1547 return;
1547 match.RecordAdditionalInfo(kRelevanceFromServerKey, 1548 match.RecordAdditionalInfo(kRelevanceFromServerKey,
1548 relevance_from_server ? kTrue : kFalse); 1549 relevance_from_server ? kTrue : kFalse);
1549 1550
1550 // Try to add |match| to |map|. If a match for |query_string| is already in 1551 // Try to add |match| to |map|. If a match for |query_string| is already in
1551 // |map|, replace it if |match| is more relevant. 1552 // |map|, replace it if |match| is more relevant.
1552 // NOTE: Keep this ToLower() call in sync with url_database.cc. 1553 // NOTE: Keep this ToLower() call in sync with url_database.cc.
1553 const std::pair<MatchMap::iterator, bool> i( 1554 const std::pair<MatchMap::iterator, bool> i(
1554 map->insert(std::make_pair(base::i18n::ToLower(query_string), match))); 1555 map->insert(std::make_pair(base::i18n::ToLower(query_string), match)));
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1669 it->set_relevance_from_server(relevance_from_server); 1670 it->set_relevance_from_server(relevance_from_server);
1670 } 1671 }
1671 } 1672 }
1672 1673
1673 void SearchProvider::UpdateDone() { 1674 void SearchProvider::UpdateDone() {
1674 // We're done when the timer isn't running, there are no suggest queries 1675 // We're done when the timer isn't running, there are no suggest queries
1675 // pending, and we're not waiting on Instant. 1676 // pending, and we're not waiting on Instant.
1676 done_ = IsNonInstantSearchDone() && 1677 done_ = IsNonInstantSearchDone() &&
1677 (instant_finalized_ || !chrome::IsInstantEnabled(profile_)); 1678 (instant_finalized_ || !chrome::IsInstantEnabled(profile_));
1678 } 1679 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/search_provider.h ('k') | chrome/browser/autocomplete/search_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698