Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2024)

Unified Diff: chrome/browser/search_engines/template_url_service.cc

Issue 10384188: Ensure that TemplateURLs removed by prepopulate search engine merging is also removed from Sync. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: removed AddPreSyncDeletedGUIDForTesting; test empty set; merge to TOT Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/search_engines/template_url_service.cc
diff --git a/chrome/browser/search_engines/template_url_service.cc b/chrome/browser/search_engines/template_url_service.cc
index de092471b2ad301cc0b379ba48d798140b406770..27e123c4f8bf0c85e6ba30efa578a1ebaaaec25c 100644
--- a/chrome/browser/search_engines/template_url_service.cc
+++ b/chrome/browser/search_engines/template_url_service.cc
@@ -613,7 +613,8 @@ void TemplateURLService::OnWebDataServiceRequestDone(
TemplateURL* default_search_provider = NULL;
int new_resource_keyword_version = 0;
GetSearchProvidersUsingKeywordResult(*result, service_.get(), profile_,
- &template_urls, &default_search_provider, &new_resource_keyword_version);
+ &template_urls, &default_search_provider, &new_resource_keyword_version,
+ &pre_sync_deletes_);
bool database_specified_a_default = (default_search_provider != NULL);
@@ -979,6 +980,16 @@ SyncError TemplateURLService::MergeDataAndStartSyncing(
if (!sync_turl.get())
continue;
+ if (pre_sync_deletes_.find(sync_turl->sync_guid()) !=
+ pre_sync_deletes_.end()) {
+ // This entry was deleted before the initial sync began (possibly through
+ // preprocessing in TemplateURLService's loading code). Ignore it and send
+ // an ACTION_DELETE up to the server.
+ new_changes.push_back(SyncChange(SyncChange::ACTION_DELETE,
+ iter->second));
+ continue;
+ }
+
if (local_turl) {
// This local search engine is already synced. If the timestamp differs
// from Sync, we need to update locally or to the cloud. Note that if the
@@ -1048,6 +1059,10 @@ SyncError TemplateURLService::MergeDataAndStartSyncing(
if (error.IsSet())
return error;
+ // The ACTION_DELETEs from this set are processed. Empty it so we don't try to
+ // reuse them on the next call to MergeDataAndStartSyncing.
+ pre_sync_deletes_.clear();
+
models_associated_ = true;
return SyncError();
}

Powered by Google App Engine
This is Rietveld 408576698