Chromium Code Reviews| Index: sync/tools/testserver/chromiumsync.py |
| diff --git a/sync/tools/testserver/chromiumsync.py b/sync/tools/testserver/chromiumsync.py |
| index 79eb1147e7bf035c1c1580cfe0ae2995e6b2c4cb..2be4dede72bb703b1949fd45636a3c9b19dcc777 100644 |
| --- a/sync/tools/testserver/chromiumsync.py |
| +++ b/sync/tools/testserver/chromiumsync.py |
| @@ -46,6 +46,7 @@ import password_specifics_pb2 |
| import preference_specifics_pb2 |
| import priority_preference_specifics_pb2 |
| import search_engine_specifics_pb2 |
| +import server_app_info_specifics_pb2 |
| import session_specifics_pb2 |
| import sync_pb2 |
| import sync_enums_pb2 |
| @@ -84,11 +85,12 @@ ALL_TYPES = ( |
| SEARCH_ENGINE, |
| SESSION, |
| SYNCED_NOTIFICATION, |
| + SYNCED_NOTIFICATION_APP_INFO, |
| THEME, |
| TYPED_URL, |
| EXTENSION_SETTINGS, |
| FAVICON_IMAGES, |
| - FAVICON_TRACKING) = range(29) |
| + FAVICON_TRACKING) = range(30) |
| # An enumeration on the frequency at which the server should send errors |
| # to the client. This would be specified by the url that triggers the error. |
| @@ -132,6 +134,7 @@ SYNC_TYPE_TO_DESCRIPTOR = { |
| SEARCH_ENGINE: SYNC_TYPE_FIELDS['search_engine'], |
| SESSION: SYNC_TYPE_FIELDS['session'], |
| SYNCED_NOTIFICATION: SYNC_TYPE_FIELDS["synced_notification"], |
| + SYNCED_NOTIFICATION_APP_INFO:SYNC_TYPE_FIELDS["app_info"], |
| THEME: SYNC_TYPE_FIELDS['theme'], |
| TYPED_URL: SYNC_TYPE_FIELDS['typed_url'], |
| } |
| @@ -545,6 +548,9 @@ class SyncDataModel(object): |
| PermanentItem('google_chrome_synced_notifications', |
| name='Synced Notifications', |
| parent_tag=ROOT_ID, sync_type=SYNCED_NOTIFICATION), |
| + PermanentItem('google_chrome_synced_notification_app_info', |
| + name='Synced Notification App Info', |
| + parent_tag=ROOT_ID, sync_type=SYNCED_NOTIFICATION_APP_INFO), |
| PermanentItem('google_chrome_search_engines', name='Search Engines', |
| parent_tag=ROOT_ID, sync_type=SEARCH_ENGINE), |
| PermanentItem('google_chrome_sessions', name='Sessions', |
| @@ -1224,7 +1230,6 @@ class SyncDataModel(object): |
| return specifics |
| - |
| def _CreateSyncedNotificationClientTag(self, key): |
| """Create the client_defined_unique_tag value for a SyncedNotification. |
| @@ -1240,6 +1245,50 @@ class SyncDataModel(object): |
| hash_input = serialized_type.SerializeToString() + key |
| return base64.b64encode(hashlib.sha1(hash_input).digest()) |
| + def AddAppInfo(self, app_info): |
|
Nicolas Zea
2014/01/22 00:43:39
s/AppInfo/SyncedNotificationAppInfo/g
This kind o
Pete Williamson
2014/01/22 19:51:10
To keep the proto in sync with the server, my plan
Nicolas Zea
2014/01/24 01:39:05
Yeah, I'd prefer only adding this method once it's
Pete Williamson
2014/01/27 18:49:33
OK, method removed, and renamed the protobuf to mo
|
| + """Adds an app info struct to the server data. |
| + |
| + The notification will be delivered to the client on the next GetUpdates |
| + call. |
| + |
| + Args: |
| + app_info: A serialized AppInfo. |
| + |
| + Returns: |
| + The string representation of the added SyncEntity. |
| + |
| + Raises: |
| + ClientNotConnectedError: if the client has not yet connected to this |
| + server |
| + """ |
| + # A unique string used wherever a unique ID for this notification is |
| + # required. |
| + unique_notification_id = str(uuid.uuid4()) |
| + |
| + specifics = self._AppInfoEntitySpecifics( |
| + unique_notification_id, app_info) |
| + |
| + # Create the root SyncEntity representing a single app info protobuf. |
| + entity = sync_pb2.SyncEntity() |
| + entity.specifics.CopyFrom(specifics) |
| + entity.parent_id_string = self._ServerTagToId( |
| + 'google_chrome_synced_notifications_app_info') |
| + entity.name = 'App info added for testing' |
| + entity.server_defined_unique_tag = unique_notification_id |
| + |
| + # Set the version to one more than the greatest version number already seen. |
| + entries = sorted(self._entries.values(), key=operator.attrgetter('version')) |
| + if len(entries) < 1: |
| + raise ClientNotConnectedError |
| + entity.version = entries[-1].version + 1 |
| + |
| + entity.client_defined_unique_tag = entity.id_string |
| + entity.id_string = entity.id_string |
| + |
| + self._entries[entity.id_string] = copy.deepcopy(entity) |
| + |
| + return google.protobuf.text_format.MessageToString(entity) |
| + |
| class TestServer(object): |
| """An object to handle requests for one (and only one) Chrome Sync account. |