Index: chrome/browser/search_engines/template_url_service.cc |
diff --git a/chrome/browser/search_engines/template_url_service.cc b/chrome/browser/search_engines/template_url_service.cc |
index 63cf81f88fab78243cfafb62aa7726cdc7867772..8a28c32d637ccf23ed70b75af0993c0ddd1a89ef 100644 |
--- a/chrome/browser/search_engines/template_url_service.cc |
+++ b/chrome/browser/search_engines/template_url_service.cc |
@@ -714,7 +714,6 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
// initial_default_search_provider_ is only needed before we've finished |
// loading. Now that we've loaded we can nuke it. |
initial_default_search_provider_.reset(); |
- is_default_search_managed_ = false; |
TemplateURLVector template_urls; |
TemplateURL* default_search_provider = NULL; |
@@ -723,6 +722,31 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
&template_urls, &default_search_provider, &new_resource_keyword_version, |
&pre_sync_deletes_); |
+ AddTemplateURLsAndSetupDefaultEngine(&template_urls, default_search_provider); |
+ |
+ // This initializes provider_map_ which should be done before |
+ // calling UpdateKeywordSearchTermsForURL. |
+ ChangeToLoadedState(); |
+ |
+ // Index any visits that occurred before we finished loading. |
+ for (size_t i = 0; i < visits_to_add_.size(); ++i) |
+ UpdateKeywordSearchTermsForURL(visits_to_add_[i]); |
+ visits_to_add_.clear(); |
+ |
+ if (new_resource_keyword_version) |
+ service_->SetBuiltinKeywordVersion(new_resource_keyword_version); |
+ |
+ EnsureDefaultSearchProviderExists(); |
+ |
+ NotifyObservers(); |
+ NotifyLoaded(); |
+} |
+ |
+void TemplateURLService::AddTemplateURLsAndSetupDefaultEngine( |
+ TemplateURLVector* template_urls, |
+ TemplateURL* default_search_provider) { |
+ DCHECK(template_urls); |
+ is_default_search_managed_ = false; |
bool database_specified_a_default = (default_search_provider != NULL); |
// Check if default search provider is now managed. |
@@ -732,14 +756,14 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
// Remove entries that were created because of policy as they may have |
// changed since the database was saved. |
- RemoveProvidersCreatedByPolicy(&template_urls, |
+ RemoveProvidersCreatedByPolicy(template_urls, |
&default_search_provider, |
default_from_prefs.get()); |
- PatchMissingSyncGUIDs(&template_urls); |
+ PatchMissingSyncGUIDs(template_urls); |
if (is_default_search_managed_) { |
- SetTemplateURLs(template_urls); |
+ SetTemplateURLs(*template_urls); |
if (TemplateURLsHaveSamePrefs(default_search_provider, |
default_from_prefs.get())) { |
@@ -760,7 +784,7 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
// Note that this saves the default search provider to prefs. |
if (!default_search_provider || |
(!default_search_provider->IsExtensionKeyword() && |
- default_search_provider->SupportsReplacement())) { |
+ default_search_provider->SupportsReplacement())) { |
bool success = SetDefaultSearchProviderNoNotify(default_search_provider); |
DCHECK(success); |
} |
@@ -772,10 +796,11 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
default_search_provider = synced_default; |
pending_synced_default_search_ = false; |
} else if (database_specified_a_default && |
- default_search_provider == NULL) { |
+ default_search_provider == NULL) { |
UMA_HISTOGRAM_ENUMERATION(kFirstPotentialEngineHistogramName, |
- FIRST_POTENTIAL_CALLSITE_ON_LOAD, FIRST_POTENTIAL_CALLSITE_MAX); |
- default_search_provider = FirstPotentialDefaultEngine(template_urls); |
+ FIRST_POTENTIAL_CALLSITE_ON_LOAD, |
+ FIRST_POTENTIAL_CALLSITE_MAX); |
+ default_search_provider = FirstPotentialDefaultEngine(*template_urls); |
} |
// If the default search provider existed previously, then just |
@@ -786,7 +811,7 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
default_search_provider_ = default_search_provider; |
default_search_provider = NULL; |
} |
- SetTemplateURLs(template_urls); |
+ SetTemplateURLs(*template_urls); |
if (default_search_provider) { |
// Note that this saves the default search provider to prefs. |
@@ -798,21 +823,11 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
SaveDefaultSearchProviderToPrefs(default_search_provider_); |
} |
} |
+} |
- // This initializes provider_map_ which should be done before |
- // calling UpdateKeywordSearchTermsForURL. |
- ChangeToLoadedState(); |
- |
- // Index any visits that occurred before we finished loading. |
- for (size_t i = 0; i < visits_to_add_.size(); ++i) |
- UpdateKeywordSearchTermsForURL(visits_to_add_[i]); |
- visits_to_add_.clear(); |
- |
- if (new_resource_keyword_version) |
- service_->SetBuiltinKeywordVersion(new_resource_keyword_version); |
- |
+void TemplateURLService::EnsureDefaultSearchProviderExists() { |
if (!is_default_search_managed_) { |
- bool has_default_search_provider = default_search_provider_ != NULL && |
+ bool has_default_search_provider = default_search_provider_ && |
default_search_provider_->SupportsReplacement(); |
UMA_HISTOGRAM_BOOLEAN(kHasDSPHistogramName, |
has_default_search_provider); |
@@ -831,9 +846,6 @@ void TemplateURLService::OnWebDataServiceRequestDone( |
TemplateURLPrepopulateData::kMaxPrepopulatedEngineID); |
} |
} |
- |
- NotifyObservers(); |
- NotifyLoaded(); |
} |
string16 TemplateURLService::GetKeywordShortName(const string16& keyword, |
@@ -1586,6 +1598,15 @@ void TemplateURLService::NotifyLoaded() { |
content::NotificationService::NoDetails()); |
} |
+void TemplateURLService::ClearDefaultProviderFromPrefs() { |
Peter Kasting
2013/05/22 21:22:57
Function definition order must match declaration o
vasilii
2013/05/23 17:03:42
Done.
|
+ // We overwrite user preferences. If the default search engine is managed, |
+ // there is no effect. |
+ SaveDefaultSearchProviderToPrefs(NULL); |
+ // Default value for kDefaultSearchProviderEnabled is true. |
+ if (PrefService* prefs = GetPrefs()) |
Peter Kasting
2013/05/22 21:22:57
Nit: Do not use side-effect statements as conditio
vasilii
2013/05/23 17:03:42
Done.
|
+ prefs->SetBoolean(prefs::kDefaultSearchProviderEnabled, true); |
+} |
+ |
void TemplateURLService::SaveDefaultSearchProviderToPrefs( |
const TemplateURL* t_url) { |
PrefService* prefs = GetPrefs(); |
@@ -2497,3 +2518,45 @@ void TemplateURLService::PatchMissingSyncGUIDs( |
} |
} |
} |
+ |
+bool TemplateURLService::ResetNonExtensionURLs() { |
Peter Kasting
2013/05/22 21:22:57
This function never returns false. Why does it re
vasilii
2013/05/23 17:03:42
Done.
|
+ // Can't clean DB if it hasn't been loaded. |
+ DCHECK(loaded()); |
+ TemplateURLVector entries_to_process; |
Peter Kasting
2013/05/22 21:22:57
Nit: In general, this function could do with separ
vasilii
2013/05/23 17:03:42
Done.
|
+ for (TemplateURLVector::const_iterator i = template_urls_.begin(); |
+ i != template_urls_.end(); ++i) { |
+ if (!(**i).IsExtensionKeyword()) |
Peter Kasting
2013/05/22 21:22:57
Nit: (*i)->
vasilii
2013/05/23 17:03:42
Done.
|
+ entries_to_process.push_back(*i); |
+ } |
+ // Clear default provider to be able to delete it. |
+ default_search_provider_ = NULL; |
Peter Kasting
2013/05/22 21:22:57
If the DSP was managed, don't we need to preserve
vasilii
2013/05/23 17:03:42
Yes. It's stored in managed prefs. AddTemplateURLs
Peter Kasting
2013/05/29 04:04:41
OK, good. Consider adding a comment about this he
|
+ // Remove non-extension keywords |
Peter Kasting
2013/05/22 21:22:57
Nit: Trailing period
vasilii
2013/05/23 17:03:42
Done.
|
+ for (TemplateURLVector::const_iterator i = entries_to_process.begin(); |
+ i != entries_to_process.end(); ++i) { |
Peter Kasting
2013/05/22 21:22:57
Nit: No {}
vasilii
2013/05/23 17:03:42
Done.
|
+ RemoveNoNotify(*i); |
+ } |
+ // Store the remaining engines in entries_to_process and merge them with |
+ // prepopulated ones. |
+ entries_to_process.clear(); |
+ entries_to_process.swap(template_urls_); |
+ provider_map_.reset(new SearchHostToURLsMap); |
+ UIThreadSearchTermsData search_terms_data(profile_); |
+ provider_map_->Init(TemplateURLVector(), search_terms_data); |
+ TemplateURL* default_search_provider = NULL; |
+ // This will force to merge prepopulated engines. |
Peter Kasting
2013/05/22 21:22:57
Nit: Grammar (I don't actually know what this sent
vasilii
2013/05/23 17:03:42
Done.
|
+ int new_resource_keyword_version = 0; |
+ GetSearchProvidersUsingLoadedEngines(service_.get(), profile_, |
+ &entries_to_process, |
+ &default_search_provider, |
+ &new_resource_keyword_version, |
+ &pre_sync_deletes_); |
+ // Setup search engines and a default one. |
+ AddTemplateURLsAndSetupDefaultEngine(&entries_to_process, |
+ default_search_provider); |
+ if (new_resource_keyword_version) |
+ service_->SetBuiltinKeywordVersion(new_resource_keyword_version); |
+ // Make sure the default search engine != NULL; |
Peter Kasting
2013/05/22 21:22:57
Nit: This comment adds nothing to the code.
vasilii
2013/05/23 17:03:42
Done.
|
+ EnsureDefaultSearchProviderExists(); |
+ NotifyObservers(); |
+ return true; |
+} |