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 65a7581695de8fc197a9cda0a25a8e6655f70d18..245c622d4a14e6c7c1ea2c7e5d449101abe7648c 100644 |
| --- a/components/search_engines/template_url_service.cc |
| +++ b/components/search_engines/template_url_service.cc |
| @@ -2210,6 +2210,14 @@ bool TemplateURLService::IsLocalTemplateURLBetter( |
| local_turl== GetDefaultSearchProvider(); |
| } |
| +bool TemplateURLService::IsLocalPrepopulatedTemplateURLBetter( |
| + const TemplateURL* local_turl, |
| + const TemplateURL* sync_turl) { |
| + DCHECK(GetTemplateURLForGUID(local_turl->sync_guid())); |
| + return local_turl->last_modified() > sync_turl->last_modified() || |
| + local_turl->created_by_policy(); |
| +} |
| + |
| void TemplateURLService::ResolveSyncKeywordConflict( |
| TemplateURL* unapplied_sync_turl, |
| TemplateURL* applied_sync_turl, |
| @@ -2264,6 +2272,29 @@ void TemplateURLService::MergeInSyncTemplateURL( |
| FindNonExtensionTemplateURLForKeyword(sync_turl->keyword()); |
| bool should_add_sync_turl = true; |
| + if (!conflicting_turl) { |
|
Peter Kasting
2016/06/14 19:21:26
Nit: Just move the body of this conditional onto t
Patrick Noland
2016/06/14 22:55:24
Done.
|
| + TemplateURL* conflicting_prepopulated_turl = |
|
Peter Kasting
2016/06/14 19:21:26
Nit: Consider a comment up here that summarizes th
Nicolas Zea
2016/06/14 21:19:44
Seconded. This is fairly subtle, so would be good
Patrick Noland
2016/06/14 22:55:24
Done.
|
| + FindPrepopulatedTemplateURL(sync_turl->prepopulate_id()); |
| + |
| + if (conflicting_prepopulated_turl && |
| + !IsFromSync(conflicting_prepopulated_turl, sync_data) && |
| + !IsLocalPrepopulatedTemplateURLBetter(conflicting_prepopulated_turl, |
| + sync_turl)) { |
| + std::string guid = conflicting_prepopulated_turl->sync_guid(); |
| + if (conflicting_prepopulated_turl == default_search_provider_) { |
| + ApplyDefaultSearchChange(&sync_turl->data(), |
|
Nicolas Zea
2016/06/14 21:19:44
Why don't we remove the conflicting prepopulated t
Patrick Noland
2016/06/14 22:55:24
The logic in ApplyDefaultSearchChange effectively
|
| + DefaultSearchManager::FROM_USER); |
| + merge_result->set_num_items_modified( |
| + merge_result->num_items_modified() + 1); |
| + } else { |
| + Remove(conflicting_prepopulated_turl); |
| + merge_result->set_num_items_deleted(merge_result->num_items_deleted() + |
|
Peter Kasting
2016/06/14 19:21:26
Nit: Break after ( instead
Patrick Noland
2016/06/14 22:55:24
Done.
|
| + 1); |
| + } |
| + local_data->erase(guid); |
| + } |
|
Nicolas Zea
2016/06/14 21:19:44
To be clear, in the else clause here we're explici
Patrick Noland
2016/06/14 22:55:24
Yes. I've added a comment to this effect. The like
|
| + } |
| + |
| // If there was no TemplateURL in the local model that conflicts with |
| // |sync_turl|, skip the following preparation steps and just add |sync_turl| |
| // directly. Otherwise, modify |conflicting_turl| to make room for |