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 7cc12e8a8f8a6fbbb230e2ab3e473b43b1247039..d45fcea5909db9edba05edbd009c62e33b1f3159 100644 |
--- a/chrome/browser/autocomplete/zero_suggest_provider.cc |
+++ b/chrome/browser/autocomplete/zero_suggest_provider.cc |
@@ -8,7 +8,6 @@ |
#include "base/i18n/case_conversion.h" |
#include "base/json/json_string_value_serializer.h" |
#include "base/metrics/histogram.h" |
-#include "base/metrics/user_metrics.h" |
#include "base/prefs/pref_service.h" |
#include "base/strings/string16.h" |
#include "base/strings/string_util.h" |
@@ -57,6 +56,12 @@ enum ZeroSuggestRequestsHistogramValue { |
ZERO_SUGGEST_MAX_REQUEST_HISTOGRAM_VALUE |
}; |
+// User metrics action strings. |
+const char kUserMetricsActionDeletionSuccess[] = |
+ "Omnibox.ZeroSuggestDelete.Success"; |
+const char kUserMetricsActionDeletionFailure[] = |
+ "Omnibox.ZeroSuggestDelete.Failure"; |
+ |
void LogOmniboxZeroSuggestRequest( |
ZeroSuggestRequestsHistogramValue request_value) { |
UMA_HISTOGRAM_ENUMERATION("Omnibox.ZeroSuggestRequests", request_value, |
@@ -139,6 +144,23 @@ void ZeroSuggestProvider::Start(const AutocompleteInput& input, |
Run(suggest_url); |
} |
+void ZeroSuggestProvider::Stop(bool clear_cached_results) { |
+ if (fetcher_) |
+ LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_INVALIDATED); |
+ fetcher_.reset(); |
+ done_ = true; |
+ |
+ if (clear_cached_results) { |
+ // We do not call Clear() on |results_| to retain |verbatim_relevance| |
+ // value in the |results_| object. |verbatim_relevance| is used at the |
+ // beginning of the next StartZeroSuggest() call to determine the current |
+ // url match relevance. |
+ results_.suggest_results.clear(); |
+ results_.navigation_results.clear(); |
+ current_query_.clear(); |
+ } |
+} |
+ |
void ZeroSuggestProvider::DeleteMatch(const AutocompleteMatch& match) { |
if (OmniboxFieldTrial::InZeroSuggestPersonalizedFieldTrial()) { |
// Remove the deleted match from the cache, so it is not shown to the user |
@@ -149,6 +171,12 @@ void ZeroSuggestProvider::DeleteMatch(const AutocompleteMatch& match) { |
BaseSearchProvider::DeleteMatch(match); |
} |
+void ZeroSuggestProvider::AddProviderInfo(ProvidersInfo* provider_info) const { |
+ BaseSearchProvider::AddProviderInfo(provider_info); |
+ if (!results_.suggest_results.empty() || !results_.navigation_results.empty()) |
+ provider_info->back().set_times_returned_results_in_session(1); |
+} |
+ |
void ZeroSuggestProvider::ResetSession() { |
// The user has started editing in the omnibox, so leave |
// |field_trial_triggered_in_session_| unchanged and set |
@@ -156,18 +184,15 @@ void ZeroSuggestProvider::ResetSession() { |
field_trial_triggered_ = false; |
} |
-void ZeroSuggestProvider::ModifyProviderInfo( |
- metrics::OmniboxEventProto_ProviderInfo* provider_info) const { |
- if (!results_.suggest_results.empty() || !results_.navigation_results.empty()) |
- provider_info->set_times_returned_results_in_session(1); |
-} |
- |
ZeroSuggestProvider::ZeroSuggestProvider( |
AutocompleteProviderListener* listener, |
TemplateURLService* template_url_service, |
Profile* profile) |
- : BaseSearchProvider(template_url_service, profile, |
- AutocompleteProvider::TYPE_ZERO_SUGGEST), |
+ : BaseSearchProvider( |
+ template_url_service, profile, |
+ base::UserMetricsAction(kUserMetricsActionDeletionSuccess), |
+ base::UserMetricsAction(kUserMetricsActionDeletionFailure), |
+ AutocompleteProvider::TYPE_ZERO_SUGGEST), |
listener_(listener), |
results_from_cache_(false), |
weak_ptr_factory_(this) { |
@@ -176,51 +201,6 @@ ZeroSuggestProvider::ZeroSuggestProvider( |
ZeroSuggestProvider::~ZeroSuggestProvider() { |
} |
-const TemplateURL* ZeroSuggestProvider::GetTemplateURL(bool is_keyword) const { |
- // Zero suggest provider should not receive keyword results. |
- DCHECK(!is_keyword); |
- return template_url_service_->GetDefaultSearchProvider(); |
-} |
- |
-const AutocompleteInput ZeroSuggestProvider::GetInput(bool is_keyword) const { |
- return AutocompleteInput( |
- base::string16(), base::string16::npos, base::string16(), |
- GURL(current_query_), current_page_classification_, true, false, false, |
- true, ChromeAutocompleteSchemeClassifier(profile_)); |
-} |
- |
-bool ZeroSuggestProvider::ShouldAppendExtraParams( |
- const SearchSuggestionParser::SuggestResult& result) const { |
- // We always use the default provider for search, so append the params. |
- return true; |
-} |
- |
-void ZeroSuggestProvider::StopSuggest() { |
- if (fetcher_) |
- LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_INVALIDATED); |
- fetcher_.reset(); |
-} |
- |
-void ZeroSuggestProvider::ClearAllResults() { |
- // We do not call Clear() on |results_| to retain |verbatim_relevance| |
- // value in the |results_| object. |verbatim_relevance| is used at the |
- // beginning of the next StartZeroSuggest() call to determine the current url |
- // match relevance. |
- results_.suggest_results.clear(); |
- results_.navigation_results.clear(); |
- current_query_.clear(); |
-} |
- |
-void ZeroSuggestProvider::RecordDeletionResult(bool success) { |
- if (success) { |
- base::RecordAction( |
- base::UserMetricsAction("Omnibox.ZeroSuggestDelete.Success")); |
- } else { |
- base::RecordAction( |
- base::UserMetricsAction("Omnibox.ZeroSuggestDelete.Failure")); |
- } |
-} |
- |
void ZeroSuggestProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
DCHECK(!done_); |
DCHECK_EQ(fetcher_.get(), source); |
@@ -236,7 +216,7 @@ void ZeroSuggestProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
if (StoreSuggestionResponse(json_data, *data)) |
return; |
results_updated = ParseSuggestResults( |
- *data, kDefaultZeroSuggestRelevance, false, &results_); |
+ *data, GetInput(), kDefaultZeroSuggestRelevance, false, &results_); |
} |
} |
fetcher_.reset(); |
@@ -245,6 +225,13 @@ void ZeroSuggestProvider::OnURLFetchComplete(const net::URLFetcher* source) { |
listener_->OnProviderUpdate(results_updated); |
} |
+AutocompleteInput ZeroSuggestProvider::GetInput() const { |
+ return AutocompleteInput( |
+ base::string16(), base::string16::npos, base::string16(), |
+ GURL(current_query_), current_page_classification_, true, false, false, |
+ true, ChromeAutocompleteSchemeClassifier(profile_)); |
+} |
+ |
bool ZeroSuggestProvider::StoreSuggestionResponse( |
const std::string& json_data, |
const base::Value& parsed_data) { |
@@ -272,8 +259,11 @@ bool ZeroSuggestProvider::StoreSuggestionResponse( |
void ZeroSuggestProvider::AddSuggestResultsToMap( |
const SearchSuggestionParser::SuggestResults& results, |
MatchMap* map) { |
- for (size_t i = 0; i < results.size(); ++i) |
- AddMatchToMap(results[i], std::string(), i, false, map); |
+ for (size_t i = 0; i < results.size(); ++i) { |
+ AddMatchToMap(GetInput(), results[i], |
+ template_url_service_->GetDefaultSearchProvider(), |
+ std::string(), i, true, false, map); |
+ } |
} |
AutocompleteMatch ZeroSuggestProvider::NavigationToMatch( |
@@ -455,8 +445,9 @@ void ZeroSuggestProvider::MaybeUseCachedSuggestions() { |
if (!json_data.empty()) { |
scoped_ptr<base::Value> data( |
SearchSuggestionParser::DeserializeJsonData(json_data)); |
- if (data && ParseSuggestResults( |
- *data, kDefaultZeroSuggestRelevance, false, &results_)) { |
+ if (data && |
+ ParseSuggestResults(*data, GetInput(), kDefaultZeroSuggestRelevance, |
+ false, &results_)) { |
ConvertResultsToAutocompleteMatches(); |
results_from_cache_ = !matches_.empty(); |
} |