Chromium Code Reviews| Index: chrome/browser/autocomplete/search_provider.cc |
| diff --git a/chrome/browser/autocomplete/search_provider.cc b/chrome/browser/autocomplete/search_provider.cc |
| index 9d062749592927769a9bf8d3610ece1863f8325c..8bc59657078180771715290c28a3c91984f80f23 100644 |
| --- a/chrome/browser/autocomplete/search_provider.cc |
| +++ b/chrome/browser/autocomplete/search_provider.cc |
| @@ -132,8 +132,10 @@ int SearchProvider::kMinimumTimeBetweenSuggestQueriesMs = 100; |
| SearchProvider::SearchProvider(AutocompleteProviderListener* listener, |
| TemplateURLService* template_url_service, |
| Profile* profile) |
| - : BaseSearchProvider(listener, template_url_service, profile, |
| + : BaseSearchProvider(template_url_service, profile, |
| AutocompleteProvider::TYPE_SEARCH), |
| + listener_(listener), |
| + suggest_results_pending_(0), |
| providers_(template_url_service) { |
| } |
| @@ -301,11 +303,6 @@ const AutocompleteInput SearchProvider::GetInput(bool is_keyword) const { |
| return is_keyword ? keyword_input_ : input_; |
| } |
| -SearchSuggestionParser::Results* SearchProvider::GetResultsToFill( |
| - bool is_keyword) { |
| - return is_keyword ? &keyword_results_ : &default_results_; |
| -} |
| - |
| bool SearchProvider::ShouldAppendExtraParams( |
| const SearchSuggestionParser::SuggestResult& result) const { |
| return !result.from_keyword_provider() || |
| @@ -329,10 +326,6 @@ void SearchProvider::ClearAllResults() { |
| default_results_.Clear(); |
| } |
| -int SearchProvider::GetDefaultResultRelevance() const { |
| - return -1; |
| -} |
| - |
| void SearchProvider::RecordDeletionResult(bool success) { |
| if (success) { |
| content::RecordAction( |
| @@ -366,10 +359,6 @@ void SearchProvider::LogFetchComplete(bool success, bool is_keyword) { |
| } |
| } |
| -bool SearchProvider::IsKeywordFetcher(const net::URLFetcher* fetcher) const { |
| - return fetcher == keyword_fetcher_.get(); |
| -} |
| - |
| void SearchProvider::UpdateMatches() { |
| ConvertResultsToAutocompleteMatches(); |
| @@ -692,6 +681,38 @@ net::URLFetcher* SearchProvider::CreateSuggestFetcher( |
| return fetcher; |
| } |
| +void SearchProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
| + DCHECK(!done_); |
| + suggest_results_pending_--; |
|
Peter Kasting
2014/08/08 17:33:23
Nit: Predecrement
hashimoto
2014/08/11 05:15:04
Done.
|
| + DCHECK_GE(suggest_results_pending_, 0); // Should never go negative. |
| + |
| + const bool is_keyword = source == keyword_fetcher_.get(); |
| + |
| + // Ensure the request succeeded and that the provider used is still available. |
| + // A verbatim match cannot be generated without this provider, causing errors. |
| + const bool request_succeeded = |
| + source->GetStatus().is_success() && (source->GetResponseCode() == 200) && |
| + GetTemplateURL(is_keyword); |
| + |
| + LogFetchComplete(request_succeeded, is_keyword); |
| + |
| + bool results_updated = false; |
| + if (request_succeeded) { |
| + scoped_ptr<base::Value> data(SearchSuggestionParser::DeserializeJsonData( |
| + SearchSuggestionParser::ExtractJsonData(source))); |
| + if (data) { |
| + SearchSuggestionParser::Results* results = |
| + is_keyword ? &keyword_results_ : &default_results_; |
| + results_updated = ParseSuggestResults(*data, -1, is_keyword, results); |
| + if (results_updated) |
| + SortResults(is_keyword, results); |
| + } |
| + } |
| + UpdateMatches(); |
| + if (done_ || results_updated) |
| + listener_->OnProviderUpdate(results_updated); |
| +} |
| + |
| void SearchProvider::ConvertResultsToAutocompleteMatches() { |
| // Convert all the results to matches and add them to a map, so we can keep |
| // the most relevant match for each result. |