Chromium Code Reviews| 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, |