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 44b5dc3ee6e6dec44d7154a36f4e301b00e64f67..d9bb56b35a719c7033fb7aae8888694c1a77eb6c 100644 |
| --- a/chrome/browser/autocomplete/zero_suggest_provider.cc |
| +++ b/chrome/browser/autocomplete/zero_suggest_provider.cc |
| @@ -21,6 +21,7 @@ |
| #include "chrome/browser/autocomplete/history_url_provider.h" |
| #include "chrome/browser/history/top_sites.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/search_engines/template_url_service_factory.h" |
| #include "chrome/common/pref_names.h" |
| #include "components/history/core/browser/history_types.h" |
| #include "components/metrics/proto/omnibox_input_type.pb.h" |
| @@ -116,19 +117,21 @@ void ZeroSuggestProvider::Start(const AutocompleteInput& input, |
| if (!suggest_url.is_valid()) |
| return; |
| - // No need to send the current page URL in personalized suggest field trial. |
| + // No need to send the current page URL in personalized suggest or |
| + // most visited field trials. |
| if (CanSendURL(input.current_url(), suggest_url, default_provider, |
| current_page_classification_, |
| template_url_service_->search_terms_data(), client_.get()) && |
| - !OmniboxFieldTrial::InZeroSuggestPersonalizedFieldTrial()) { |
| + !OmniboxFieldTrial::InZeroSuggestPersonalizedFieldTrial() && |
| + !OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()) { |
| // Update suggest_url to include the current_page_url. |
| search_term_args.current_page_url = current_query_; |
| suggest_url = GURL(default_provider->suggestions_url_ref(). |
| ReplaceSearchTerms( |
| search_term_args, |
| template_url_service_->search_terms_data())); |
| - } else if (!CanShowZeroSuggestWithoutSendingURL(suggest_url, |
| - input.current_url())) { |
| + } else if (!ShouldShowNonContextualZeroSuggest(suggest_url, |
| + input.current_url())) { |
| return; |
| } |
| @@ -309,20 +312,6 @@ AutocompleteMatch ZeroSuggestProvider::NavigationToMatch( |
| } |
| void ZeroSuggestProvider::Run(const GURL& suggest_url) { |
| - const int kFetcherID = 1; |
| - fetcher_.reset( |
| - net::URLFetcher::Create(kFetcherID, |
| - suggest_url, |
| - net::URLFetcher::GET, this)); |
| - fetcher_->SetRequestContext(profile_->GetRequestContext()); |
| - fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); |
| - // Add Chrome experiment state to the request headers. |
| - net::HttpRequestHeaders headers; |
| - variations::VariationsHttpHeaderProvider::GetInstance()->AppendHeaders( |
| - fetcher_->GetOriginalURL(), profile_->IsOffTheRecord(), false, &headers); |
| - fetcher_->SetExtraRequestHeaders(headers.ToString()); |
| - fetcher_->Start(); |
| - |
| if (OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()) { |
| most_visited_urls_.clear(); |
| history::TopSites* ts = profile_->GetTopSites(); |
| @@ -331,13 +320,31 @@ void ZeroSuggestProvider::Run(const GURL& suggest_url) { |
| base::Bind(&ZeroSuggestProvider::OnMostVisitedUrlsAvailable, |
| weak_ptr_factory_.GetWeakPtr()), false); |
| } |
| + } else { |
| + const int kFetcherID = 1; |
| + fetcher_.reset( |
| + net::URLFetcher::Create(kFetcherID, |
| + suggest_url, |
| + net::URLFetcher::GET, this)); |
| + fetcher_->SetRequestContext(profile_->GetRequestContext()); |
| + fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); |
| + // Add Chrome experiment state to the request headers. |
| + net::HttpRequestHeaders headers; |
| + variations::VariationsHttpHeaderProvider::GetInstance()->AppendHeaders( |
| + fetcher_->GetOriginalURL(), profile_->IsOffTheRecord(), false, |
| + &headers); |
| + fetcher_->SetExtraRequestHeaders(headers.ToString()); |
| + fetcher_->Start(); |
| + LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_SENT); |
| } |
| - LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_SENT); |
| } |
| void ZeroSuggestProvider::OnMostVisitedUrlsAvailable( |
| const history::MostVisitedURLList& urls) { |
| most_visited_urls_ = urls; |
| + done_ = true; |
| + ConvertResultsToAutocompleteMatches(); |
| + listener_->OnProviderUpdate(true); |
| } |
| void ZeroSuggestProvider::ConvertResultsToAutocompleteMatches() { |
| @@ -424,7 +431,7 @@ int ZeroSuggestProvider::GetVerbatimRelevance() const { |
| results_.verbatim_relevance : kDefaultVerbatimZeroSuggestRelevance; |
| } |
| -bool ZeroSuggestProvider::CanShowZeroSuggestWithoutSendingURL( |
| +bool ZeroSuggestProvider::ShouldShowNonContextualZeroSuggest( |
| const GURL& suggest_url, |
| const GURL& current_page_url) const { |
| if (!ZeroSuggestEnabled(suggest_url, |
| @@ -449,6 +456,11 @@ bool ZeroSuggestProvider::CanShowZeroSuggestWithoutSendingURL( |
| (current_page_url.scheme() != url::kHttpsScheme))) |
| return false; |
| + if (OmniboxFieldTrial::InZeroSuggestMostVisitedWithoutSerpFieldTrial() && |
| + TemplateURLServiceFactory::GetForProfile(profile_)-> |
| + IsSearchResultsPageFromDefaultSearchProvider(current_page_url)) |
|
Mark P
2014/10/21 19:08:06
Generally I understand this works (at least on And
Maria
2014/10/21 23:57:39
Actually, I thought this is exactly what we discus
Mark P
2014/10/22 19:11:23
Okay, good to know. Is there a bug I can follow a
Maria
2014/10/23 20:34:26
Tracked in https://code.google.com/p/chromium/issu
|
| + return false; |
| + |
| return true; |
| } |