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

Unified Diff: chrome/browser/search/instant_service.cc

Issue 268643002: Use the DefaultSearchManager as the exclusive authority on DSE, ignoring Web Data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix the KeywordEditorControllerTest. Created 6 years, 8 months 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/search/instant_service.cc
diff --git a/chrome/browser/search/instant_service.cc b/chrome/browser/search/instant_service.cc
index db35dd1dde93270be835ef9abac6cd8852c7a72a..583ece345b577e95d015aa55c0fbad29deb54c6e 100644
--- a/chrome/browser/search/instant_service.cc
+++ b/chrome/browser/search/instant_service.cc
@@ -70,11 +70,19 @@ RGBAColor SkColorToRGBAColor(const SkColor& sKColor) {
InstantService::InstantService(Profile* profile)
: profile_(profile),
omnibox_start_margin_(chrome::kDisableStartMargin),
- weak_ptr_factory_(this) {
+ weak_ptr_factory_(this),
+ current_search_result_prefetch_base_url_(
+ chrome::GetSearchResultPrefetchBaseURL(profile_)),
+ default_search_engine_watcher_(this) {
// Stub for unit tests.
if (!BrowserThread::CurrentlyOn(BrowserThread::UI))
return;
+ TemplateURLService* template_url_service =
+ TemplateURLServiceFactory::GetForProfile(profile_);
+ if (template_url_service)
+ template_url_service->AddObserver(&default_search_engine_watcher_);
+
ResetInstantSearchPrerenderer();
registrar_.Add(this,
@@ -126,12 +134,6 @@ InstantService::InstantService(Profile* profile)
profile_, new suggestions::SuggestionsSource(profile_));
}
- profile_pref_registrar_.Init(profile_->GetPrefs());
- profile_pref_registrar_.Add(
- prefs::kDefaultSearchProviderID,
- base::Bind(&InstantService::OnDefaultSearchProviderChanged,
- base::Unretained(this)));
-
registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED,
content::Source<Profile>(profile_->GetOriginalProfile()));
}
@@ -200,6 +202,15 @@ void InstantService::UpdateMostVisitedItemsInfo() {
NotifyAboutMostVisitedItems();
}
+InstantService::DefaultSearchEngineWatcher::DefaultSearchEngineWatcher(
+ InstantService* outer)
+ : outer_(outer) {
+}
+
+void InstantService::DefaultSearchEngineWatcher::OnTemplateURLServiceChanged() {
+ outer_->OnTemplateURLServiceChanged();
+}
+
void InstantService::Shutdown() {
process_ids_.clear();
@@ -429,9 +440,7 @@ void InstantService::OnGoogleURLUpdated(
FOR_EACH_OBSERVER(InstantServiceObserver, observers_, GoogleURLUpdated());
}
-void InstantService::OnDefaultSearchProviderChanged(
- const std::string& pref_name) {
- DCHECK_EQ(pref_name, std::string(prefs::kDefaultSearchProviderID));
+void InstantService::OnTemplateURLServiceChanged() {
const TemplateURL* template_url = TemplateURLServiceFactory::GetForProfile(
profile_)->GetDefaultSearchProvider();
if (!template_url) {
@@ -442,6 +451,13 @@ void InstantService::OnDefaultSearchProviderChanged(
// could cause that, neither of which we support.
return;
}
+ GURL new_search_result_prefetch_base_url(
+ chrome::GetSearchResultPrefetchBaseURL(profile_));
+ if (new_search_result_prefetch_base_url ==
+ current_search_result_prefetch_base_url_)
+ return;
+ current_search_result_prefetch_base_url_ =
+ new_search_result_prefetch_base_url;
ResetInstantSearchPrerenderer();
@@ -453,9 +469,10 @@ void InstantService::ResetInstantSearchPrerenderer() {
if (!chrome::ShouldPrefetchSearchResults())
return;
- GURL url(chrome::GetSearchResultPrefetchBaseURL(profile_));
- if (url.is_valid())
- instant_prerenderer_.reset(new InstantSearchPrerenderer(profile_, url));
- else
+ if (current_search_result_prefetch_base_url_.is_valid()) {
+ instant_prerenderer_.reset(new InstantSearchPrerenderer(
+ profile_, current_search_result_prefetch_base_url_));
+ } else {
instant_prerenderer_.reset();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698