Index: chrome/browser/search_engines/template_url_service.h |
diff --git a/chrome/browser/search_engines/template_url_service.h b/chrome/browser/search_engines/template_url_service.h |
index b4641ea67072c6e68c73ed5d6d4f44170193faa9..b89bd62127b4b91f4317824f58b3023c7d082238 100644 |
--- a/chrome/browser/search_engines/template_url_service.h |
+++ b/chrome/browser/search_engines/template_url_service.h |
@@ -352,17 +352,11 @@ class TemplateURLService : public WebDataServiceConsumer, |
CreateTemplateURLFromSyncData); |
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, UniquifyKeyword); |
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, |
- SyncKeywordConflictNeitherAutoreplace); |
+ ResolveSyncKeywordConflict); |
+ FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, PreSyncDeletes); |
FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, |
- SyncKeywordConflictBothAutoreplace); |
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, |
- SyncKeywordConflictOneAutoreplace); |
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, |
- FindDuplicateOfSyncTemplateURL); |
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, |
- MergeSyncAndLocalURLDuplicates); |
- FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, |
- PreSyncDeletes); |
+ IsLocalTemplateURLBetter); |
+ FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceSyncTest, MergeInSyncTemplateURL); |
friend class TemplateURLServiceTestUtil; |
@@ -532,49 +526,46 @@ class TemplateURLService : public WebDataServiceConsumer, |
// execute the special character appending functionality. |
string16 UniquifyKeyword(const TemplateURL& turl, bool force); |
- // Given a TemplateURL from Sync (cloud) and a local, non-extension |
- // TemplateURL with the same keyword, selects "better" and "worse" entries: |
- // * If one of the TemplateURLs is replaceable and the other is not, the |
- // non-replaceable entry is better. |
- // * Otherwise, if |local_turl| was created by policy, is the default |
- // provider, or was modified more recently, it is better. |
- // * Otherwise |sync_turl| is better. |
- // Then resolves the conflict: |
- // * If the "worse" entry is |sync_turl|, and it is replaceable, add a |
- // syncer::SyncChange to delete it, and return false. |
- // * If the "worse" entry is |local_turl|, and it is replaceable, remove it |
- // from the service and return true. |
- // * Otherwise, uniquify the keyword of the "worse" entry. If it is |
- // |local_turl|, update it within the service. Add a SyncChange to update |
- // things (always for |sync_turl|, sometimes for |local_turl|; see |
- // comments in implementation), and return true. |
- // When the function returns true, callers can then go ahead and add or update |
- // |sync_turl| within the service. If it returns false, callers must not add |
- // the |sync_turl|, and must Remove() the |sync_turl| if it was being updated. |
- // (Be careful; calling Remove() could add an ACTION_DELETE sync change, which |
- // this function has already done. Make sure to avoid duplicates.) |
- // |
- // Note that we never call this for conflicts with extension keywords because |
- // other code (e.g. AddToMaps()) is responsible for correctly prioritizing |
- // extension- vs. non-extension-based TemplateURLs with the same keyword. |
- bool ResolveSyncKeywordConflict(TemplateURL* sync_turl, |
- TemplateURL* local_turl, |
+ // Returns true iff |local_turl| is considered "better" than |sync_turl| for |
+ // the purposes of resolving conflicts. |local_turl| must be a TemplateURL |
+ // known to the local model (though it may already be synced), and |sync_turl| |
+ // is a new TemplateURL known to Sync but not yet known to the local model. |
+ // The criteria for if |local_turl| is better than |sync_turl| is whether any |
+ // of the following are true: |
+ // * |local_turl|'s last_modified timestamp is newer than sync_turl. |
+ // * |local_turl| is created by policy. |
+ // * |local_turl| is the local default search provider. |
+ bool IsLocalTemplateURLBetter(const TemplateURL* local_turl, |
+ const TemplateURL* sync_turl); |
+ |
+ // Given two synced TemplateURLs with a conflicting keyword, one of which |
+ // needs to be added to or updated in the local model (|unapplied_sync_turl|) |
+ // and one which is already known to the local model (|applied_sync_turl|), |
+ // prepares the local model so that |unapplied_sync_turl| can be added to it, |
+ // or applied as an update to an existing TemplateURL. |
+ // Since both entries are known to Sync and one of their keywords will change, |
+ // an ACTION_UPDATE will be appended to |change_list| to reflect this change. |
+ // Note that |applied_sync_turl| must not be an extension keyword. |
+ void ResolveSyncKeywordConflict(TemplateURL* unapplied_sync_turl, |
+ TemplateURL* applied_sync_turl, |
syncer::SyncChangeList* change_list); |
- // Returns a TemplateURL from the service that has the same keyword and search |
- // URL as |sync_turl|, if it exists. |
- TemplateURL* FindDuplicateOfSyncTemplateURL(const TemplateURL& sync_turl); |
- |
- // Given a TemplateURL from the cloud and a local matching duplicate found by |
- // FindDuplicateOfSyncTemplateURL, merges the two. If |sync_turl| is newer, |
- // this replaces |local_turl| with |sync_turl| using the service's Remove and |
- // Add. If |local_turl| is newer, this replaces |sync_turl| with |local_turl| |
- // through through adding appropriate SyncChanges to |change_list|. This |
- // method takes ownership of |sync_turl|, and adds it to the model if it is |
- // newer, so the caller must release it if need be. |
- void MergeSyncAndLocalURLDuplicates(TemplateURL* sync_turl, |
- TemplateURL* local_turl, |
- syncer::SyncChangeList* change_list); |
+ // Adds |sync_turl| into the local model, possibly removing or updating a |
+ // local TemplateURL to make room for it. This expects |sync_turl| to be a new |
+ // entry from Sync, not currently known to the local model. |sync_data| should |
+ // be a SyncDataMap where the contents are entries initially known to Sync |
+ // during MergeDataAndStartSyncing. |
+ // Any necessary updates to Sync will be appended to |change_list|. This can |
+ // include updates on local TemplateURLs, if they are found in |sync_data|. |
+ // |initial_data| should be a SyncDataMap of the entries known to the local |
+ // model during MergeDataAndStartSyncing. If |sync_turl| replaces a local |
+ // entry, that entry is removed from |initial_data| to prevent it from being |
+ // sent up to Sync. |
+ // This should only be called from MergeDataAndStartSyncing. |
+ void MergeInSyncTemplateURL(TemplateURL* sync_turl, |
+ const SyncDataMap& sync_data, |
+ syncer::SyncChangeList* change_list, |
+ SyncDataMap* local_data); |
// Checks a newly added TemplateURL from Sync by its sync_guid and sets it as |
// the default search provider if we were waiting for it. |