Chromium Code Reviews| 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 8500480c9d9e7f746d56fc9fe1dc3940b8b97021..6b23bdab0bf96c7971944c856c89f99bc048ceee 100644 |
| --- a/components/search_engines/template_url_service.cc |
| +++ b/components/search_engines/template_url_service.cc |
| @@ -452,23 +452,18 @@ TemplateURL* TemplateURLService::AddWithOverrides( |
| TemplateURL* TemplateURLService::AddExtensionControlledTURL( |
| std::unique_ptr<TemplateURL> template_url, |
| std::unique_ptr<TemplateURL::AssociatedExtensionInfo> info) { |
| - DCHECK(loaded_); |
| DCHECK(template_url); |
| DCHECK_EQ(kInvalidTemplateURLID, template_url->id()); |
| DCHECK(info); |
| DCHECK_NE(TemplateURL::NORMAL, template_url->type()); |
| DCHECK( |
| !FindTemplateURLForExtension(info->extension_id, template_url->type())); |
| + |
| template_url->extension_info_.swap(info); |
| - KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); |
| TemplateURL* template_url_ptr = AddNoNotify(std::move(template_url), true); |
| - if (template_url_ptr) { |
| - if (template_url_ptr->extension_info_->wants_to_be_default_engine) { |
| - UpdateExtensionDefaultSearchEngine(); |
| - } |
| + if (template_url_ptr) |
| NotifyObservers(); |
| - } |
| return template_url_ptr; |
| } |
| @@ -481,17 +476,13 @@ void TemplateURLService::Remove(TemplateURL* template_url) { |
| void TemplateURLService::RemoveExtensionControlledTURL( |
| const std::string& extension_id, |
| TemplateURL::Type type) { |
| - DCHECK(loaded_); |
| TemplateURL* url = FindTemplateURLForExtension(extension_id, type); |
| if (!url) |
| return; |
| // NULL this out so that we can call RemoveNoNotify. |
| - // UpdateExtensionDefaultSearchEngine will cause it to be reset. |
| if (default_search_provider_ == url) |
| default_search_provider_ = nullptr; |
| - KeywordWebDataService::BatchModeScoper scoper(web_data_service_.get()); |
| RemoveNoNotify(url); |
| - UpdateExtensionDefaultSearchEngine(); |
| NotifyObservers(); |
| } |
| @@ -1940,8 +1931,13 @@ bool TemplateURLService::ApplyDefaultSearchChangeNoMetrics( |
| // default. |
| bool changed = TemplateURL::MatchesData( |
| initial_default_search_provider_.get(), data, search_terms_data()); |
| + TemplateURL::Type initial_engine_type = |
| + (source == DefaultSearchManager::FROM_EXTENSION) |
| + ? TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION |
| + : TemplateURL::NORMAL; |
|
vasilii
2017/02/27 15:20:35
Can here be more options like policy?
Alexander Yashkin
2017/02/27 19:36:03
I think |source| can have DefaultSearchManager::FR
vasilii
2017/02/28 14:59:42
Acknowledged.
|
| initial_default_search_provider_ = |
| - data ? base::MakeUnique<TemplateURL>(*data) : nullptr; |
| + data ? base::MakeUnique<TemplateURL>(*data, initial_engine_type) |
| + : nullptr; |
| default_search_provider_source_ = source; |
| return changed; |
| } |
| @@ -1978,6 +1974,7 @@ bool TemplateURLService::ApplyDefaultSearchChangeNoMetrics( |
| default_search_provider_ = nullptr; |
| } else if (source == DefaultSearchManager::FROM_EXTENSION) { |
| default_search_provider_ = FindMatchingDefaultExtensionTemplateURL(*data); |
| + DCHECK(default_search_provider_); |
| } else if (source == DefaultSearchManager::FROM_FALLBACK) { |
| default_search_provider_ = |
| FindPrepopulatedTemplateURL(data->prepopulate_id); |
| @@ -2487,25 +2484,3 @@ TemplateURL* TemplateURLService::FindMatchingDefaultExtensionTemplateURL( |
| } |
| return nullptr; |
| } |
| - |
| -void TemplateURLService::UpdateExtensionDefaultSearchEngine() { |
| - TemplateURL* most_recently_intalled_default = nullptr; |
| - for (const auto& turl : template_urls_) { |
| - if ((turl->type() == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION) && |
| - turl->extension_info_->wants_to_be_default_engine && |
| - turl->SupportsReplacement(search_terms_data()) && |
| - (!most_recently_intalled_default || |
| - (most_recently_intalled_default->extension_info_->install_time < |
| - turl->extension_info_->install_time))) |
| - most_recently_intalled_default = turl.get(); |
| - } |
| - |
| - if (most_recently_intalled_default) { |
| - base::AutoReset<DefaultSearchChangeOrigin> change_origin( |
| - &dsp_change_origin_, DSP_CHANGE_OVERRIDE_SETTINGS_EXTENSION); |
| - default_search_manager_.SetExtensionControlledDefaultSearchEngine( |
| - most_recently_intalled_default->data()); |
| - } else { |
| - default_search_manager_.ClearExtensionControlledDefaultSearchEngine(); |
| - } |
| -} |