| 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..0be22bc8a57730c5ae421fa844503681a4f823cf 100644
|
| --- a/components/search_engines/template_url_service.cc
|
| +++ b/components/search_engines/template_url_service.cc
|
| @@ -678,6 +678,7 @@ void TemplateURLService::RepairPrepopulatedSearchEngines() {
|
| base::AutoReset<DefaultSearchChangeOrigin> change_origin(
|
| &dsp_change_origin_, DSP_CHANGE_PROFILE_RESET);
|
|
|
| + DefaultSearchManager::Source old_source = default_search_provider_source_;
|
| default_search_manager_.ClearUserSelectedDefaultSearchEngine();
|
|
|
| if (!default_search_provider_) {
|
| @@ -692,7 +693,16 @@ void TemplateURLService::RepairPrepopulatedSearchEngines() {
|
| // ApplyDefaultSearchChange will notify observers once it is done.
|
| ApplyDefaultSearchChange(new_dse, source);
|
| } else {
|
| - NotifyObservers();
|
| + if (old_source == DefaultSearchManager::FROM_USER &&
|
| + default_search_provider_source_ ==
|
| + DefaultSearchManager::FROM_FALLBACK) {
|
| + // Set fallback engine as user selected, because repair is considered user
|
| + // action and new engine is expected to sync to other user devices.
|
| + default_search_manager_.SetUserSelectedDefaultSearchEngine(
|
| + default_search_provider_->data());
|
| + } else {
|
| + NotifyObservers();
|
| + }
|
| }
|
| }
|
|
|
| @@ -1937,6 +1947,9 @@ bool TemplateURLService::ApplyDefaultSearchChangeNoMetrics(
|
| source == DefaultSearchManager::FROM_POLICY ? data : nullptr);
|
| }
|
|
|
| + // Set new DSE source as current before calling UpdateNoNotify below which
|
| + // is checking it to update user selected engine.
|
| + default_search_provider_source_ = source;
|
| if (!data) {
|
| default_search_provider_ = nullptr;
|
| } else if (source == DefaultSearchManager::FROM_EXTENSION) {
|
| @@ -1987,11 +2000,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();
|
|
|