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 04b37a5a6092bfdf1c01e92a91d7a21963d3a863..1280d361c39c085fc9d86ae04b51737cdc142645 100644 |
| --- a/chrome/browser/autocomplete/search_provider.cc |
| +++ b/chrome/browser/autocomplete/search_provider.cc |
| @@ -15,7 +15,6 @@ |
| #include "base/json/json_string_value_serializer.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/metrics/histogram.h" |
| -#include "base/metrics/user_metrics.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/rand_util.h" |
| #include "base/strings/string_util.h" |
| @@ -72,6 +71,12 @@ enum SuggestRequestsHistogramValue { |
| // The verbatim score for an input which is not an URL. |
| const int kNonURLVerbatimRelevance = 1300; |
| +// User metrics action strings. |
| +const char kUserMetricsActionDeletionSuccess[] = |
| + "Omnibox.ServerSuggestDelete.Success"; |
| +const char kUserMetricsActionDeletionFailure[] = |
| + "Omnibox.ServerSuggestDelete.Failure"; |
| + |
| // Increments the appropriate value in the histogram by one. |
| void LogOmniboxSuggestRequest( |
| SuggestRequestsHistogramValue request_value) { |
| @@ -132,8 +137,11 @@ int SearchProvider::kMinimumTimeBetweenSuggestQueriesMs = 100; |
| SearchProvider::SearchProvider(AutocompleteProviderListener* listener, |
| TemplateURLService* template_url_service, |
| Profile* profile) |
| - : BaseSearchProvider(template_url_service, profile, |
| - AutocompleteProvider::TYPE_SEARCH), |
| + : BaseSearchProvider( |
| + template_url_service, profile, |
| + base::UserMetricsAction(kUserMetricsActionDeletionSuccess), |
| + base::UserMetricsAction(kUserMetricsActionDeletionFailure), |
| + AutocompleteProvider::TYPE_SEARCH), |
| listener_(listener), |
| suggest_results_pending_(0), |
| providers_(template_url_service) { |
| @@ -250,46 +258,12 @@ void SearchProvider::Start(const AutocompleteInput& input, |
| UpdateMatches(); |
| } |
| -const TemplateURL* SearchProvider::GetTemplateURL(bool is_keyword) const { |
| - return is_keyword ? providers_.GetKeywordProviderURL() |
| - : providers_.GetDefaultProviderURL(); |
| -} |
| - |
| -const AutocompleteInput SearchProvider::GetInput(bool is_keyword) const { |
| - return is_keyword ? keyword_input_ : input_; |
| -} |
| - |
| -bool SearchProvider::ShouldAppendExtraParams( |
| - const SearchSuggestionParser::SuggestResult& result) const { |
| - return !result.from_keyword_provider() || |
| - providers_.default_provider().empty(); |
| -} |
| - |
| -void SearchProvider::StopSuggest() { |
| - // Increment the appropriate field in the histogram by the number of |
| - // pending requests that were invalidated. |
| - for (int i = 0; i < suggest_results_pending_; ++i) |
| - LogOmniboxSuggestRequest(REQUEST_INVALIDATED); |
| - suggest_results_pending_ = 0; |
| - timer_.Stop(); |
| - // Stop any in-progress URL fetches. |
| - keyword_fetcher_.reset(); |
| - default_fetcher_.reset(); |
| -} |
| - |
| -void SearchProvider::ClearAllResults() { |
| - keyword_results_.Clear(); |
| - default_results_.Clear(); |
| -} |
| +void SearchProvider::Stop(bool clear_cached_results) { |
| + StopSuggest(); |
| + done_ = true; |
| -void SearchProvider::RecordDeletionResult(bool success) { |
| - if (success) { |
| - base::RecordAction( |
| - base::UserMetricsAction("Omnibox.ServerSuggestDelete.Success")); |
| - } else { |
| - base::RecordAction( |
| - base::UserMetricsAction("Omnibox.ServerSuggestDelete.Failure")); |
| - } |
| + if (clear_cached_results) |
| + ClearAllResults(); |
| } |
| void SearchProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
| @@ -314,7 +288,8 @@ void SearchProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
| if (data) { |
| SearchSuggestionParser::Results* results = |
| is_keyword ? &keyword_results_ : &default_results_; |
| - results_updated = ParseSuggestResults(*data, -1, is_keyword, results); |
| + results_updated = ParseSuggestResults( |
| + *data, GetInput(is_keyword), -1, is_keyword, results); |
| if (results_updated) |
| SortResults(is_keyword, results); |
| } |
| @@ -324,6 +299,38 @@ void SearchProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
| listener_->OnProviderUpdate(results_updated); |
| } |
| +const TemplateURL* SearchProvider::GetTemplateURL(bool is_keyword) const { |
| + return is_keyword ? providers_.GetKeywordProviderURL() |
|
Peter Kasting
2014/08/12 18:31:18
Nit: clang-format error, please break after ? and
hashimoto
2014/08/13 05:21:22
Done.
|
| + : providers_.GetDefaultProviderURL(); |
| +} |
| + |
| +const AutocompleteInput& SearchProvider::GetInput(bool is_keyword) const { |
| + return is_keyword ? keyword_input_ : input_; |
| +} |
| + |
| +bool SearchProvider::ShouldAppendExtraParams( |
| + const SearchSuggestionParser::SuggestResult& result) const { |
| + return !result.from_keyword_provider() || |
| + providers_.default_provider().empty(); |
| +} |
| + |
| +void SearchProvider::StopSuggest() { |
| + // Increment the appropriate field in the histogram by the number of |
| + // pending requests that were invalidated. |
| + for (int i = 0; i < suggest_results_pending_; ++i) |
| + LogOmniboxSuggestRequest(REQUEST_INVALIDATED); |
| + suggest_results_pending_ = 0; |
| + timer_.Stop(); |
| + // Stop any in-progress URL fetches. |
| + keyword_fetcher_.reset(); |
| + default_fetcher_.reset(); |
| +} |
| + |
| +void SearchProvider::ClearAllResults() { |
| + keyword_results_.Clear(); |
| + default_results_.Clear(); |
| +} |
| + |
| void SearchProvider::UpdateMatchContentsClass( |
| const base::string16& input_text, |
| SearchSuggestionParser::Results* results) { |
| @@ -739,8 +746,9 @@ void SearchProvider::ConvertResultsToAutocompleteMatches() { |
| base::string16(), std::string(), std::string(), false, |
| verbatim_relevance, relevance_from_server, false, |
| trimmed_verbatim); |
| - AddMatchToMap(verbatim, std::string(), did_not_accept_default_suggestion, |
| - false, &map); |
| + AddMatchToMap(GetInput(false), verbatim, GetTemplateURL(false), |
| + std::string(), did_not_accept_default_suggestion, |
| + ShouldAppendExtraParams(verbatim), false, &map); |
| } |
| if (!keyword_input_.text().empty()) { |
| const TemplateURL* keyword_url = providers_.GetKeywordProviderURL(); |
| @@ -764,8 +772,9 @@ void SearchProvider::ConvertResultsToAutocompleteMatches() { |
| base::string16(), base::string16(), std::string(), std::string(), |
| true, keyword_verbatim_relevance, keyword_relevance_from_server, |
| false, trimmed_verbatim); |
| - AddMatchToMap(verbatim, std::string(), |
| - did_not_accept_keyword_suggestion, false, &map); |
| + AddMatchToMap(GetInput(true), verbatim, keyword_url, |
| + std::string(), did_not_accept_keyword_suggestion, |
| + ShouldAppendExtraParams(verbatim), false, &map); |
| } |
| } |
| } |
| @@ -907,7 +916,9 @@ void SearchProvider::AddHistoryResultsToMap(const HistoryResults& results, |
| is_keyword); |
| for (SearchSuggestionParser::SuggestResults::const_iterator i( |
| scored_results.begin()); i != scored_results.end(); ++i) { |
| - AddMatchToMap(*i, std::string(), did_not_accept_suggestion, true, map); |
| + AddMatchToMap(GetInput(is_keyword), *i, GetTemplateURL(is_keyword), |
| + std::string(), did_not_accept_suggestion, |
| + ShouldAppendExtraParams(*i), true, map); |
| } |
| UMA_HISTOGRAM_TIMES("Omnibox.SearchProvider.AddHistoryResultsTime", |
| base::TimeTicks::Now() - start_time); |
| @@ -1029,8 +1040,11 @@ void SearchProvider::AddSuggestResultsToMap( |
| const SearchSuggestionParser::SuggestResults& results, |
| const std::string& metadata, |
| MatchMap* map) { |
| - for (size_t i = 0; i < results.size(); ++i) |
| - AddMatchToMap(results[i], metadata, i, false, map); |
| + for (size_t i = 0; i < results.size(); ++i) { |
| + AddMatchToMap(GetInput(results[i].from_keyword_provider()), results[i], |
| + GetTemplateURL(results[i].from_keyword_provider()), metadata, |
| + i, ShouldAppendExtraParams(results[i]), false, map); |
| + } |
| } |
| int SearchProvider::GetVerbatimRelevance(bool* relevance_from_server) const { |