| 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..1ae74ea80edaed2cb846d50578b8dbd8079427ac 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;
|
| }
|
|
|
| @@ -144,6 +147,7 @@ void ZeroSuggestProvider::Stop(bool clear_cached_results) {
|
| if (fetcher_)
|
| LogOmniboxZeroSuggestRequest(ZERO_SUGGEST_REQUEST_INVALIDATED);
|
| fetcher_.reset();
|
| + waiting_for_most_visited_urls_request_ = false;
|
| done_ = true;
|
|
|
| if (clear_cached_results) {
|
| @@ -191,6 +195,7 @@ ZeroSuggestProvider::ZeroSuggestProvider(
|
| listener_(listener),
|
| profile_(profile),
|
| results_from_cache_(false),
|
| + waiting_for_most_visited_urls_request_(false),
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| @@ -309,35 +314,42 @@ 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();
|
| if (ts) {
|
| + waiting_for_most_visited_urls_request_ = true;
|
| ts->GetMostVisitedURLs(
|
| 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) {
|
| + if (!waiting_for_most_visited_urls_request_) return;
|
| most_visited_urls_ = urls;
|
| + waiting_for_most_visited_urls_request_ = false;
|
| + done_ = true;
|
| + ConvertResultsToAutocompleteMatches();
|
| + listener_->OnProviderUpdate(true);
|
| }
|
|
|
| void ZeroSuggestProvider::ConvertResultsToAutocompleteMatches() {
|
| @@ -424,7 +436,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 +461,11 @@ bool ZeroSuggestProvider::CanShowZeroSuggestWithoutSendingURL(
|
| (current_page_url.scheme() != url::kHttpsScheme)))
|
| return false;
|
|
|
| + if (OmniboxFieldTrial::InZeroSuggestMostVisitedWithoutSerpFieldTrial() &&
|
| + template_url_service_->
|
| + IsSearchResultsPageFromDefaultSearchProvider(current_page_url))
|
| + return false;
|
| +
|
| return true;
|
| }
|
|
|
|
|