Chromium Code Reviews| 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 709fa4c745ac9ba9c3af21c072cd34a680876de8..b48cc0aad14e1ff718e126e045f8cd0b7dbe491a 100644 |
| --- a/chrome/browser/autocomplete/zero_suggest_provider.cc |
| +++ b/chrome/browser/autocomplete/zero_suggest_provider.cc |
| @@ -166,8 +166,9 @@ ZeroSuggestProvider::ZeroSuggestProvider( |
| AutocompleteProviderListener* listener, |
| TemplateURLService* template_url_service, |
| Profile* profile) |
| - : BaseSearchProvider(listener, template_url_service, profile, |
| + : BaseSearchProvider(template_url_service, profile, |
| AutocompleteProvider::TYPE_ZERO_SUGGEST), |
| + listener_(listener), |
| results_from_cache_(false), |
| weak_ptr_factory_(this) { |
| } |
| @@ -212,12 +213,6 @@ const AutocompleteInput ZeroSuggestProvider::GetInput(bool is_keyword) const { |
| true, ChromeAutocompleteSchemeClassifier(profile_)); |
| } |
| -SearchSuggestionParser::Results* ZeroSuggestProvider::GetResultsToFill( |
| - bool is_keyword) { |
| - DCHECK(!is_keyword); |
| - return &results_; |
| -} |
| - |
| bool ZeroSuggestProvider::ShouldAppendExtraParams( |
| const SearchSuggestionParser::SuggestResult& result) const { |
| // We always use the default provider for search, so append the params. |
| @@ -225,9 +220,8 @@ bool ZeroSuggestProvider::ShouldAppendExtraParams( |
| } |
| void ZeroSuggestProvider::StopSuggest() { |
| - if (suggest_results_pending_ > 0) |
| + if (fetcher_) |
| LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_INVALIDATED); |
| - suggest_results_pending_ = 0; |
| fetcher_.reset(); |
| } |
| @@ -241,10 +235,6 @@ void ZeroSuggestProvider::ClearAllResults() { |
| current_query_.clear(); |
| } |
| -int ZeroSuggestProvider::GetDefaultResultRelevance() const { |
| - return kDefaultZeroSuggestRelevance; |
| -} |
| - |
| void ZeroSuggestProvider::RecordDeletionResult(bool success) { |
| if (success) { |
| content::RecordAction( |
| @@ -255,22 +245,6 @@ void ZeroSuggestProvider::RecordDeletionResult(bool success) { |
| } |
| } |
| -void ZeroSuggestProvider::LogFetchComplete(bool success, bool is_keyword) { |
| - LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REPLY_RECEIVED); |
| -} |
| - |
| -bool ZeroSuggestProvider::IsKeywordFetcher( |
| - const net::URLFetcher* fetcher) const { |
| - // ZeroSuggestProvider does not have a keyword provider. |
| - DCHECK_EQ(fetcher, fetcher_.get()); |
| - return false; |
| -} |
| - |
| -void ZeroSuggestProvider::UpdateMatches() { |
| - done_ = true; |
| - ConvertResultsToAutocompleteMatches(); |
| -} |
| - |
| void ZeroSuggestProvider::AddSuggestResultsToMap( |
| const SearchSuggestionParser::SuggestResults& results, |
| MatchMap* map) { |
| @@ -306,7 +280,6 @@ AutocompleteMatch ZeroSuggestProvider::NavigationToMatch( |
| } |
| void ZeroSuggestProvider::Run(const GURL& suggest_url) { |
| - suggest_results_pending_ = 0; |
| const int kFetcherID = 1; |
| fetcher_.reset( |
| net::URLFetcher::Create(kFetcherID, |
| @@ -330,10 +303,33 @@ void ZeroSuggestProvider::Run(const GURL& suggest_url) { |
| weak_ptr_factory_.GetWeakPtr()), false); |
| } |
| } |
| - suggest_results_pending_ = 1; |
| LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_SENT); |
| } |
| +void ZeroSuggestProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
| + DCHECK(!done_); |
| + DCHECK_EQ(fetcher_.get(), source); |
| + |
| + LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REPLY_RECEIVED); |
| + |
| + bool results_updated = false; |
| + if (source->GetStatus().is_success() && source->GetResponseCode() == 200) { |
| + std::string json_data = SearchSuggestionParser::ExtractJsonData(source); |
|
Peter Kasting
2014/08/08 17:33:24
Nit: Would it make sense to have just these condit
hashimoto
2014/08/11 05:15:04
I guess it doesn't benefit us much because ZeroSug
|
| + scoped_ptr<base::Value> data( |
| + SearchSuggestionParser::DeserializeJsonData(json_data)); |
| + if (data) { |
| + if (StoreSuggestionResponse(json_data, *data)) |
| + return; |
| + results_updated = ParseSuggestResults( |
| + *data, kDefaultZeroSuggestRelevance, false, &results_); |
| + } |
| + } |
| + fetcher_.reset(); |
| + done_ = true; |
| + ConvertResultsToAutocompleteMatches(); |
| + listener_->OnProviderUpdate(results_updated); |
| +} |
| + |
| void ZeroSuggestProvider::OnMostVisitedUrlsAvailable( |
| const history::MostVisitedURLList& urls) { |
| most_visited_urls_ = urls; |
| @@ -459,7 +455,8 @@ void ZeroSuggestProvider::MaybeUseCachedSuggestions() { |
| if (!json_data.empty()) { |
| scoped_ptr<base::Value> data( |
| SearchSuggestionParser::DeserializeJsonData(json_data)); |
| - if (data && ParseSuggestResults(*data.get(), false, &results_)) { |
| + if (data && ParseSuggestResults( |
| + *data, kDefaultZeroSuggestRelevance, false, &results_)) { |
| ConvertResultsToAutocompleteMatches(); |
| results_from_cache_ = !matches_.empty(); |
| } |