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

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

Issue 9460047: sync: remove use of protobuf extensions in protocol to reduce static init overhead. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nigori access in testserver Created 8 years, 10 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
« no previous file with comments | « chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/testserver/chromiumsync.py
diff --git a/net/tools/testserver/chromiumsync.py b/net/tools/testserver/chromiumsync.py
index b290e503d5062a4f6df260151a83fae2a0cbf59f..165c6e48d9e4f82dead757192ccfd2e964879c05 100755
--- a/net/tools/testserver/chromiumsync.py
+++ b/net/tools/testserver/chromiumsync.py
@@ -37,7 +37,7 @@ import typed_url_specifics_pb2
# An enumeration of the various kinds of data that can be synced.
# Over the wire, this enumeration is not used: a sync object's type is
-# inferred by which EntitySpecifics extension it has. But in the context
+# inferred by which EntitySpecifics field it has. But in the context
# of a program, it is useful to have an enumeration.
ALL_TYPES = (
TOP_LEVEL, # The type of the 'Google Chrome' folder.
@@ -68,24 +68,25 @@ SYNC_ERROR_FREQUENCY = (
# Well-known server tag of the top level 'Google Chrome' folder.
TOP_LEVEL_FOLDER_TAG = 'google_chrome'
-# Given a sync type from ALL_TYPES, find the extension token corresponding
+# Given a sync type from ALL_TYPES, find the FieldDescriptor corresponding
# to that datatype. Note that TOP_LEVEL has no such token.
-SYNC_TYPE_TO_EXTENSION = {
- APP_NOTIFICATION: app_notification_specifics_pb2.app_notification,
- APP_SETTINGS: app_setting_specifics_pb2.app_setting,
- APPS: app_specifics_pb2.app,
- AUTOFILL: autofill_specifics_pb2.autofill,
- AUTOFILL_PROFILE: autofill_specifics_pb2.autofill_profile,
- BOOKMARK: bookmark_specifics_pb2.bookmark,
- EXTENSION_SETTINGS: extension_setting_specifics_pb2.extension_setting,
- EXTENSIONS: extension_specifics_pb2.extension,
- NIGORI: nigori_specifics_pb2.nigori,
- PASSWORD: password_specifics_pb2.password,
- PREFERENCE: preference_specifics_pb2.preference,
- SEARCH_ENGINE: search_engine_specifics_pb2.search_engine,
- SESSION: session_specifics_pb2.session,
- THEME: theme_specifics_pb2.theme,
- TYPED_URL: typed_url_specifics_pb2.typed_url,
+SYNC_TYPE_FIELDS = sync_pb2.EntitySpecifics.DESCRIPTOR.fields_by_name
+SYNC_TYPE_TO_DESCRIPTOR = {
+ APP_NOTIFICATION: SYNC_TYPE_FIELDS['app_notification'],
+ APP_SETTINGS: SYNC_TYPE_FIELDS['app_setting'],
+ APPS: SYNC_TYPE_FIELDS['app'],
+ AUTOFILL: SYNC_TYPE_FIELDS['autofill'],
+ AUTOFILL_PROFILE: SYNC_TYPE_FIELDS['autofill_profile'],
+ BOOKMARK: SYNC_TYPE_FIELDS['bookmark'],
+ EXTENSION_SETTINGS: SYNC_TYPE_FIELDS['extension_setting'],
+ EXTENSIONS: SYNC_TYPE_FIELDS['extension'],
+ NIGORI: SYNC_TYPE_FIELDS['nigori'],
+ PASSWORD: SYNC_TYPE_FIELDS['password'],
+ PREFERENCE: SYNC_TYPE_FIELDS['preference'],
+ SEARCH_ENGINE: SYNC_TYPE_FIELDS['search_engine'],
+ SESSION: SYNC_TYPE_FIELDS['session'],
+ THEME: SYNC_TYPE_FIELDS['theme'],
+ TYPED_URL: SYNC_TYPE_FIELDS['typed_url'],
}
# The parent ID used to indicate a top-level node.
@@ -99,8 +100,8 @@ class Error(Exception):
"""Error class for this module."""
-class ProtobufExtensionNotUnique(Error):
- """An entry should not have more than one protobuf extension present."""
+class ProtobufDataTypeFieldNotUnique(Error):
+ """An entry should not have more than one data type present."""
class DataTypeIdNotRecognized(Error):
@@ -143,7 +144,8 @@ def GetEntryType(entry):
An enum value from ALL_TYPES if the entry's type can be determined, or None
if the type cannot be determined.
Raises:
- ProtobufExtensionNotUnique: More than one type was indicated by the entry.
+ ProtobufDataTypeFieldNotUnique: More than one type was indicated by
+ the entry.
"""
if entry.server_defined_unique_tag == TOP_LEVEL_FOLDER_TAG:
return TOP_LEVEL
@@ -154,14 +156,14 @@ def GetEntryType(entry):
# If there is more than one, either there's a bug, or else the caller
# should use GetEntryTypes.
if len(entry_types) > 1:
- raise ProtobufExtensionNotUnique
+ raise ProtobufDataTypeFieldNotUnique
return entry_types[0]
def GetEntryTypesFromSpecifics(specifics):
- """Determine the sync types indicated by an EntitySpecifics's extension(s).
+ """Determine the sync types indicated by an EntitySpecifics's field(s).
- If the specifics have more than one recognized extension (as commonly
+ If the specifics have more than one recognized data type field (as commonly
happens with the requested_types field of GetUpdatesMessage), all types
will be returned. Callers must handle the possibility of the returned
value having more than one item.
@@ -173,20 +175,20 @@ def GetEntryTypesFromSpecifics(specifics):
A list of the sync types (values from ALL_TYPES) associated with each
recognized extension of the specifics message.
"""
- return [data_type for data_type, extension
- in SYNC_TYPE_TO_EXTENSION.iteritems()
- if specifics.HasExtension(extension)]
+ return [data_type for data_type, field_descriptor
+ in SYNC_TYPE_TO_DESCRIPTOR.iteritems()
+ if specifics.HasField(field_descriptor.name)]
def SyncTypeToProtocolDataTypeId(data_type):
"""Convert from a sync type (python enum) to the protocol's data type id."""
- return SYNC_TYPE_TO_EXTENSION[data_type].number
+ return SYNC_TYPE_TO_DESCRIPTOR[data_type].number
def ProtocolDataTypeIdToSyncType(protocol_data_type_id):
"""Convert from the protocol's data type id to a sync type (python enum)."""
- for data_type, protocol_extension in SYNC_TYPE_TO_EXTENSION.iteritems():
- if protocol_extension.number == protocol_data_type_id:
+ for data_type, field_descriptor in SYNC_TYPE_TO_DESCRIPTOR.iteritems():
+ if field_descriptor.number == protocol_data_type_id:
return data_type
raise DataTypeIdNotRecognized
@@ -201,15 +203,15 @@ def DataTypeStringToSyncTypeLoose(data_type_string):
if data_type_string.isdigit():
return ProtocolDataTypeIdToSyncType(int(data_type_string))
name = data_type_string.lower().rstrip('s')
- for data_type, protocol_extension in SYNC_TYPE_TO_EXTENSION.iteritems():
- if protocol_extension.name.lower().rstrip('s') == name:
+ for data_type, field_descriptor in SYNC_TYPE_TO_DESCRIPTOR.iteritems():
+ if field_descriptor.name.lower().rstrip('s') == name:
return data_type
raise DataTypeIdNotRecognized
def SyncTypeToString(data_type):
"""Formats a sync type enum (from ALL_TYPES) to a human-readable string."""
- return SYNC_TYPE_TO_EXTENSION[data_type].name
+ return SYNC_TYPE_TO_DESCRIPTOR[data_type].name
def CallerInfoToString(caller_info_source):
@@ -241,11 +243,11 @@ def ShortDatatypeListSummary(data_types):
def GetDefaultEntitySpecifics(data_type):
- """Get an EntitySpecifics having a sync type's default extension value."""
+ """Get an EntitySpecifics having a sync type's default field value."""
specifics = sync_pb2.EntitySpecifics()
- if data_type in SYNC_TYPE_TO_EXTENSION:
- extension_handle = SYNC_TYPE_TO_EXTENSION[data_type]
- specifics.Extensions[extension_handle].SetInParent()
+ if data_type in SYNC_TYPE_TO_DESCRIPTOR:
+ descriptor_handle = SYNC_TYPE_TO_DESCRIPTOR[data_type]
ncarter (slow) 2012/02/28 18:45:09 Drop the "_handle." Just "descriptor." It's cleane
tim (not reviewing) 2012/03/01 22:07:02 Done.
+ getattr(specifics, descriptor_handle.name).SetInParent()
return specifics
@@ -916,12 +918,10 @@ class SyncDataModel(object):
nigori_tag = "google_chrome_nigori"
nigori_original = self._entries.get(self._ServerTagToId(nigori_tag))
- if (nigori_original.specifics.Extensions[nigori_specifics_pb2.nigori].
- sync_tabs):
+ if (nigori_original.specifics.nigori.sync_tabs):
return
nigori_new = copy.deepcopy(nigori_original)
- nigori_new.specifics.Extensions[nigori_specifics_pb2.nigori].sync_tabs = (
- True)
+ nigori_new.specifics.nigori.sync_tabs = True
self._SaveEntry(nigori_new)
def SetInducedError(self, error, error_frequency,
« no previous file with comments | « chrome/browser/webdata/autofill_profile_syncable_service_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698