diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-13 01:43:26 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-13 01:43:26 +0000 |
commit | 33b95c2d2e855dec947ff8e0cce4ece1cac4b1d8 (patch) | |
tree | ff1e263165ccc73ab2fd720c612dc2d3a2fef11c /net/tools/testserver | |
parent | 8ac8863e8fc4153586644e64f2f658d89ba57c30 (diff) | |
download | chromium_src-33b95c2d2e855dec947ff8e0cce4ece1cac4b1d8.zip chromium_src-33b95c2d2e855dec947ff8e0cce4ece1cac4b1d8.tar.gz chromium_src-33b95c2d2e855dec947ff8e0cce4ece1cac4b1d8.tar.bz2 |
[Sync] Add application logic for non-nigori control types.
We introduce logic to apply non-nigori control types. First, we iterate over
any new top level datatype entities, applying those. Then we go through the
rest of the unapplied control datatype updates, applying those. Any conflict
should be just a simple conflict, which we handle by ignoring the local
changes.
Also updates chromiumsync.py to support the new control types (and fixes
the parent folder pattern that was in use).
BUG=122825
Review URL: https://chromiumcodereview.appspot.com/11271009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167280 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/tools/testserver')
-rw-r--r-- | net/tools/testserver/chromiumsync.py | 56 | ||||
-rwxr-xr-x | net/tools/testserver/chromiumsync_test.py | 14 |
2 files changed, 37 insertions, 33 deletions
diff --git a/net/tools/testserver/chromiumsync.py b/net/tools/testserver/chromiumsync.py index 62156b2..92542e3 100644 --- a/net/tools/testserver/chromiumsync.py +++ b/net/tools/testserver/chromiumsync.py @@ -50,6 +50,8 @@ ALL_TYPES = ( AUTOFILL, AUTOFILL_PROFILE, BOOKMARK, + DEVICE_INFO, + EXPERIMENTS, EXTENSIONS, HISTORY_DELETE_DIRECTIVE, NIGORI, @@ -59,7 +61,7 @@ ALL_TYPES = ( SESSION, THEME, TYPED_URL, - EXTENSION_SETTINGS) = range(17) + EXTENSION_SETTINGS) = range(19) # An eumeration on the frequency at which the server should send errors # to the client. This would be specified by the url that triggers the error. @@ -82,6 +84,8 @@ SYNC_TYPE_TO_DESCRIPTOR = { AUTOFILL: SYNC_TYPE_FIELDS['autofill'], AUTOFILL_PROFILE: SYNC_TYPE_FIELDS['autofill_profile'], BOOKMARK: SYNC_TYPE_FIELDS['bookmark'], + DEVICE_INFO: SYNC_TYPE_FIELDS['device_info'], + EXPERIMENTS: SYNC_TYPE_FIELDS['experiments'], EXTENSION_SETTINGS: SYNC_TYPE_FIELDS['extension_setting'], EXTENSIONS: SYNC_TYPE_FIELDS['extension'], HISTORY_DELETE_DIRECTIVE: SYNC_TYPE_FIELDS['history_delete_directive'], @@ -415,10 +419,15 @@ class SyncDataModel(object): # Specify all the permanent items that a model might need. _PERMANENT_ITEM_SPECS = [ - PermanentItem('google_chrome', name='Google Chrome', - parent_tag=ROOT_ID, sync_type=TOP_LEVEL), + PermanentItem('google_chrome_apps', name='Apps', + parent_tag=ROOT_ID, sync_type=APPS), + PermanentItem('google_chrome_app_notifications', name='App Notifications', + parent_tag=ROOT_ID, sync_type=APP_NOTIFICATION), + PermanentItem('google_chrome_app_settings', + name='App Settings', + parent_tag=ROOT_ID, sync_type=APP_SETTINGS), PermanentItem('google_chrome_bookmarks', name='Bookmarks', - parent_tag='google_chrome', sync_type=BOOKMARK), + parent_tag=ROOT_ID, sync_type=BOOKMARK), PermanentItem('bookmark_bar', name='Bookmark Bar', parent_tag='google_chrome_bookmarks', sync_type=BOOKMARK), PermanentItem('synced_bookmarks', name='Mobile Bookmarks', @@ -428,40 +437,37 @@ class SyncDataModel(object): PermanentItem('synced_bookmarks', name='Synced Bookmarks', parent_tag='google_chrome_bookmarks', sync_type=BOOKMARK, create_by_default=False), - PermanentItem('google_chrome_preferences', name='Preferences', - parent_tag='google_chrome', sync_type=PREFERENCE), PermanentItem('google_chrome_autofill', name='Autofill', - parent_tag='google_chrome', sync_type=AUTOFILL), + parent_tag=ROOT_ID, sync_type=AUTOFILL), PermanentItem('google_chrome_autofill_profiles', name='Autofill Profiles', - parent_tag='google_chrome', sync_type=AUTOFILL_PROFILE), - PermanentItem('google_chrome_app_settings', - name='App Settings', - parent_tag='google_chrome', sync_type=APP_SETTINGS), + parent_tag=ROOT_ID, sync_type=AUTOFILL_PROFILE), + PermanentItem('google_chrome_device_info', name='Device Info', + parent_tag=ROOT_ID, sync_type=DEVICE_INFO), + PermanentItem('google_chrome_experiments', name='Experiments', + parent_tag=ROOT_ID, sync_type=EXPERIMENTS), PermanentItem('google_chrome_extension_settings', name='Extension Settings', - parent_tag='google_chrome', sync_type=EXTENSION_SETTINGS), + parent_tag=ROOT_ID, sync_type=EXTENSION_SETTINGS), PermanentItem('google_chrome_extensions', name='Extensions', - parent_tag='google_chrome', sync_type=EXTENSIONS), + parent_tag=ROOT_ID, sync_type=EXTENSIONS), PermanentItem('google_chrome_history_delete_directives', name='History Delete Directives', - parent_tag='google_chrome', + parent_tag=ROOT_ID, sync_type=HISTORY_DELETE_DIRECTIVE), + PermanentItem('google_chrome_nigori', name='Nigori', + parent_tag=ROOT_ID, sync_type=NIGORI), PermanentItem('google_chrome_passwords', name='Passwords', - parent_tag='google_chrome', sync_type=PASSWORD), + parent_tag=ROOT_ID, sync_type=PASSWORD), + PermanentItem('google_chrome_preferences', name='Preferences', + parent_tag=ROOT_ID, sync_type=PREFERENCE), PermanentItem('google_chrome_search_engines', name='Search Engines', - parent_tag='google_chrome', sync_type=SEARCH_ENGINE), + parent_tag=ROOT_ID, sync_type=SEARCH_ENGINE), PermanentItem('google_chrome_sessions', name='Sessions', - parent_tag='google_chrome', sync_type=SESSION), + parent_tag=ROOT_ID, sync_type=SESSION), PermanentItem('google_chrome_themes', name='Themes', - parent_tag='google_chrome', sync_type=THEME), + parent_tag=ROOT_ID, sync_type=THEME), PermanentItem('google_chrome_typed_urls', name='Typed URLs', - parent_tag='google_chrome', sync_type=TYPED_URL), - PermanentItem('google_chrome_nigori', name='Nigori', - parent_tag='google_chrome', sync_type=NIGORI), - PermanentItem('google_chrome_apps', name='Apps', - parent_tag='google_chrome', sync_type=APPS), - PermanentItem('google_chrome_app_notifications', name='App Notifications', - parent_tag='google_chrome', sync_type=APP_NOTIFICATION), + parent_tag=ROOT_ID, sync_type=TYPED_URL), ] def __init__(self): diff --git a/net/tools/testserver/chromiumsync_test.py b/net/tools/testserver/chromiumsync_test.py index e680d41..7a68b40 100755 --- a/net/tools/testserver/chromiumsync_test.py +++ b/net/tools/testserver/chromiumsync_test.py @@ -50,7 +50,8 @@ class SyncDataModelTest(unittest.TestCase): declared_specs.add(spec.tag) unique_datatypes = set([x.sync_type for x in specs]) - self.assertEqual(unique_datatypes, set(chromiumsync.ALL_TYPES), + self.assertEqual(unique_datatypes, + set(chromiumsync.ALL_TYPES[1:]), 'Every sync datatype should have a permanent folder ' 'associated with it') @@ -70,19 +71,17 @@ class SyncDataModelTest(unittest.TestCase): def testCreatePermanentItems(self): self.model._CreateDefaultPermanentItems(chromiumsync.ALL_TYPES) - self.assertEqual(len(chromiumsync.ALL_TYPES) + 2, + self.assertEqual(len(chromiumsync.ALL_TYPES) + 1, len(self.model._entries)) def ExpectedPermanentItemCount(self, sync_type): if sync_type == chromiumsync.BOOKMARK: if self._expect_synced_bookmarks_folder: - return 5 - else: return 4 - elif sync_type == chromiumsync.TOP_LEVEL: - return 1 + else: + return 3 else: - return 2 + return 1 def testGetChangesFromTimestampZeroForEachType(self): all_types = chromiumsync.ALL_TYPES[1:] @@ -96,7 +95,6 @@ class SyncDataModelTest(unittest.TestCase): expected_count = self.ExpectedPermanentItemCount(sync_type) self.assertEqual(expected_count, version) self.assertEqual(expected_count, len(changes)) - self.assertEqual('google_chrome', changes[0].server_defined_unique_tag) for change in changes: self.assertTrue(change.HasField('server_defined_unique_tag')) self.assertEqual(change.version, change.sync_timestamp) |