| Index: components/search_engines/template_url_service.cc
|
| diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc
|
| index 0e77d27379f265169564fc3bb4cf7eff964c7a4f..be5527fc553acb051431dd0a742b3f7a3cf3827c 100644
|
| --- a/components/search_engines/template_url_service.cc
|
| +++ b/components/search_engines/template_url_service.cc
|
| @@ -692,6 +692,23 @@ void TemplateURLService::RepairPrepopulatedSearchEngines() {
|
| // ApplyDefaultSearchChange will notify observers once it is done.
|
| ApplyDefaultSearchChange(new_dse, source);
|
| } else {
|
| + // Set fallback engine as user selected, because repair is considered a user
|
| + // action and we are expected to sync new fallback engine to other devices.
|
| + const TemplateURLData* fallback_engine_data =
|
| + default_search_manager_.GetFallbackSearchEngine();
|
| + if (fallback_engine_data) {
|
| + TemplateURL* fallback_engine =
|
| + FindPrepopulatedTemplateURL(fallback_engine_data->prepopulate_id);
|
| + // The fallback engine is created from built-in/override data that should
|
| + // always have a prepopulate ID, so this engine should always exist after
|
| + // a repair."
|
| + DCHECK(fallback_engine);
|
| + // Write the fallback engine's GUID to prefs, which will cause
|
| + // OnSyncedDefaultSearchProviderGUIDChanged() to set it as the new
|
| + // user-selected engine.
|
| + prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID,
|
| + fallback_engine->sync_guid());
|
| + }
|
| NotifyObservers();
|
| }
|
| }
|
| @@ -1391,7 +1408,7 @@ void TemplateURLService::Init(const Initializer* initializers,
|
| }
|
|
|
| DefaultSearchManager::Source source = DefaultSearchManager::FROM_USER;
|
| - TemplateURLData* dse =
|
| + const TemplateURLData* dse =
|
| default_search_manager_.GetDefaultSearchEngine(&source);
|
| ApplyDefaultSearchChange(dse, source);
|
|
|
| @@ -1937,6 +1954,11 @@ bool TemplateURLService::ApplyDefaultSearchChangeNoMetrics(
|
| source == DefaultSearchManager::FROM_POLICY ? data : nullptr);
|
| }
|
|
|
| + // |default_search_provider_source_| must be set before calling
|
| + // UpdateNoNotify(), since that function needs to know the source of the
|
| + // update in question.
|
| + default_search_provider_source_ = source;
|
| +
|
| if (!data) {
|
| default_search_provider_ = nullptr;
|
| } else if (source == DefaultSearchManager::FROM_EXTENSION) {
|
| @@ -1987,11 +2009,8 @@ bool TemplateURLService::ApplyDefaultSearchChangeNoMetrics(
|
| prefs_->SetString(prefs::kSyncedDefaultSearchProviderGUID,
|
| default_search_provider_->sync_guid());
|
| }
|
| -
|
| }
|
|
|
| - default_search_provider_source_ = source;
|
| -
|
| bool changed = default_search_provider_ != previous_default_search_engine;
|
| if (changed)
|
| RequestGoogleURLTrackerServerCheckIfNecessary();
|
|
|