Index: chrome/browser/autocomplete/zero_suggest_provider.cc |
diff --git a/chrome/browser/autocomplete/zero_suggest_provider.cc b/chrome/browser/autocomplete/zero_suggest_provider.cc |
index b6e072277b9d585d346e922937760a0437d16d6e..8f91feb4dd6f84570dfd3e3978b9afb7a2e922a8 100644 |
--- a/chrome/browser/autocomplete/zero_suggest_provider.cc |
+++ b/chrome/browser/autocomplete/zero_suggest_provider.cc |
@@ -175,6 +175,27 @@ ZeroSuggestProvider::ZeroSuggestProvider( |
ZeroSuggestProvider::~ZeroSuggestProvider() { |
} |
+const TemplateURL* ZeroSuggestProvider::GetTemplateURL( |
+ const SuggestResult& result) const { |
+ // Zero suggest provider should not receive keyword results. |
+ DCHECK(!result.from_keyword_provider()); |
+ return template_url_service_->GetDefaultSearchProvider(); |
+} |
+ |
+const AutocompleteInput ZeroSuggestProvider::GetInput( |
+ const SuggestResult& result) const { |
+ AutocompleteInput input; |
+ // Set |input|'s text to be |query_string| to avoid bolding. |
+ input.UpdateText(result.suggestion(), base::string16::npos, input.parts()); |
+ return input; |
+} |
+ |
+bool ZeroSuggestProvider::ShouldAppendExtraParams( |
+ const SuggestResult& result) const { |
+ // We always use the default provider for search, so append the params. |
+ return true; |
+} |
+ |
void ZeroSuggestProvider::FillResults(const base::Value& root_val, |
int* verbatim_relevance, |
SuggestResults* suggest_results, |
@@ -260,50 +281,19 @@ void ZeroSuggestProvider::FillResults(const base::Value& root_val, |
void ZeroSuggestProvider::AddSuggestResultsToMap( |
const SuggestResults& results, |
- const TemplateURL* template_url, |
MatchMap* map) { |
for (size_t i = 0; i < results.size(); ++i) { |
- AddMatchToMap(results[i].relevance(), AutocompleteMatchType::SEARCH_SUGGEST, |
- template_url, results[i].suggestion(), i, map); |
+ const base::string16& query_string(results[i].suggestion()); |
+ // TODO(mariakhomenko): Do not reconstruct SuggestResult objects with |
+ // a different query -- create correct objects to begin with. |
+ const SuggestResult suggestion( |
+ query_string, AutocompleteMatchType::SEARCH_SUGGEST, query_string, |
+ base::string16(), std::string(), std::string(), false, |
+ results[i].relevance(), true, false, query_string); |
+ AddMatchToMap(suggestion, std::string(), i, map); |
} |
} |
-void ZeroSuggestProvider::AddMatchToMap(int relevance, |
- AutocompleteMatch::Type type, |
- const TemplateURL* template_url, |
- const base::string16& query_string, |
- int accepted_suggestion, |
- MatchMap* map) { |
- // Pass in query_string as the input_text to avoid bolding. |
- SuggestResult suggestion( |
- query_string, type, query_string, base::string16(), std::string(), |
- std::string(), false, relevance, true, false, query_string); |
- // TODO(samarth|melevin): use the actual omnibox margin here as well instead |
- // of passing in -1. |
- AutocompleteMatch match = CreateSearchSuggestion(this, AutocompleteInput(), |
- query_string, suggestion, template_url, accepted_suggestion, -1, true); |
- if (!match.destination_url.is_valid()) |
- return; |
- |
- // Try to add |match| to |map|. If a match for |query_string| is already in |
- // |map|, replace it if |match| is more relevant. |
- // NOTE: Keep this ToLower() call in sync with url_database.cc. |
- MatchKey match_key( |
- std::make_pair(base::i18n::ToLower(query_string), std::string())); |
- const std::pair<MatchMap::iterator, bool> i(map->insert( |
- std::make_pair(match_key, match))); |
- // NOTE: We purposefully do a direct relevance comparison here instead of |
- // using AutocompleteMatch::MoreRelevant(), so that we'll prefer "items added |
- // first" rather than "items alphabetically first" when the scores are equal. |
- // The only case this matters is when a user has results with the same score |
- // that differ only by capitalization; because the history system returns |
- // results sorted by recency, this means we'll pick the most recent such |
- // result even if the precision of our relevance score is too low to |
- // distinguish the two. |
- if (!i.second && (match.relevance > i.first->second.relevance)) |
- i.first->second = match; |
-} |
- |
AutocompleteMatch ZeroSuggestProvider::NavigationToMatch( |
const NavigationResult& navigation) { |
AutocompleteMatch match(this, navigation.relevance(), false, |
@@ -367,9 +357,7 @@ void ZeroSuggestProvider::ParseSuggestResults(const base::Value& root_val) { |
&suggest_results, &navigation_results_); |
query_matches_map_.clear(); |
- AddSuggestResultsToMap(suggest_results, |
- template_url_service_->GetDefaultSearchProvider(), |
- &query_matches_map_); |
+ AddSuggestResultsToMap(suggest_results, &query_matches_map_); |
} |
void ZeroSuggestProvider::OnMostVisitedUrlsAvailable( |