| 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();
 | 
| 
 |