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

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: init 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 530c6d8930e1792618664a7fd55a7878f823e72d..474c5566a2acf63cb47f4a00805502a998215a50 100644
--- a/chrome/browser/search_engines/template_url_service.cc
+++ b/chrome/browser/search_engines/template_url_service.cc
@@ -591,7 +591,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);
@@ -958,6 +959,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
@@ -1025,6 +1036,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();
}
@@ -2210,3 +2225,8 @@ void TemplateURLService::PatchMissingSyncGUIDs(
}
}
}
+
+void TemplateURLService::AddPreSyncDeletedGUIDForTesting(
+ const std::string& guid) {
+ pre_sync_deletes_.insert(guid);
Peter Kasting 2012/05/15 21:28:10 Why not just do this directly in the test? It has
SteveT 2012/05/16 13:26:43 True. Removed this method.
+}

Powered by Google App Engine
This is Rietveld 408576698