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

Unified Diff: sync/tools/testserver/chromiumsync.py

Issue 143973006: New Sync datatype for Synced Notifications App Info (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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: 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.

Powered by Google App Engine
This is Rietveld 408576698