Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1380)

Unified Diff: chrome/browser/autocomplete/zero_suggest_provider.cc

Issue 23621037: Send URLs on non-zero prefix suggest requests also. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 66b8658553f4366a74babc6fd1b24399f3bac4a5..35f43af2abca93dd071b8d91e544c5b1a7f2d407 100644
--- a/chrome/browser/autocomplete/zero_suggest_provider.cc
+++ b/chrome/browser/autocomplete/zero_suggest_provider.cc
@@ -21,7 +21,6 @@
#include "chrome/browser/autocomplete/history_url_provider.h"
#include "chrome/browser/autocomplete/search_provider.h"
#include "chrome/browser/autocomplete/url_prefix.h"
-#include "chrome/browser/google/google_util.h"
#include "chrome/browser/history/history_types.h"
#include "chrome/browser/history/top_sites.h"
#include "chrome/browser/metrics/variations/variations_http_header_provider.h"
@@ -30,8 +29,6 @@
#include "chrome/browser/search/search.h"
#include "chrome/browser/search_engines/template_url_service.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/sync/profile_sync_service.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/common/net/url_fixer_upper.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
@@ -150,24 +147,36 @@ void ZeroSuggestProvider::OnURLFetchComplete(const net::URLFetcher* source) {
}
void ZeroSuggestProvider::StartZeroSuggest(
- const GURL& url,
+ const GURL& current_page_url,
AutocompleteInput::PageClassification page_classification,
const string16& permanent_text) {
Stop(true);
field_trial_triggered_ = false;
field_trial_triggered_in_session_ = false;
- if (!ShouldRunZeroSuggest(url, page_classification))
- return;
- verbatim_relevance_ = kDefaultVerbatimZeroSuggestRelevance;
- done_ = false;
permanent_text_ = permanent_text;
- current_query_ = url.spec();
+ current_query_ = current_page_url.spec();
current_page_classification_ = page_classification;
current_url_match_ = MatchForCurrentURL();
+
+ const TemplateURL* default_provider =
+ template_url_service_->GetDefaultSearchProvider();
+ string16 prefix;
+ TemplateURLRef::SearchTermsArgs search_term_args(prefix);
+ search_term_args.current_page_url = current_query_;
+ GURL suggest_url(default_provider->suggestions_url_ref().
+ ReplaceSearchTerms(search_term_args));
+ if (!SearchProvider::CanSendURL(
+ current_page_url, suggest_url,
+ template_url_service_->GetDefaultSearchProvider(),
+ page_classification, profile_) ||
+ !OmniboxFieldTrial::InZeroSuggestFieldTrial())
+ return;
+ verbatim_relevance_ = kDefaultVerbatimZeroSuggestRelevance;
+ done_ = false;
// TODO(jered): Consider adding locally-sourced zero-suggestions here too.
// These may be useful on the NTP or more relevant to the user than server
// suggestions, if based on local browsing history.
- Run();
+ Run(suggest_url);
}
ZeroSuggestProvider::ZeroSuggestProvider(
@@ -186,65 +195,6 @@ ZeroSuggestProvider::ZeroSuggestProvider(
ZeroSuggestProvider::~ZeroSuggestProvider() {
}
-bool ZeroSuggestProvider::ShouldRunZeroSuggest(
- const GURL& url,
- AutocompleteInput::PageClassification page_classification) const {
- if (!ShouldSendURL(url, page_classification))
- return false;
-
- // Don't run if there's no profile or in incognito mode.
- if (profile_ == NULL || profile_->IsOffTheRecord())
- return false;
-
- // Don't run if we can't get preferences or search suggest is not enabled.
- PrefService* prefs = profile_->GetPrefs();
- if (prefs == NULL || !prefs->GetBoolean(prefs::kSearchSuggestEnabled))
- return false;
-
- ProfileSyncService* service =
- ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_);
- browser_sync::SyncPrefs sync_prefs(prefs);
-
- // ZeroSuggest requires sending the current URL to the suggest provider, so we
- // only want to enable it if the user is willing to have this data sent.
- // Because tab sync involves sending the same data, we currently use
- // "tab sync is enabled and tab sync data is unencrypted" as a proxy for
- // "the user is OK with sending this data". We might someday want to change
- // this to a standalone setting or part of some other explicit general opt-in.
- if (!OmniboxFieldTrial::InZeroSuggestFieldTrial() ||
- service == NULL ||
- !service->IsSyncEnabledAndLoggedIn() ||
- !sync_prefs.GetPreferredDataTypes(syncer::UserTypes()).Has(
- syncer::PROXY_TABS) ||
- service->GetEncryptedDataTypes().Has(syncer::SESSIONS)) {
- return false;
- }
- return true;
-}
-
-bool ZeroSuggestProvider::ShouldSendURL(
- const GURL& url,
- AutocompleteInput::PageClassification page_classification) const {
- if (!url.is_valid())
- return false;
-
- // TODO(hfung): Show Most Visited on NTP with appropriate verbatim
- // description when the user actively focuses on the omnibox as discussed in
- // crbug/305366 if Most Visited (or something similar) will launch.
- if (page_classification ==
- AutocompleteInput::INSTANT_NEW_TAB_PAGE_WITH_FAKEBOX_AS_STARTING_FOCUS ||
- page_classification ==
- AutocompleteInput::INSTANT_NEW_TAB_PAGE_WITH_OMNIBOX_AS_STARTING_FOCUS)
- return false;
-
- // Only allow HTTP URLs or Google HTTPS URLs (including Google search
- // result pages). For the latter case, Google was already sent the HTTPS
- // URLs when requesting the page, so the information is just re-sent.
- return (url.scheme() == content::kHttpScheme) ||
- google_util::IsGoogleDomainUrl(url, google_util::ALLOW_SUBDOMAIN,
- google_util::ALLOW_NON_STANDARD_PORTS);
-}
-
void ZeroSuggestProvider::FillResults(
const Value& root_val,
int* verbatim_relevance,
@@ -393,32 +343,9 @@ AutocompleteMatch ZeroSuggestProvider::NavigationToMatch(
return match;
}
-void ZeroSuggestProvider::Run() {
+void ZeroSuggestProvider::Run(const GURL& suggest_url) {
have_pending_request_ = false;
const int kFetcherID = 1;
-
- const TemplateURL* default_provider =
- template_url_service_->GetDefaultSearchProvider();
- // TODO(hfung): Generalize if the default provider supports zero suggest.
- // Only make the request if we know that the provider supports zero suggest
- // (currently only the prepopulated Google provider).
- if (default_provider == NULL || !default_provider->SupportsReplacement() ||
- default_provider->prepopulate_id() != 1) {
- Stop(true);
- return;
- }
- string16 prefix;
- TemplateURLRef::SearchTermsArgs search_term_args(prefix);
- search_term_args.zero_prefix_url = current_query_;
- std::string req_url = default_provider->suggestions_url_ref().
- ReplaceSearchTerms(search_term_args);
- GURL suggest_url(req_url);
- // Make sure we are sending the suggest request through HTTPS.
- if (!suggest_url.SchemeIs(content::kHttpsScheme)) {
- Stop(true);
- return;
- }
-
fetcher_.reset(
net::URLFetcher::Create(kFetcherID,
suggest_url,

Powered by Google App Engine
This is Rietveld 408576698