summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblundell <blundell@chromium.org>2015-06-21 12:29:13 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-21 19:29:51 +0000
commitd130d599dd7b02b9bdc4ea606c77117afbb91c57 (patch)
treef07038dfd53100f4650041ceea48fe8683a61625
parent8db3efc9bb514d4e55a17fbd4d654c4ec4e72487 (diff)
downloadchromium_src-d130d599dd7b02b9bdc4ea606c77117afbb91c57.zip
chromium_src-d130d599dd7b02b9bdc4ea606c77117afbb91c57.tar.gz
chromium_src-d130d599dd7b02b9bdc4ea606c77117afbb91c57.tar.bz2
Prepare ZeroSuggestProvider for componentization
- Abstracts //chrome-level dependencies via AutocompleteProviderClient. - Moves the kZeroSuggestCachedResults pref name to live in the component. - Also takes the opportunity to eliminate protected data members in BaseSearchProvider. BUG=371538 TBR=sdefresne, mkwst Review URL: https://codereview.chromium.org/1197533003 Cr-Commit-Position: refs/heads/master@{#335456}
-rw-r--r--chrome/browser/autocomplete/autocomplete_controller.cc7
-rw-r--r--chrome/browser/autocomplete/autocomplete_provider_unittest.cc2
-rw-r--r--chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc38
-rw-r--r--chrome/browser/autocomplete/chrome_autocomplete_provider_client.h18
-rw-r--r--chrome/browser/autocomplete/search_provider_unittest.cc8
-rw-r--r--chrome/browser/autocomplete/zero_suggest_provider.cc114
-rw-r--r--chrome/browser/autocomplete/zero_suggest_provider.h11
-rw-r--r--chrome/browser/autocomplete/zero_suggest_provider_unittest.cc21
-rw-r--r--chrome/browser/browsing_data/browsing_data_remover.cc3
-rw-r--r--chrome/browser/browsing_data/browsing_data_remover_unittest.cc5
-rw-r--r--chrome/common/pref_names.cc3
-rw-r--r--chrome/common/pref_names.h2
-rw-r--r--components/history.gypi3
-rw-r--r--components/history/core/browser/BUILD.gn5
-rw-r--r--components/omnibox.gypi3
-rw-r--r--components/omnibox/BUILD.gn4
-rw-r--r--components/omnibox/autocomplete_provider_client.h21
-rw-r--r--components/omnibox/base_search_provider.cc24
-rw-r--r--components/omnibox/base_search_provider.h45
-rw-r--r--components/omnibox/base_search_provider_unittest.cc55
-rw-r--r--components/omnibox/omnibox_pref_names.cc12
-rw-r--r--components/omnibox/omnibox_pref_names.h17
-rw-r--r--components/omnibox/search_provider.cc73
-rw-r--r--components/omnibox/search_provider.h3
-rw-r--r--components/omnibox/shortcuts_provider.cc46
-rw-r--r--components/omnibox/shortcuts_provider.h5
-rw-r--r--components/search_engines/template_url.cc13
-rw-r--r--components/search_engines/template_url.h13
-rw-r--r--components/search_engines/template_url_service.cc13
-rw-r--r--components/search_engines/template_url_service.h5
30 files changed, 335 insertions, 257 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_controller.cc b/chrome/browser/autocomplete/autocomplete_controller.cc
index e3d2e55..a75c373 100644
--- a/chrome/browser/autocomplete/autocomplete_controller.cc
+++ b/chrome/browser/autocomplete/autocomplete_controller.cc
@@ -208,15 +208,14 @@ AutocompleteController::AutocompleteController(
}
#endif
if (provider_types & AutocompleteProvider::TYPE_SEARCH) {
- search_provider_ =
- new SearchProvider(provider_client_.get(), this, template_url_service);
+ search_provider_ = new SearchProvider(provider_client_.get(), this);
providers_.push_back(search_provider_);
}
if (provider_types & AutocompleteProvider::TYPE_SHORTCUTS)
providers_.push_back(new ShortcutsProvider(provider_client_.get()));
if (provider_types & AutocompleteProvider::TYPE_ZERO_SUGGEST) {
- zero_suggest_provider_ = ZeroSuggestProvider::Create(
- provider_client_.get(), this, template_url_service, profile);
+ zero_suggest_provider_ =
+ ZeroSuggestProvider::Create(provider_client_.get(), this);
if (zero_suggest_provider_)
providers_.push_back(zero_suggest_provider_);
}
diff --git a/chrome/browser/autocomplete/autocomplete_provider_unittest.cc b/chrome/browser/autocomplete/autocomplete_provider_unittest.cc
index d78a860..19b5c9a 100644
--- a/chrome/browser/autocomplete/autocomplete_provider_unittest.cc
+++ b/chrome/browser/autocomplete/autocomplete_provider_unittest.cc
@@ -215,7 +215,7 @@ class AutocompleteProviderTest : public testing::Test,
base::TimeDelta query_formulation_time) const;
void set_search_provider_field_trial_triggered_in_session(bool val) {
- controller_->search_provider_->field_trial_triggered_in_session_ = val;
+ controller_->search_provider_->set_field_trial_triggered_in_session(val);
}
bool search_provider_field_trial_triggered_in_session() {
return controller_->search_provider_->field_trial_triggered_in_session();
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
index 0eeba30..32f3767 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/history/history_service_factory.h"
+#include "chrome/browser/history/top_sites_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/sync/profile_sync_service.h"
@@ -36,16 +37,30 @@ ChromeAutocompleteProviderClient::GetRequestContext() {
return profile_->GetRequestContext();
}
+PrefService* ChromeAutocompleteProviderClient::GetPrefs() {
+ return profile_->GetPrefs();
+}
+
const AutocompleteSchemeClassifier&
-ChromeAutocompleteProviderClient::GetSchemeClassifier() {
+ChromeAutocompleteProviderClient::GetSchemeClassifier() const {
return scheme_classifier_;
}
+AutocompleteClassifier*
+ChromeAutocompleteProviderClient::GetAutocompleteClassifier() {
+ return AutocompleteClassifierFactory::GetForProfile(profile_);
+}
+
history::HistoryService* ChromeAutocompleteProviderClient::GetHistoryService() {
return HistoryServiceFactory::GetForProfile(
profile_, ServiceAccessType::EXPLICIT_ACCESS);
}
+scoped_refptr<history::TopSites>
+ChromeAutocompleteProviderClient::GetTopSites() {
+ return TopSitesFactory::GetForProfile(profile_);
+}
+
bookmarks::BookmarkModel* ChromeAutocompleteProviderClient::GetBookmarkModel() {
return BookmarkModelFactory::GetForProfile(profile_);
}
@@ -62,7 +77,13 @@ TemplateURLService* ChromeAutocompleteProviderClient::GetTemplateURLService() {
return TemplateURLServiceFactory::GetForProfile(profile_);
}
-const SearchTermsData& ChromeAutocompleteProviderClient::GetSearchTermsData() {
+const TemplateURLService*
+ChromeAutocompleteProviderClient::GetTemplateURLService() const {
+ return TemplateURLServiceFactory::GetForProfile(profile_);
+}
+
+const
+SearchTermsData& ChromeAutocompleteProviderClient::GetSearchTermsData() const {
return search_terms_data_;
}
@@ -76,23 +97,23 @@ ChromeAutocompleteProviderClient::GetShortcutsBackendIfExists() {
return ShortcutsBackendFactory::GetForProfileIfExists(profile_);
}
-std::string ChromeAutocompleteProviderClient::GetAcceptLanguages() {
+std::string ChromeAutocompleteProviderClient::GetAcceptLanguages() const {
return profile_->GetPrefs()->GetString(prefs::kAcceptLanguages);
}
-bool ChromeAutocompleteProviderClient::IsOffTheRecord() {
+bool ChromeAutocompleteProviderClient::IsOffTheRecord() const {
return profile_->IsOffTheRecord();
}
-bool ChromeAutocompleteProviderClient::SearchSuggestEnabled() {
+bool ChromeAutocompleteProviderClient::SearchSuggestEnabled() const {
return profile_->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled);
}
-bool ChromeAutocompleteProviderClient::ShowBookmarkBar() {
+bool ChromeAutocompleteProviderClient::BookmarkBarIsVisible() const {
return profile_->GetPrefs()->GetBoolean(bookmarks::prefs::kShowBookmarkBar);
}
-bool ChromeAutocompleteProviderClient::TabSyncEnabledAndUnencrypted() {
+bool ChromeAutocompleteProviderClient::TabSyncEnabledAndUnencrypted() const {
// Check field trials and settings allow sending the URL on suggest requests.
ProfileSyncService* service =
ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_);
@@ -110,8 +131,7 @@ void ChromeAutocompleteProviderClient::Classify(
metrics::OmniboxEventProto::PageClassification page_classification,
AutocompleteMatch* match,
GURL* alternate_nav_url) {
- AutocompleteClassifier* classifier =
- AutocompleteClassifierFactory::GetForProfile(profile_);
+ AutocompleteClassifier* classifier = GetAutocompleteClassifier();
DCHECK(classifier);
classifier->Classify(text, prefer_keyword, allow_exact_keyword_match,
page_classification, match, alternate_nav_url);
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
index 3d6bd2b..ef14b10 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
@@ -18,19 +18,23 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient {
// AutocompleteProviderClient:
net::URLRequestContextGetter* GetRequestContext() override;
- const AutocompleteSchemeClassifier& GetSchemeClassifier() override;
+ PrefService* GetPrefs() override;
+ const AutocompleteSchemeClassifier& GetSchemeClassifier() const override;
+ AutocompleteClassifier* GetAutocompleteClassifier() override;
history::HistoryService* GetHistoryService() override;
+ scoped_refptr<history::TopSites> GetTopSites() override;
bookmarks::BookmarkModel* GetBookmarkModel() override;
history::URLDatabase* GetInMemoryDatabase() override;
TemplateURLService* GetTemplateURLService() override;
- const SearchTermsData& GetSearchTermsData() override;
+ const TemplateURLService* GetTemplateURLService() const override;
+ const SearchTermsData& GetSearchTermsData() const override;
scoped_refptr<ShortcutsBackend> GetShortcutsBackend() override;
scoped_refptr<ShortcutsBackend> GetShortcutsBackendIfExists() override;
- std::string GetAcceptLanguages() override;
- bool IsOffTheRecord() override;
- bool SearchSuggestEnabled() override;
- bool ShowBookmarkBar() override;
- bool TabSyncEnabledAndUnencrypted() override;
+ std::string GetAcceptLanguages() const override;
+ bool IsOffTheRecord() const override;
+ bool SearchSuggestEnabled() const override;
+ bool BookmarkBarIsVisible() const override;
+ bool TabSyncEnabledAndUnencrypted() const override;
void Classify(
const base::string16& text,
bool prefer_keyword,
diff --git a/chrome/browser/autocomplete/search_provider_unittest.cc b/chrome/browser/autocomplete/search_provider_unittest.cc
index e659637..05c2b49 100644
--- a/chrome/browser/autocomplete/search_provider_unittest.cc
+++ b/chrome/browser/autocomplete/search_provider_unittest.cc
@@ -74,7 +74,6 @@ class SearchProviderForTest : public SearchProvider {
public:
SearchProviderForTest(ChromeAutocompleteProviderClient* client,
AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service,
Profile* profile);
bool is_success() { return is_success_; }
@@ -90,10 +89,8 @@ class SearchProviderForTest : public SearchProvider {
SearchProviderForTest::SearchProviderForTest(
ChromeAutocompleteProviderClient* client,
AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service,
Profile* profile)
- : SearchProvider(client, listener, template_url_service),
- is_success_(false) {
+ : SearchProvider(client, listener), is_success_(false) {
}
SearchProviderForTest::~SearchProviderForTest() {
@@ -323,8 +320,7 @@ void SearchProviderTest::SetUp() {
AutocompleteClassifierFactory::GetInstance()->SetTestingFactoryAndUse(
&profile_, &AutocompleteClassifierFactory::BuildInstanceFor);
- provider_ =
- new SearchProviderForTest(client_.get(), this, turl_model, &profile_);
+ provider_ = new SearchProviderForTest(client_.get(), this, &profile_);
OmniboxFieldTrial::kDefaultMinimumTimeBetweenSuggestQueriesMs = 0;
}
diff --git a/chrome/browser/autocomplete/zero_suggest_provider.cc b/chrome/browser/autocomplete/zero_suggest_provider.cc
index 4e12588..68c8019 100644
--- a/chrome/browser/autocomplete/zero_suggest_provider.cc
+++ b/chrome/browser/autocomplete/zero_suggest_provider.cc
@@ -15,13 +15,6 @@
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "chrome/browser/autocomplete/autocomplete_classifier.h"
-#include "chrome/browser/autocomplete/autocomplete_classifier_factory.h"
-#include "chrome/browser/autocomplete/chrome_autocomplete_provider_client.h"
-#include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
-#include "chrome/browser/history/top_sites_factory.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/history/core/browser/top_sites.h"
#include "components/metrics/proto/omnibox_input_type.pb.h"
@@ -30,6 +23,7 @@
#include "components/omnibox/autocomplete_provider_listener.h"
#include "components/omnibox/history_url_provider.h"
#include "components/omnibox/omnibox_field_trial.h"
+#include "components/omnibox/omnibox_pref_names.h"
#include "components/omnibox/search_provider.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/search_engines/template_url_service.h"
@@ -77,17 +71,15 @@ const int kDefaultZeroSuggestRelevance = 100;
// static
ZeroSuggestProvider* ZeroSuggestProvider::Create(
AutocompleteProviderClient* client,
- AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service,
- Profile* profile) {
- return new ZeroSuggestProvider(client, listener, template_url_service,
- profile);
+ AutocompleteProviderListener* listener) {
+ return new ZeroSuggestProvider(client, listener);
}
// static
void ZeroSuggestProvider::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
- registry->RegisterStringPref(prefs::kZeroSuggestCachedResults, std::string());
+ registry->RegisterStringPref(omnibox::kZeroSuggestCachedResults,
+ std::string());
}
void ZeroSuggestProvider::Start(const AutocompleteInput& input,
@@ -98,23 +90,24 @@ void ZeroSuggestProvider::Start(const AutocompleteInput& input,
return;
Stop(true, false);
- field_trial_triggered_ = false;
- field_trial_triggered_in_session_ = false;
+ set_field_trial_triggered(false);
+ set_field_trial_triggered_in_session(false);
results_from_cache_ = false;
permanent_text_ = input.text();
current_query_ = input.current_url().spec();
current_page_classification_ = input.current_page_classification();
current_url_match_ = MatchForCurrentURL();
+ TemplateURLService* template_url_service = client()->GetTemplateURLService();
const TemplateURL* default_provider =
- template_url_service_->GetDefaultSearchProvider();
+ template_url_service->GetDefaultSearchProvider();
if (default_provider == NULL)
return;
base::string16 prefix;
TemplateURLRef::SearchTermsArgs search_term_args(prefix);
GURL suggest_url(default_provider->suggestions_url_ref().ReplaceSearchTerms(
- search_term_args, template_url_service_->search_terms_data()));
+ search_term_args, template_url_service->search_terms_data()));
if (!suggest_url.is_valid())
return;
@@ -122,15 +115,14 @@ void ZeroSuggestProvider::Start(const AutocompleteInput& input,
// most visited field trials.
if (CanSendURL(input.current_url(), suggest_url, default_provider,
current_page_classification_,
- template_url_service_->search_terms_data(), client_) &&
+ template_url_service->search_terms_data(), client()) &&
!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()));
+ suggest_url =
+ GURL(default_provider->suggestions_url_ref().ReplaceSearchTerms(
+ search_term_args, template_url_service->search_terms_data()));
} else if (!ShouldShowNonContextualZeroSuggest(suggest_url,
input.current_url())) {
return;
@@ -168,7 +160,7 @@ void ZeroSuggestProvider::DeleteMatch(const AutocompleteMatch& match) {
if (OmniboxFieldTrial::InZeroSuggestPersonalizedFieldTrial()) {
// Remove the deleted match from the cache, so it is not shown to the user
// again. Since we cannot remove just one result, blow away the cache.
- profile_->GetPrefs()->SetString(prefs::kZeroSuggestCachedResults,
+ client()->GetPrefs()->SetString(omnibox::kZeroSuggestCachedResults,
std::string());
}
BaseSearchProvider::DeleteMatch(match);
@@ -184,22 +176,15 @@ void ZeroSuggestProvider::AddProviderInfo(ProvidersInfo* provider_info) const {
void ZeroSuggestProvider::ResetSession() {
// The user has started editing in the omnibox, so leave
- // |field_trial_triggered_in_session_| unchanged and set
- // |field_trial_triggered_| to false since zero suggest is inactive now.
- field_trial_triggered_ = false;
+ // |field_trial_triggered_in_session| unchanged and set
+ // |field_trial_triggered| to false since zero suggest is inactive now.
+ set_field_trial_triggered(false);
}
-ZeroSuggestProvider::ZeroSuggestProvider(
- AutocompleteProviderClient* client,
-
- AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service,
- Profile* profile)
- : BaseSearchProvider(AutocompleteProvider::TYPE_ZERO_SUGGEST,
- client,
- template_url_service),
+ZeroSuggestProvider::ZeroSuggestProvider(AutocompleteProviderClient* client,
+ AutocompleteProviderListener* listener)
+ : BaseSearchProvider(AutocompleteProvider::TYPE_ZERO_SUGGEST, client),
listener_(listener),
- profile_(profile),
results_from_cache_(false),
waiting_for_most_visited_urls_request_(false),
weak_ptr_factory_(this) {
@@ -211,16 +196,16 @@ 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();
+ return client()->GetTemplateURLService()->GetDefaultSearchProvider();
}
const AutocompleteInput ZeroSuggestProvider::GetInput(bool is_keyword) const {
// The callers of this method won't look at the AutocompleteInput's
// |from_omnibox_focus| member, so we can set its value to false.
- return AutocompleteInput(
- base::string16(), base::string16::npos, std::string(),
- GURL(current_query_), current_page_classification_, true, false, false,
- true, false, ChromeAutocompleteSchemeClassifier(profile_));
+ return AutocompleteInput(base::string16(), base::string16::npos,
+ std::string(), GURL(current_query_),
+ current_page_classification_, true, false, false,
+ true, false, client()->GetSchemeClassifier());
}
bool ZeroSuggestProvider::ShouldAppendExtraParams(
@@ -269,7 +254,8 @@ bool ZeroSuggestProvider::StoreSuggestionResponse(
if (!OmniboxFieldTrial::InZeroSuggestPersonalizedFieldTrial() ||
json_data.empty())
return false;
- profile_->GetPrefs()->SetString(prefs::kZeroSuggestCachedResults, json_data);
+ client()->GetPrefs()->SetString(omnibox::kZeroSuggestCachedResults,
+ json_data);
// If we received an empty result list, we should update the display, as it
// may be showing cached results that should not be shown.
@@ -301,13 +287,12 @@ AutocompleteMatch ZeroSuggestProvider::NavigationToMatch(
match.destination_url = navigation.url();
// Zero suggest results should always omit protocols and never appear bold.
- const std::string languages(
- profile_->GetPrefs()->GetString(prefs::kAcceptLanguages));
+ const std::string languages(client()->GetAcceptLanguages());
match.contents = net::FormatUrl(navigation.url(), languages,
net::kFormatUrlOmitAll, net::UnescapeRule::SPACES, NULL, NULL, NULL);
match.fill_into_edit +=
- AutocompleteInput::FormattedStringWithEquivalentMeaning(navigation.url(),
- match.contents, ChromeAutocompleteSchemeClassifier(profile_));
+ AutocompleteInput::FormattedStringWithEquivalentMeaning(
+ navigation.url(), match.contents, client()->GetSchemeClassifier());
AutocompleteMatch::ClassifyLocationInString(base::string16::npos, 0,
match.contents.length(), ACMatchClassification::URL,
@@ -324,8 +309,7 @@ AutocompleteMatch ZeroSuggestProvider::NavigationToMatch(
void ZeroSuggestProvider::Run(const GURL& suggest_url) {
if (OmniboxFieldTrial::InZeroSuggestMostVisitedFieldTrial()) {
most_visited_urls_.clear();
- scoped_refptr<history::TopSites> ts =
- TopSitesFactory::GetForProfile(profile_);
+ scoped_refptr<history::TopSites> ts = client()->GetTopSites();
if (ts) {
waiting_for_most_visited_urls_request_ = true;
ts->GetMostVisitedURLs(
@@ -336,12 +320,12 @@ void ZeroSuggestProvider::Run(const GURL& suggest_url) {
const int kFetcherID = 1;
fetcher_ = net::URLFetcher::Create(kFetcherID, suggest_url,
net::URLFetcher::GET, this);
- fetcher_->SetRequestContext(profile_->GetRequestContext());
+ fetcher_->SetRequestContext(client()->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,
+ fetcher_->GetOriginalURL(), client()->IsOffTheRecord(), false,
&headers);
fetcher_->SetExtraRequestHeaders(headers.ToString());
fetcher_->Start();
@@ -362,11 +346,13 @@ void ZeroSuggestProvider::OnMostVisitedUrlsAvailable(
void ZeroSuggestProvider::ConvertResultsToAutocompleteMatches() {
matches_.clear();
+ TemplateURLService* template_url_service = client()->GetTemplateURLService();
const TemplateURL* default_provider =
- template_url_service_->GetDefaultSearchProvider();
+ template_url_service->GetDefaultSearchProvider();
// Fail if we can't set the clickthrough URL for query suggestions.
- if (default_provider == NULL || !default_provider->SupportsReplacement(
- template_url_service_->search_terms_data()))
+ if (default_provider == NULL ||
+ !default_provider->SupportsReplacement(
+ template_url_service->search_terms_data()))
return;
MatchMap map;
@@ -392,12 +378,11 @@ void ZeroSuggestProvider::ConvertResultsToAutocompleteMatches() {
}
const base::string16 current_query_string16(
base::ASCIIToUTF16(current_query_));
- const std::string languages(
- profile_->GetPrefs()->GetString(prefs::kAcceptLanguages));
+ const std::string languages(client()->GetAcceptLanguages());
for (size_t i = 0; i < most_visited_urls_.size(); i++) {
const history::MostVisitedURL& url = most_visited_urls_[i];
SearchSuggestionParser::NavigationResult nav(
- ChromeAutocompleteSchemeClassifier(profile_), url.url,
+ client()->GetSchemeClassifier(), url.url,
AutocompleteMatchType::NAVSUGGEST, url.title, std::string(), false,
relevance, true, current_query_string16, languages);
matches_.push_back(NavigationToMatch(nav));
@@ -425,7 +410,7 @@ void ZeroSuggestProvider::ConvertResultsToAutocompleteMatches() {
AutocompleteMatch ZeroSuggestProvider::MatchForCurrentURL() {
AutocompleteMatch match;
- AutocompleteClassifierFactory::GetForProfile(profile_)->Classify(
+ client()->GetAutocompleteClassifier()->Classify(
permanent_text_, false, true, current_page_classification_, &match, NULL);
match.allowed_to_be_default_match = true;
@@ -445,10 +430,12 @@ int ZeroSuggestProvider::GetVerbatimRelevance() const {
bool ZeroSuggestProvider::ShouldShowNonContextualZeroSuggest(
const GURL& suggest_url,
const GURL& current_page_url) const {
+ const TemplateURLService* template_url_service =
+ client()->GetTemplateURLService();
if (!ZeroSuggestEnabled(suggest_url,
- template_url_service_->GetDefaultSearchProvider(),
+ template_url_service->GetDefaultSearchProvider(),
current_page_classification_,
- template_url_service_->search_terms_data(), client_))
+ template_url_service->search_terms_data(), client()))
return false;
// If we cannot send URLs, then only the MostVisited and Personalized
@@ -467,8 +454,9 @@ bool ZeroSuggestProvider::ShouldShowNonContextualZeroSuggest(
return false;
if (OmniboxFieldTrial::InZeroSuggestMostVisitedWithoutSerpFieldTrial() &&
- template_url_service_->
- IsSearchResultsPageFromDefaultSearchProvider(current_page_url))
+ client()
+ ->GetTemplateURLService()
+ ->IsSearchResultsPageFromDefaultSearchProvider(current_page_url))
return false;
return true;
@@ -478,8 +466,8 @@ void ZeroSuggestProvider::MaybeUseCachedSuggestions() {
if (!OmniboxFieldTrial::InZeroSuggestPersonalizedFieldTrial())
return;
- std::string json_data = profile_->GetPrefs()->GetString(
- prefs::kZeroSuggestCachedResults);
+ std::string json_data =
+ client()->GetPrefs()->GetString(omnibox::kZeroSuggestCachedResults);
if (!json_data.empty()) {
scoped_ptr<base::Value> data(
SearchSuggestionParser::DeserializeJsonData(json_data));
diff --git a/chrome/browser/autocomplete/zero_suggest_provider.h b/chrome/browser/autocomplete/zero_suggest_provider.h
index af53895..481b04e1 100644
--- a/chrome/browser/autocomplete/zero_suggest_provider.h
+++ b/chrome/browser/autocomplete/zero_suggest_provider.h
@@ -19,8 +19,6 @@
#include "net/url_request/url_fetcher_delegate.h"
class AutocompleteProviderListener;
-class Profile;
-class TemplateURLService;
namespace base {
class ListValue;
@@ -50,9 +48,7 @@ class ZeroSuggestProvider : public BaseSearchProvider,
public:
// Creates and returns an instance of this provider.
static ZeroSuggestProvider* Create(AutocompleteProviderClient* client,
- AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service,
- Profile* profile);
+ AutocompleteProviderListener* listener);
// Registers a preference used to cache zero suggest results.
static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
@@ -69,9 +65,7 @@ class ZeroSuggestProvider : public BaseSearchProvider,
private:
ZeroSuggestProvider(AutocompleteProviderClient* client,
- AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service,
- Profile* profile);
+ AutocompleteProviderListener* listener);
~ZeroSuggestProvider() override;
@@ -133,7 +127,6 @@ class ZeroSuggestProvider : public BaseSearchProvider,
void MaybeUseCachedSuggestions();
AutocompleteProviderListener* listener_;
- Profile* profile_;
// The URL for which a suggestion fetch is pending.
std::string current_query_;
diff --git a/chrome/browser/autocomplete/zero_suggest_provider_unittest.cc b/chrome/browser/autocomplete/zero_suggest_provider_unittest.cc
index 4b965a0d..d00670e 100644
--- a/chrome/browser/autocomplete/zero_suggest_provider_unittest.cc
+++ b/chrome/browser/autocomplete/zero_suggest_provider_unittest.cc
@@ -19,6 +19,7 @@
#include "components/metrics/proto/omnibox_event.pb.h"
#include "components/omnibox/autocomplete_provider_listener.h"
#include "components/omnibox/omnibox_field_trial.h"
+#include "components/omnibox/omnibox_pref_names.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
#include "components/variations/entropy_provider.h"
@@ -180,8 +181,7 @@ void ZeroSuggestProviderTest::SetUp() {
TopSitesFactory* top_sites_factory = TopSitesFactory::GetInstance();
top_sites_factory->SetTestingFactory(&profile_, BuildFakeEmptyTopSites);
- provider_ =
- ZeroSuggestProvider::Create(client_.get(), this, turl_model, &profile_);
+ provider_ = ZeroSuggestProvider::Create(client_.get(), this);
}
void ZeroSuggestProviderTest::TearDown() {
@@ -237,7 +237,7 @@ TEST_F(ZeroSuggestProviderTest, TestDoesNotReturnMatchesForPrefix) {
"[],[],{\"google:suggestrelevance\":[602, 601, 600],"
"\"google:verbatimrelevance\":1300}]");
PrefService* prefs = profile_.GetPrefs();
- prefs->SetString(prefs::kZeroSuggestCachedResults, json_response);
+ prefs->SetString(omnibox::kZeroSuggestCachedResults, json_response);
provider_->Start(input, false);
@@ -322,7 +322,7 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestCachingFirstRun) {
// Ensure the cache is empty.
PrefService* prefs = profile_.GetPrefs();
- prefs->SetString(prefs::kZeroSuggestCachedResults, std::string());
+ prefs->SetString(omnibox::kZeroSuggestCachedResults, std::string());
std::string url("http://www.cnn.com/");
AutocompleteInput input(
@@ -332,7 +332,7 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestCachingFirstRun) {
provider_->Start(input, false);
- EXPECT_TRUE(prefs->GetString(prefs::kZeroSuggestCachedResults).empty());
+ EXPECT_TRUE(prefs->GetString(omnibox::kZeroSuggestCachedResults).empty());
EXPECT_TRUE(provider_->matches().empty());
net::TestURLFetcher* fetcher = test_factory_.GetFetcherByID(1);
@@ -347,7 +347,8 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestCachingFirstRun) {
base::RunLoop().RunUntilIdle();
EXPECT_EQ(4U, provider_->matches().size()); // 3 results + verbatim
- EXPECT_EQ(json_response, prefs->GetString(prefs::kZeroSuggestCachedResults));
+ EXPECT_EQ(json_response,
+ prefs->GetString(omnibox::kZeroSuggestCachedResults));
}
TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestHasCachedResults) {
@@ -364,7 +365,7 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestHasCachedResults) {
"[],[],{\"google:suggestrelevance\":[602, 601, 600],"
"\"google:verbatimrelevance\":1300}]");
PrefService* prefs = profile_.GetPrefs();
- prefs->SetString(prefs::kZeroSuggestCachedResults, json_response);
+ prefs->SetString(omnibox::kZeroSuggestCachedResults, json_response);
provider_->Start(input, false);
@@ -393,7 +394,7 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestHasCachedResults) {
// Expect the new results have been stored.
EXPECT_EQ(json_response2,
- prefs->GetString(prefs::kZeroSuggestCachedResults));
+ prefs->GetString(omnibox::kZeroSuggestCachedResults));
}
TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestReceivedEmptyResults) {
@@ -410,7 +411,7 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestReceivedEmptyResults) {
"[],[],{\"google:suggestrelevance\":[602, 601, 600],"
"\"google:verbatimrelevance\":1300}]");
PrefService* prefs = profile_.GetPrefs();
- prefs->SetString(prefs::kZeroSuggestCachedResults, json_response);
+ prefs->SetString(omnibox::kZeroSuggestCachedResults, json_response);
provider_->Start(input, false);
@@ -434,5 +435,5 @@ TEST_F(ZeroSuggestProviderTest, TestPsuggestZeroSuggestReceivedEmptyResults) {
// Expect the new results have been stored.
EXPECT_EQ(empty_response,
- prefs->GetString(prefs::kZeroSuggestCachedResults));
+ prefs->GetString(omnibox::kZeroSuggestCachedResults));
}
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc
index f657658..bc4cf60 100644
--- a/chrome/browser/browsing_data/browsing_data_remover.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover.cc
@@ -46,6 +46,7 @@
#include "components/history/core/browser/history_service.h"
#include "components/nacl/browser/nacl_browser.h"
#include "components/nacl/browser/pnacl_host.h"
+#include "components/omnibox/omnibox_pref_names.h"
#include "components/password_manager/core/browser/password_store.h"
#include "components/power/origin_power_map.h"
#include "components/power/origin_power_map_factory.h"
@@ -713,7 +714,7 @@ void BrowsingDataRemover::RemoveImpl(int remove_mask,
// Remove omnibox zero-suggest cache results.
if ((remove_mask & (REMOVE_CACHE | REMOVE_COOKIES)))
- prefs->SetString(prefs::kZeroSuggestCachedResults, std::string());
+ prefs->SetString(omnibox::kZeroSuggestCachedResults, std::string());
// Always wipe accumulated network related data (TransportSecurityState and
// HttpServerPropertiesManager data).
diff --git a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
index e6d7c9a..094a826b52 100644
--- a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
+++ b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
@@ -42,6 +42,7 @@
#include "components/domain_reliability/service.h"
#include "components/favicon/core/favicon_service.h"
#include "components/history/core/browser/history_service.h"
+#include "components/omnibox/omnibox_pref_names.h"
#include "content/public/browser/cookie_store_factory.h"
#include "content/public/browser/dom_storage_context.h"
#include "content/public/browser/local_storage_usage_info.h"
@@ -1882,14 +1883,14 @@ TEST_F(BrowsingDataRemoverTest, CompletionInhibition) {
TEST_F(BrowsingDataRemoverTest, ZeroSuggestCacheClear) {
PrefService* prefs = GetProfile()->GetPrefs();
- prefs->SetString(prefs::kZeroSuggestCachedResults,
+ prefs->SetString(omnibox::kZeroSuggestCachedResults,
"[\"\", [\"foo\", \"bar\"]]");
BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
BrowsingDataRemover::REMOVE_COOKIES,
false);
// Expect the prefs to be cleared when cookies are removed.
- EXPECT_TRUE(prefs->GetString(prefs::kZeroSuggestCachedResults).empty());
+ EXPECT_TRUE(prefs->GetString(omnibox::kZeroSuggestCachedResults).empty());
EXPECT_EQ(BrowsingDataRemover::REMOVE_COOKIES, GetRemovalMask());
EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginSetMask());
}
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index a964e15..037c82d 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -1199,9 +1199,6 @@ const char kEasyUnlockPairing[] = "easy_unlock.pairing";
// in order to use Easy Unlock.
const char kEasyUnlockProximityRequired[] = "easy_unlock.proximity_required";
-// A cache of zero suggest results using JSON serialized into a string.
-const char kZeroSuggestCachedResults[] = "zerosuggest.cachedresults";
-
#if defined(ENABLE_EXTENSIONS) && !defined(OS_ANDROID) && !defined(OS_IOS)
// These device IDs are used by the copresence component, to uniquely identify
// this device to the server. For privacy, authenticated and unauthenticated
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 3337025..aedb9de 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -411,8 +411,6 @@ extern const char kEasyUnlockEnabled[];
extern const char kEasyUnlockPairing[];
extern const char kEasyUnlockProximityRequired[];
-extern const char kZeroSuggestCachedResults[];
-
#if defined(ENABLE_EXTENSIONS) && !defined(OS_ANDROID) && !defined(OS_IOS)
extern const char kCopresenceAuthenticatedDeviceId[];
extern const char kCopresenceAnonymousDeviceId[];
diff --git a/components/history.gypi b/components/history.gypi
index 9ecec9f..5204782 100644
--- a/components/history.gypi
+++ b/components/history.gypi
@@ -30,6 +30,9 @@
'query_parser',
'signin_core_browser',
],
+ 'export_dependent_settings': [
+ '../skia/skia.gyp:skia',
+ ],
'sources': [
# Note: sources list duplicated in GN build.
'history/core/browser/delete_directive_handler.cc',
diff --git a/components/history/core/browser/BUILD.gn b/components/history/core/browser/BUILD.gn
index d0f5008..eaaf3f4 100644
--- a/components/history/core/browser/BUILD.gn
+++ b/components/history/core/browser/BUILD.gn
@@ -80,6 +80,10 @@ static_library("browser") {
"web_history_service.h",
]
+ public_deps = [
+ "//skia",
+ ]
+
deps = [
"//base",
"//base:i18n",
@@ -91,7 +95,6 @@ static_library("browser") {
"//components/signin/core/browser",
"//google_apis",
"//net",
- "//skia",
"//sql",
"//sync",
"//third_party/sqlite",
diff --git a/components/omnibox.gypi b/components/omnibox.gypi
index aa58ea8..c228804 100644
--- a/components/omnibox.gypi
+++ b/components/omnibox.gypi
@@ -31,6 +31,7 @@
],
'export_dependent_settings': [
'component_metrics_proto',
+ 'history_core_browser',
],
'include_dirs': [
'..',
@@ -74,6 +75,8 @@
'omnibox/omnibox_field_trial.h',
'omnibox/omnibox_log.cc',
'omnibox/omnibox_log.h',
+ 'omnibox/omnibox_pref_names.cc',
+ 'omnibox/omnibox_pref_names.h',
'omnibox/omnibox_switches.cc',
'omnibox/omnibox_switches.h',
'omnibox/scored_history_match.cc',
diff --git a/components/omnibox/BUILD.gn b/components/omnibox/BUILD.gn
index b88d201..6d669bd 100644
--- a/components/omnibox/BUILD.gn
+++ b/components/omnibox/BUILD.gn
@@ -41,6 +41,8 @@ static_library("omnibox") {
"omnibox_field_trial.h",
"omnibox_log.cc",
"omnibox_log.h",
+ "omnibox_pref_names.cc",
+ "omnibox_pref_names.h",
"omnibox_switches.cc",
"omnibox_switches.h",
"scored_history_match.cc",
@@ -64,6 +66,7 @@ static_library("omnibox") {
]
public_deps = [
+ "//components/history/core/browser",
"//components/metrics/proto",
]
deps = [
@@ -71,7 +74,6 @@ static_library("omnibox") {
"//base",
"//base:i18n",
"//components/bookmarks/browser",
- "//components/history/core/browser",
"//components/keyed_service/core",
"//components/query_parser",
"//components/resources",
diff --git a/components/omnibox/autocomplete_provider_client.h b/components/omnibox/autocomplete_provider_client.h
index 97d1134..32dd416 100644
--- a/components/omnibox/autocomplete_provider_client.h
+++ b/components/omnibox/autocomplete_provider_client.h
@@ -8,13 +8,16 @@
#include "base/memory/ref_counted.h"
#include "base/strings/string16.h"
#include "components/history/core/browser/keyword_id.h"
+#include "components/history/core/browser/top_sites.h"
#include "components/metrics/proto/omnibox_event.pb.h"
#include "components/omnibox/shortcuts_backend.h"
class AutocompleteController;
struct AutocompleteMatch;
+class AutocompleteClassifier;
class AutocompleteSchemeClassifier;
class GURL;
+class PrefService;
class ShortcutsBackend;
namespace bookmarks {
@@ -38,26 +41,30 @@ class AutocompleteProviderClient {
virtual ~AutocompleteProviderClient() {}
virtual net::URLRequestContextGetter* GetRequestContext() = 0;
- virtual const AutocompleteSchemeClassifier& GetSchemeClassifier() = 0;
+ virtual PrefService* GetPrefs() = 0;
+ virtual const AutocompleteSchemeClassifier& GetSchemeClassifier() const = 0;
+ virtual AutocompleteClassifier* GetAutocompleteClassifier() = 0;
virtual history::HistoryService* GetHistoryService() = 0;
+ virtual scoped_refptr<history::TopSites> GetTopSites() = 0;
virtual bookmarks::BookmarkModel* GetBookmarkModel() = 0;
virtual history::URLDatabase* GetInMemoryDatabase() = 0;
virtual TemplateURLService* GetTemplateURLService() = 0;
- virtual const SearchTermsData& GetSearchTermsData() = 0;
+ virtual const TemplateURLService* GetTemplateURLService() const = 0;
+ virtual const SearchTermsData& GetSearchTermsData() const = 0;
virtual scoped_refptr<ShortcutsBackend> GetShortcutsBackend() = 0;
virtual scoped_refptr<ShortcutsBackend> GetShortcutsBackendIfExists() = 0;
// The value to use for Accept-Languages HTTP header when making an HTTP
// request.
- virtual std::string GetAcceptLanguages() = 0;
+ virtual std::string GetAcceptLanguages() const = 0;
- virtual bool IsOffTheRecord() = 0;
- virtual bool SearchSuggestEnabled() = 0;
+ virtual bool IsOffTheRecord() const = 0;
+ virtual bool SearchSuggestEnabled() const = 0;
// Returns whether the bookmark bar is visible on all tabs.
- virtual bool ShowBookmarkBar() = 0;
+ virtual bool BookmarkBarIsVisible() const = 0;
- virtual bool TabSyncEnabledAndUnencrypted() = 0;
+ virtual bool TabSyncEnabledAndUnencrypted() const = 0;
// Given some string |text| that the user wants to use for navigation,
// determines how it should be interpreted.
diff --git a/components/omnibox/base_search_provider.cc b/components/omnibox/base_search_provider.cc
index 3d74c51..31b0c28 100644
--- a/components/omnibox/base_search_provider.cc
+++ b/components/omnibox/base_search_provider.cc
@@ -82,12 +82,9 @@ const int BaseSearchProvider::kKeywordProviderURLFetcherID = 2;
const int BaseSearchProvider::kDeletionURLFetcherID = 3;
BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type,
- AutocompleteProviderClient* client,
-
- TemplateURLService* template_url_service)
+ AutocompleteProviderClient* client)
: AutocompleteProvider(type),
client_(client),
- template_url_service_(template_url_service),
field_trial_triggered_(false),
field_trial_triggered_in_session_(false) {
}
@@ -129,7 +126,7 @@ void BaseSearchProvider::DeleteMatch(const AutocompleteMatch& match) {
}
TemplateURL* template_url =
- match.GetTemplateURL(template_url_service_, false);
+ match.GetTemplateURL(client_->GetTemplateURLService(), false);
// This may be NULL if the template corresponding to the keyword has been
// deleted or there is no keyword set.
if (template_url != NULL) {
@@ -174,11 +171,13 @@ void BaseSearchProvider::SetDeletionURL(const std::string& deletion_url,
AutocompleteMatch* match) {
if (deletion_url.empty())
return;
- if (!template_url_service_)
+
+ TemplateURLService* template_url_service = client_->GetTemplateURLService();
+ if (!template_url_service)
return;
GURL url =
- template_url_service_->GetDefaultSearchProvider()->GenerateSearchURL(
- template_url_service_->search_terms_data());
+ template_url_service->GetDefaultSearchProvider()->GenerateSearchURL(
+ template_url_service->search_terms_data());
url = url.GetOrigin().Resolve(deletion_url);
if (url.is_valid()) {
match->RecordAdditionalInfo(BaseSearchProvider::kDeletionUrlKey,
@@ -282,7 +281,7 @@ bool BaseSearchProvider::ZeroSuggestEnabled(
const TemplateURL* template_url,
OmniboxEventProto::PageClassification page_classification,
const SearchTermsData& search_terms_data,
- AutocompleteProviderClient* client) {
+ const AutocompleteProviderClient* client) {
if (!OmniboxFieldTrial::InZeroSuggestFieldTrial())
return false;
@@ -360,11 +359,12 @@ void BaseSearchProvider::AddMatchToMap(
AutocompleteMatch match = CreateSearchSuggestion(
this, GetInput(result.from_keyword_provider()), in_keyword_mode, result,
GetTemplateURL(result.from_keyword_provider()),
- template_url_service_->search_terms_data(), accepted_suggestion,
- ShouldAppendExtraParams(result));
+ client_->GetTemplateURLService()->search_terms_data(),
+ accepted_suggestion, ShouldAppendExtraParams(result));
if (!match.destination_url.is_valid())
return;
- match.search_terms_args->bookmark_bar_pinned = client_->ShowBookmarkBar();
+ match.search_terms_args->bookmark_bar_pinned =
+ client_->BookmarkBarIsVisible();
match.RecordAdditionalInfo(kRelevanceFromServerKey,
result.relevance_from_server() ? kTrue : kFalse);
match.RecordAdditionalInfo(kShouldPrefetchKey,
diff --git a/components/omnibox/base_search_provider.h b/components/omnibox/base_search_provider.h
index 25d0fe6..edddc57 100644
--- a/components/omnibox/base_search_provider.h
+++ b/components/omnibox/base_search_provider.h
@@ -27,7 +27,6 @@ class GURL;
class SearchTermsData;
class SuggestionDeletionHandler;
class TemplateURL;
-class TemplateURLService;
namespace base {
class DictionaryValue;
@@ -50,8 +49,7 @@ class BaseSearchProvider : public AutocompleteProvider {
static const int kDeletionURLFetcherID;
BaseSearchProvider(AutocompleteProvider::Type type,
- AutocompleteProviderClient* client,
- TemplateURLService* template_url_service);
+ AutocompleteProviderClient* client);
// Returns whether |match| is flagged as a query that should be prefetched.
static bool ShouldPrefetch(const AutocompleteMatch& match);
@@ -141,11 +139,11 @@ class BaseSearchProvider : public AutocompleteProvider {
// providers to see this data someday, but for now this has only been
// implemented for Google.
static bool ZeroSuggestEnabled(
- const GURL& suggest_url,
- const TemplateURL* template_url,
- metrics::OmniboxEventProto::PageClassification page_classification,
- const SearchTermsData& search_terms_data,
- AutocompleteProviderClient* client);
+ const GURL& suggest_url,
+ const TemplateURL* template_url,
+ metrics::OmniboxEventProto::PageClassification page_classification,
+ const SearchTermsData& search_terms_data,
+ const AutocompleteProviderClient* client);
// Returns whether we can send the URL of the current page in any suggest
// requests. Doing this requires that all the following hold:
@@ -220,18 +218,17 @@ class BaseSearchProvider : public AutocompleteProvider {
// Records in UMA whether the deletion request resulted in success.
virtual void RecordDeletionResult(bool success) = 0;
- AutocompleteProviderClient* client_;
- TemplateURLService* template_url_service_;
+ AutocompleteProviderClient* client() { return client_; }
+ const AutocompleteProviderClient* client() const { return client_; }
- // Whether a field trial, if any, has triggered in the most recent
- // autocomplete query. This field is set to true only if the suggestion
- // provider has completed and the response contained
- // '"google:fieldtrialtriggered":true'.
- bool field_trial_triggered_;
+ bool field_trial_triggered() const { return field_trial_triggered_; }
- // Same as above except that it is maintained across the current Omnibox
- // session.
- bool field_trial_triggered_in_session_;
+ void set_field_trial_triggered(bool triggered) {
+ field_trial_triggered_ = triggered;
+ }
+ void set_field_trial_triggered_in_session(bool triggered) {
+ field_trial_triggered_in_session_ = triggered;
+ }
private:
friend class SearchProviderTest;
@@ -246,6 +243,18 @@ class BaseSearchProvider : public AutocompleteProvider {
void OnDeletionComplete(bool success,
SuggestionDeletionHandler* handler);
+ AutocompleteProviderClient* client_;
+
+ // Whether a field trial, if any, has triggered in the most recent
+ // autocomplete query. This field is set to true only if the suggestion
+ // provider has completed and the response contained
+ // '"google:fieldtrialtriggered":true'.
+ bool field_trial_triggered_;
+
+ // Same as above except that it is maintained across the current Omnibox
+ // session.
+ bool field_trial_triggered_in_session_;
+
// Each deletion handler in this vector corresponds to an outstanding request
// that a server delete a personalized suggestion. Making this a ScopedVector
// causes us to auto-cancel all such requests on shutdown.
diff --git a/components/omnibox/base_search_provider_unittest.cc b/components/omnibox/base_search_provider_unittest.cc
index c790d13..ba17890 100644
--- a/components/omnibox/base_search_provider_unittest.cc
+++ b/components/omnibox/base_search_provider_unittest.cc
@@ -24,14 +24,33 @@ using testing::_;
class MockAutocompleteProviderClient : public AutocompleteProviderClient {
public:
- MockAutocompleteProviderClient() {}
+ MockAutocompleteProviderClient() {
+ template_url_service_.reset(new TemplateURLService(
+ nullptr, scoped_ptr<SearchTermsData>(new SearchTermsData), nullptr,
+ scoped_ptr<TemplateURLServiceClient>(), nullptr, nullptr,
+ base::Closure()));
+ }
MOCK_METHOD0(GetRequestContext, net::URLRequestContextGetter*());
- MOCK_METHOD0(GetSchemeClassifier, const AutocompleteSchemeClassifier&());
+ MOCK_METHOD0(GetPrefs, PrefService*());
+ MOCK_CONST_METHOD0(GetSchemeClassifier,
+ const AutocompleteSchemeClassifier&());
+ MOCK_METHOD0(GetAutocompleteClassifier, AutocompleteClassifier*());
MOCK_METHOD0(GetHistoryService, history::HistoryService*());
+
+ // Can't mock scoped_refptr :\.
+ scoped_refptr<history::TopSites> GetTopSites() override { return nullptr; }
+
MOCK_METHOD0(GetBookmarkModel, bookmarks::BookmarkModel*());
MOCK_METHOD0(GetInMemoryDatabase, history::URLDatabase*());
- MOCK_METHOD0(GetTemplateURLService, TemplateURLService*());
- MOCK_METHOD0(GetSearchTermsData, const SearchTermsData&());
+
+ TemplateURLService* GetTemplateURLService() override {
+ return template_url_service_.get();
+ }
+ const TemplateURLService* GetTemplateURLService() const override {
+ return template_url_service_.get();
+ }
+
+ MOCK_CONST_METHOD0(GetSearchTermsData, const SearchTermsData&());
// Can't mock scoped_refptr :\.
scoped_refptr<ShortcutsBackend> GetShortcutsBackend() override {
@@ -41,11 +60,11 @@ class MockAutocompleteProviderClient : public AutocompleteProviderClient {
return nullptr;
}
- MOCK_METHOD0(GetAcceptLanguages, std::string());
- MOCK_METHOD0(IsOffTheRecord, bool());
- MOCK_METHOD0(SearchSuggestEnabled, bool());
- MOCK_METHOD0(ShowBookmarkBar, bool());
- MOCK_METHOD0(TabSyncEnabledAndUnencrypted, bool());
+ MOCK_CONST_METHOD0(GetAcceptLanguages, std::string());
+ MOCK_CONST_METHOD0(IsOffTheRecord, bool());
+ MOCK_CONST_METHOD0(SearchSuggestEnabled, bool());
+ MOCK_CONST_METHOD0(BookmarkBarIsVisible, bool());
+ MOCK_CONST_METHOD0(TabSyncEnabledAndUnencrypted, bool());
MOCK_METHOD6(
Classify,
void(const base::string16& text,
@@ -59,6 +78,8 @@ class MockAutocompleteProviderClient : public AutocompleteProviderClient {
MOCK_METHOD1(PrefetchImage, void(const GURL& url));
private:
+ scoped_ptr<TemplateURLService> template_url_service_;
+
DISALLOW_COPY_AND_ASSIGN(MockAutocompleteProviderClient);
};
@@ -67,9 +88,8 @@ class TestBaseSearchProvider : public BaseSearchProvider {
typedef BaseSearchProvider::MatchMap MatchMap;
TestBaseSearchProvider(AutocompleteProvider::Type type,
- AutocompleteProviderClient* client,
- TemplateURLService* template_url_service)
- : BaseSearchProvider(type, client, template_url_service) {}
+ AutocompleteProviderClient* client)
+ : BaseSearchProvider(type, client) {}
MOCK_METHOD1(DeleteMatch, void(const AutocompleteMatch& match));
MOCK_CONST_METHOD1(AddProviderInfo, void(ProvidersInfo* provider_info));
MOCK_CONST_METHOD1(GetTemplateURL, const TemplateURL*(bool is_keyword));
@@ -107,21 +127,12 @@ class BaseSearchProviderTest : public testing::Test {
protected:
void SetUp() override {
- service_.reset(
- new TemplateURLService(NULL,
- scoped_ptr<SearchTermsData>(new SearchTermsData),
- NULL,
- scoped_ptr<TemplateURLServiceClient>(),
- NULL,
- NULL,
- base::Closure()));
client_.reset(new NiceMock<MockAutocompleteProviderClient>());
provider_ = new NiceMock<TestBaseSearchProvider>(
- AutocompleteProvider::TYPE_SEARCH, client_.get(), service_.get());
+ AutocompleteProvider::TYPE_SEARCH, client_.get());
}
scoped_refptr<NiceMock<TestBaseSearchProvider> > provider_;
- scoped_ptr<TemplateURLService> service_;
scoped_ptr<NiceMock<MockAutocompleteProviderClient>> client_;
};
diff --git a/components/omnibox/omnibox_pref_names.cc b/components/omnibox/omnibox_pref_names.cc
new file mode 100644
index 0000000..ea18080
--- /dev/null
+++ b/components/omnibox/omnibox_pref_names.cc
@@ -0,0 +1,12 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/omnibox/omnibox_pref_names.h"
+
+namespace omnibox {
+
+// A cache of zero suggest results using JSON serialized into a string.
+const char kZeroSuggestCachedResults[] = "zerosuggest.cachedresults";
+
+} // namespace omnibox
diff --git a/components/omnibox/omnibox_pref_names.h b/components/omnibox/omnibox_pref_names.h
new file mode 100644
index 0000000..b24a4c9
--- /dev/null
+++ b/components/omnibox/omnibox_pref_names.h
@@ -0,0 +1,17 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_OMNIBOX_OMNIBOX_PREF_NAMES_H_
+#define COMPONENTS_OMNIBOX_OMNIBOX_PREF_NAMES_H_
+
+namespace omnibox {
+
+// Alphabetical list of preference names specific to the omnibox component.
+// Keep alphabetized, and document each in the .cc file.
+
+extern const char kZeroSuggestCachedResults[];
+
+} // namespace metrics
+
+#endif // COMPONENTS_OMNIBOX_OMNIBOX_PREF_NAMES_H_
diff --git a/components/omnibox/search_provider.cc b/components/omnibox/search_provider.cc
index 4b518d3..2b904b6 100644
--- a/components/omnibox/search_provider.cc
+++ b/components/omnibox/search_provider.cc
@@ -119,17 +119,16 @@ class SearchProvider::CompareScoredResults {
// SearchProvider -------------------------------------------------------------
SearchProvider::SearchProvider(AutocompleteProviderClient* client,
- AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service)
- : BaseSearchProvider(AutocompleteProvider::TYPE_SEARCH,
- client,
- template_url_service),
+ AutocompleteProviderListener* listener)
+ : BaseSearchProvider(AutocompleteProvider::TYPE_SEARCH, client),
listener_(listener),
- providers_(template_url_service),
+ providers_(client->GetTemplateURLService()),
answers_cache_(10) {
- // |template_url_service_| can be null in tests.
- if (template_url_service_)
- template_url_service_->AddObserver(this);
+ TemplateURLService* template_url_service = client->GetTemplateURLService();
+
+ // |template_url_service| can be null in tests.
+ if (template_url_service)
+ template_url_service->AddObserver(this);
}
// static
@@ -138,7 +137,7 @@ std::string SearchProvider::GetSuggestMetadata(const AutocompleteMatch& match) {
}
void SearchProvider::ResetSession() {
- field_trial_triggered_in_session_ = false;
+ set_field_trial_triggered_in_session(false);
}
void SearchProvider::OnTemplateURLServiceChanged() {
@@ -159,7 +158,10 @@ void SearchProvider::OnTemplateURLServiceChanged() {
if (!template_url) {
CancelFetcher(&default_fetcher_);
default_results_.Clear();
- providers_.set(template_url_service_->GetDefaultSearchProvider()->keyword(),
+ providers_.set(client()
+ ->GetTemplateURLService()
+ ->GetDefaultSearchProvider()
+ ->keyword(),
providers_.keyword_provider());
}
template_url = providers_.GetKeywordProviderURL();
@@ -179,8 +181,9 @@ void SearchProvider::OnTemplateURLServiceChanged() {
}
SearchProvider::~SearchProvider() {
- if (template_url_service_)
- template_url_service_->RemoveObserver(this);
+ TemplateURLService* template_url_service = client()->GetTemplateURLService();
+ if (template_url_service)
+ template_url_service->RemoveObserver(this);
}
// static
@@ -234,12 +237,12 @@ void SearchProvider::Start(const AutocompleteInput& input,
bool minimal_changes) {
// Do our best to load the model as early as possible. This will reduce
// odds of having the model not ready when really needed (a non-empty input).
- TemplateURLService* model = providers_.template_url_service();
+ TemplateURLService* model = client()->GetTemplateURLService();
DCHECK(model);
model->Load();
matches_.clear();
- field_trial_triggered_ = false;
+ set_field_trial_triggered(false);
// Can't return search/suggest results for bogus input.
if (input.from_omnibox_focus() ||
@@ -417,7 +420,7 @@ void SearchProvider::UpdateMatchContentsClass(
sug_it != results->suggest_results.end(); ++sug_it) {
sug_it->ClassifyMatchContents(false, input_text);
}
- const std::string languages(client_->GetAcceptLanguages());
+ const std::string languages(client()->GetAcceptLanguages());
for (SearchSuggestionParser::NavigationResults::iterator nav_it =
results->navigation_results.begin();
nav_it != results->navigation_results.end(); ++nav_it) {
@@ -460,8 +463,8 @@ void SearchProvider::LogFetchComplete(bool success, bool is_keyword) {
const TemplateURL* default_url = providers_.GetDefaultProviderURL();
if (!is_keyword && default_url &&
(TemplateURLPrepopulateData::GetEngineType(
- *default_url,
- providers_.template_url_service()->search_terms_data()) ==
+ *default_url,
+ client()->GetTemplateURLService()->search_terms_data()) ==
SEARCH_ENGINE_GOOGLE)) {
const base::TimeDelta elapsed_time =
base::TimeTicks::Now() - time_suggest_request_sent_;
@@ -588,7 +591,7 @@ void SearchProvider::DoHistoryQuery(bool minimal_changes) {
input_.current_page_classification()))
return;
- history::URLDatabase* url_db = client_->GetInMemoryDatabase();
+ history::URLDatabase* url_db = client()->GetInMemoryDatabase();
if (!url_db)
return;
@@ -706,10 +709,10 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const {
// keyword input to a keyword suggest server, if any.)
const TemplateURL* default_url = providers_.GetDefaultProviderURL();
const TemplateURL* keyword_url = providers_.GetKeywordProviderURL();
- return !client_->IsOffTheRecord() && client_->SearchSuggestEnabled() &&
- ((default_url && !default_url->suggestions_url().empty() &&
- !*query_is_private) ||
- (keyword_url && !keyword_url->suggestions_url().empty()));
+ return !client()->IsOffTheRecord() && client()->SearchSuggestEnabled() &&
+ ((default_url && !default_url->suggestions_url().empty() &&
+ !*query_is_private) ||
+ (keyword_url && !keyword_url->suggestions_url().empty()));
}
bool SearchProvider::IsQueryPotentionallyPrivate() const {
@@ -842,32 +845,32 @@ scoped_ptr<net::URLFetcher> SearchProvider::CreateSuggestFetcher(
}
GURL suggest_url(template_url->suggestions_url_ref().ReplaceSearchTerms(
search_term_args,
- providers_.template_url_service()->search_terms_data()));
+ client()->GetTemplateURLService()->search_terms_data()));
if (!suggest_url.is_valid())
return NULL;
// Send the current page URL if user setting and URL requirements are met and
// the user is in the field trial.
+ TemplateURLService* template_url_service = client()->GetTemplateURLService();
if (CanSendURL(input.current_url(), suggest_url, template_url,
input.current_page_classification(),
- template_url_service_->search_terms_data(), client_) &&
+ template_url_service->search_terms_data(), client()) &&
OmniboxFieldTrial::InZeroSuggestAfterTypingFieldTrial()) {
search_term_args.current_page_url = input.current_url().spec();
// Create the suggest URL again with the current page URL.
suggest_url = GURL(template_url->suggestions_url_ref().ReplaceSearchTerms(
- search_term_args,
- providers_.template_url_service()->search_terms_data()));
+ search_term_args, template_url_service->search_terms_data()));
}
LogOmniboxSuggestRequest(REQUEST_SENT);
scoped_ptr<net::URLFetcher> fetcher =
net::URLFetcher::Create(id, suggest_url, net::URLFetcher::GET, this);
- fetcher->SetRequestContext(client_->GetRequestContext());
+ fetcher->SetRequestContext(client()->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(), client_->IsOffTheRecord(), false, &headers);
+ fetcher->GetOriginalURL(), client()->IsOffTheRecord(), false, &headers);
fetcher->SetExtraRequestHeaders(headers.ToString());
fetcher->Start();
return fetcher;
@@ -1185,8 +1188,8 @@ SearchProvider::ScoreHistoryResultsHelper(const HistoryResults& results,
if (!base_prevent_inline_autocomplete && !found_what_you_typed_match &&
scored_results.front().relevance() >= 1200) {
AutocompleteMatch match;
- client_->Classify(scored_results.front().suggestion(), false, false,
- input_.current_page_classification(), &match, NULL);
+ client()->Classify(scored_results.front().suggestion(), false, false,
+ input_.current_page_classification(), &match, NULL);
// Demote this match that would normally be interpreted as a URL to have
// the highest score a previously-issued search query could have when
// scoring with the non-aggressive method. A consequence of demoting
@@ -1397,7 +1400,7 @@ AutocompleteMatch SearchProvider::NavigationToMatch(
const net::FormatUrlTypes format_types =
net::kFormatUrlOmitAll & ~(trim_http ? 0 : net::kFormatUrlOmitHTTP);
- const std::string languages(client_->GetAcceptLanguages());
+ const std::string languages(client()->GetAcceptLanguages());
size_t inline_autocomplete_offset = (prefix == NULL) ?
base::string16::npos : (match_start + input.length());
match.fill_into_edit +=
@@ -1406,7 +1409,7 @@ AutocompleteMatch SearchProvider::NavigationToMatch(
net::FormatUrl(navigation.url(), languages, format_types,
net::UnescapeRule::SPACES, NULL, NULL,
&inline_autocomplete_offset),
- client_->GetSchemeClassifier());
+ client()->GetSchemeClassifier());
// Preserve the forced query '?' prefix in |match.fill_into_edit|.
// Otherwise, user edits to a suggestion would show non-Search results.
if (input_.type() == metrics::OmniboxInputType::FORCED_QUERY) {
@@ -1435,8 +1438,8 @@ AutocompleteMatch SearchProvider::NavigationToMatch(
!navigation.received_after_last_keystroke() &&
(match.inline_autocompletion.empty() ||
(!input_.prevent_inline_autocomplete() && !trimmed_whitespace));
- match.EnsureUWYTIsAllowedToBeDefault(
- input_.canonicalized_url(), providers_.template_url_service());
+ match.EnsureUWYTIsAllowedToBeDefault(input_.canonicalized_url(),
+ client()->GetTemplateURLService());
match.contents = navigation.match_contents();
match.contents_class = navigation.match_contents_class();
diff --git a/components/omnibox/search_provider.h b/components/omnibox/search_provider.h
index 1c63368..fc5b900 100644
--- a/components/omnibox/search_provider.h
+++ b/components/omnibox/search_provider.h
@@ -55,8 +55,7 @@ class SearchProvider : public BaseSearchProvider,
public net::URLFetcherDelegate {
public:
SearchProvider(AutocompleteProviderClient* client,
- AutocompleteProviderListener* listener,
- TemplateURLService* template_url_service);
+ AutocompleteProviderListener* listener);
// Extracts the suggest response metadata which SearchProvider previously
// stored for |match|.
diff --git a/components/omnibox/shortcuts_provider.cc b/components/omnibox/shortcuts_provider.cc
index fd51148..fe6a048 100644
--- a/components/omnibox/shortcuts_provider.cc
+++ b/components/omnibox/shortcuts_provider.cc
@@ -38,6 +38,7 @@ class DestinationURLEqualsURL {
bool operator()(const AutocompleteMatch& match) const {
return match.destination_url == url_;
}
+
private:
const GURL url_;
};
@@ -74,7 +75,7 @@ void ShortcutsProvider::Start(const AutocompleteInput& input,
if (input.text().length() < 6) {
base::TimeTicks end_time = base::TimeTicks::Now();
std::string name = "ShortcutsProvider.QueryIndexTime." +
- base::IntToString(input.text().size());
+ base::IntToString(input.text().size());
base::HistogramBase* counter = base::Histogram::FactoryGet(
name, 1, 1000, 50, base::Histogram::kUmaTargetedHistogramFlag);
counter->Add(static_cast<int>((end_time - start_time).InMilliseconds()));
@@ -128,7 +129,7 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) {
int max_relevance;
if (!OmniboxFieldTrial::ShortcutsScoringMaxRelevance(
- input.current_page_classification(), &max_relevance))
+ input.current_page_classification(), &max_relevance))
max_relevance = kShortcutsProviderDefaultMaxRelevance;
TemplateURLService* template_url_service = client_->GetTemplateURLService();
const base::string16 fixed_up_input(FixupUserInput(input).second);
@@ -140,8 +141,8 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) {
// Don't return shortcuts with zero relevance.
int relevance = CalculateScore(term_string, it->second, max_relevance);
if (relevance) {
- matches_.push_back(ShortcutToACMatch(it->second, relevance, input,
- fixed_up_input));
+ matches_.push_back(
+ ShortcutToACMatch(it->second, relevance, input, fixed_up_input));
matches_.back().ComputeStrippedDestinationURL(template_url_service);
}
}
@@ -151,7 +152,8 @@ void ShortcutsProvider::GetMatches(const AutocompleteInput& input) {
AutocompleteResult::DedupMatchesByDestination(
input.current_page_classification(), false, &matches_);
// Find best matches.
- std::partial_sort(matches_.begin(),
+ std::partial_sort(
+ matches_.begin(),
matches_.begin() +
std::min(AutocompleteProvider::kMaxMatches, matches_.size()),
matches_.end(), &AutocompleteMatch::MoreRelevant);
@@ -233,10 +235,10 @@ AutocompleteMatch ShortcutsProvider::ShortcutToACMatch(
const base::string16 term_string = base::i18n::ToLower(input.text());
WordMap terms_map(CreateWordMapForString(term_string));
if (!terms_map.empty()) {
- match.contents_class = ClassifyAllMatchesInString(term_string, terms_map,
- match.contents, match.contents_class);
- match.description_class = ClassifyAllMatchesInString(term_string, terms_map,
- match.description, match.description_class);
+ match.contents_class = ClassifyAllMatchesInString(
+ term_string, terms_map, match.contents, match.contents_class);
+ match.description_class = ClassifyAllMatchesInString(
+ term_string, terms_map, match.description, match.description_class);
}
return match;
}
@@ -332,8 +334,8 @@ ACMatchClassifications ShortcutsProvider::ClassifyAllMatchesInString(
if (match_class.back().offset == last_position)
match_class.pop_back();
- AutocompleteMatch::AddLastClassificationIfNecessary(&match_class,
- last_position, ACMatchClassification::MATCH);
+ AutocompleteMatch::AddLastClassificationIfNecessary(
+ &match_class, last_position, ACMatchClassification::MATCH);
if (word_end < text_lowercase.length()) {
match_class.push_back(
ACMatchClassification(word_end, ACMatchClassification::NONE));
@@ -348,9 +350,9 @@ ACMatchClassifications ShortcutsProvider::ClassifyAllMatchesInString(
return AutocompleteMatch::MergeClassifications(original_class, match_class);
}
-ShortcutsBackend::ShortcutMap::const_iterator
- ShortcutsProvider::FindFirstMatch(const base::string16& keyword,
- ShortcutsBackend* backend) {
+ShortcutsBackend::ShortcutMap::const_iterator ShortcutsProvider::FindFirstMatch(
+ const base::string16& keyword,
+ ShortcutsBackend* backend) {
DCHECK(backend);
ShortcutsBackend::ShortcutMap::const_iterator it =
backend->shortcuts_map().lower_bound(keyword);
@@ -375,15 +377,16 @@ int ShortcutsProvider::CalculateScore(
// directly. This makes sense since the first characters typed are much more
// important for determining how likely it is a user wants a particular
// shortcut than are the remaining continued characters.
- double base_score = max_relevance *
- sqrt(static_cast<double>(terms.length()) / shortcut.text.length());
+ double base_score = max_relevance * sqrt(static_cast<double>(terms.length()) /
+ shortcut.text.length());
// Then we decay this by half each week.
const double kLn2 = 0.6931471805599453;
base::TimeDelta time_passed = base::Time::Now() - shortcut.last_access_time;
// Clamp to 0 in case time jumps backwards (e.g. due to DST).
- double decay_exponent = std::max(0.0, kLn2 * static_cast<double>(
- time_passed.InMicroseconds()) / base::Time::kMicrosecondsPerWeek);
+ double decay_exponent =
+ std::max(0.0, kLn2 * static_cast<double>(time_passed.InMicroseconds()) /
+ base::Time::kMicrosecondsPerWeek);
// We modulate the decay factor based on how many times the shortcut has been
// used. Newly created shortcuts decay at full speed; otherwise, decaying by
@@ -391,10 +394,11 @@ int ShortcutsProvider::CalculateScore(
// (1.0 / each 5 additional hits), up to a maximum of 5x as long.
const double kMaxDecaySpeedDivisor = 5.0;
const double kNumUsesPerDecaySpeedDivisorIncrement = 5.0;
- double decay_divisor = std::min(kMaxDecaySpeedDivisor,
+ double decay_divisor = std::min(
+ kMaxDecaySpeedDivisor,
(shortcut.number_of_hits + kNumUsesPerDecaySpeedDivisorIncrement - 1) /
- kNumUsesPerDecaySpeedDivisorIncrement);
+ kNumUsesPerDecaySpeedDivisorIncrement);
return static_cast<int>((base_score / exp(decay_exponent / decay_divisor)) +
- 0.5);
+ 0.5);
}
diff --git a/components/omnibox/shortcuts_provider.h b/components/omnibox/shortcuts_provider.h
index a37fb3a..ccc53dc 100644
--- a/components/omnibox/shortcuts_provider.h
+++ b/components/omnibox/shortcuts_provider.h
@@ -20,9 +20,8 @@ class ShortcutsProviderTest;
// from previously selected suggestions. The more often a user selects a
// suggestion for a given search term the higher will be that suggestion's
// ranking for future uses of that search term.
-class ShortcutsProvider
- : public AutocompleteProvider,
- public ShortcutsBackend::ShortcutsBackendObserver {
+class ShortcutsProvider : public AutocompleteProvider,
+ public ShortcutsBackend::ShortcutsBackendObserver {
public:
explicit ShortcutsProvider(AutocompleteProviderClient* client);
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
index 553c8f6..5c35d78 100644
--- a/components/search_engines/template_url.cc
+++ b/components/search_engines/template_url.cc
@@ -207,7 +207,7 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::
// TemplateURLRef -------------------------------------------------------------
-TemplateURLRef::TemplateURLRef(TemplateURL* owner, Type type)
+TemplateURLRef::TemplateURLRef(const TemplateURL* owner, Type type)
: owner_(owner),
type_(type),
index_in_owner_(0),
@@ -221,7 +221,7 @@ TemplateURLRef::TemplateURLRef(TemplateURL* owner, Type type)
DCHECK_NE(INDEXED, type_);
}
-TemplateURLRef::TemplateURLRef(TemplateURL* owner, size_t index_in_owner)
+TemplateURLRef::TemplateURLRef(const TemplateURL* owner, size_t index_in_owner)
: owner_(owner),
type_(INDEXED),
index_in_owner_(index_in_owner),
@@ -1331,13 +1331,12 @@ const std::string& TemplateURL::GetURL(size_t index) const {
bool TemplateURL::ExtractSearchTermsFromURL(
const GURL& url,
const SearchTermsData& search_terms_data,
- base::string16* search_terms) {
+ base::string16* search_terms) const {
return FindSearchTermsInURL(url, search_terms_data, search_terms, NULL, NULL);
}
-bool TemplateURL::IsSearchURL(
- const GURL& url,
- const SearchTermsData& search_terms_data) {
+bool TemplateURL::IsSearchURL(const GURL& url,
+ const SearchTermsData& search_terms_data) const {
base::string16 search_terms;
return ExtractSearchTermsFromURL(url, search_terms_data, &search_terms) &&
!search_terms.empty();
@@ -1494,7 +1493,7 @@ bool TemplateURL::FindSearchTermsInURL(
const SearchTermsData& search_terms_data,
base::string16* search_terms,
url::Parsed::ComponentType* search_term_component,
- url::Component* search_terms_position) {
+ url::Component* search_terms_position) const {
DCHECK(search_terms);
search_terms->clear();
diff --git a/components/search_engines/template_url.h b/components/search_engines/template_url.h
index 393c20f..73006be 100644
--- a/components/search_engines/template_url.h
+++ b/components/search_engines/template_url.h
@@ -201,8 +201,8 @@ class TemplateURLRef {
ContextualSearchParams contextual_search_params;
};
- TemplateURLRef(TemplateURL* owner, Type type);
- TemplateURLRef(TemplateURL* owner, size_t index_in_owner);
+ TemplateURLRef(const TemplateURL* owner, Type type);
+ TemplateURLRef(const TemplateURL* owner, size_t index_in_owner);
~TemplateURLRef();
// Returns the raw URL. None of the parameters will have been replaced.
@@ -433,7 +433,7 @@ class TemplateURLRef {
PostContent* post_content) const;
// The TemplateURL that contains us. This should outlive us.
- TemplateURL* const owner_;
+ const TemplateURL* const owner_;
// What kind of URL we are.
const Type type_;
@@ -663,12 +663,13 @@ class TemplateURL {
// search term will be "b".
bool ExtractSearchTermsFromURL(const GURL& url,
const SearchTermsData& search_terms_data,
- base::string16* search_terms);
+ base::string16* search_terms) const;
// Returns true if non-empty search terms could be extracted from |url| using
// ExtractSearchTermsFromURL(). In other words, this returns whether |url|
// could be the result of performing a search with |this|.
- bool IsSearchURL(const GURL& url, const SearchTermsData& search_terms_data);
+ bool IsSearchURL(const GURL& url,
+ const SearchTermsData& search_terms_data) const;
// Returns true if the specified |url| contains the search terms replacement
// key in either the query or the ref. This method does not verify anything
@@ -729,7 +730,7 @@ class TemplateURL {
const SearchTermsData& search_terms_data,
base::string16* search_terms,
url::Parsed::ComponentType* search_terms_component,
- url::Component* search_terms_position);
+ url::Component* search_terms_position) const;
TemplateURLData data_;
TemplateURLRef url_ref_;
diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
index 9fee795..f0c4d8e 100644
--- a/components/search_engines/template_url_service.cc
+++ b/components/search_engines/template_url_service.cc
@@ -549,13 +549,18 @@ void TemplateURLService::SetUserSelectedDefaultSearchProvider(
}
TemplateURL* TemplateURLService::GetDefaultSearchProvider() {
- return loaded_ ?
- default_search_provider_ : initial_default_search_provider_.get();
+ return const_cast<TemplateURL*>(
+ static_cast<const TemplateURLService*>(this)->GetDefaultSearchProvider());
+}
+
+const TemplateURL* TemplateURLService::GetDefaultSearchProvider() const {
+ return loaded_ ? default_search_provider_
+ : initial_default_search_provider_.get();
}
bool TemplateURLService::IsSearchResultsPageFromDefaultSearchProvider(
- const GURL& url) {
- TemplateURL* default_provider = GetDefaultSearchProvider();
+ const GURL& url) const {
+ const TemplateURL* default_provider = GetDefaultSearchProvider();
return default_provider &&
default_provider->IsSearchURL(url, search_terms_data());
}
diff --git a/components/search_engines/template_url_service.h b/components/search_engines/template_url_service.h
index bd17246..ccf0db40 100644
--- a/components/search_engines/template_url_service.h
+++ b/components/search_engines/template_url_service.h
@@ -215,11 +215,14 @@ class TemplateURLService : public WebDataServiceConsumer,
// loaded, the default search provider is pulled from preferences.
//
// NOTE: At least in unittest mode, this may return NULL.
+ // TODO(blundell): See if all callers can be converted to take in const
+ // pointers and eliminate this version of the method.
TemplateURL* GetDefaultSearchProvider();
+ const TemplateURL* GetDefaultSearchProvider() const;
// Returns true if the |url| is a search results page from the default search
// provider.
- bool IsSearchResultsPageFromDefaultSearchProvider(const GURL& url);
+ bool IsSearchResultsPageFromDefaultSearchProvider(const GURL& url) const;
// Returns true if the default search is managed through group policy.
bool is_default_search_managed() const {