diff options
Diffstat (limited to 'net/tools/testserver/chromiumsync.py')
-rwxr-xr-x | net/tools/testserver/chromiumsync.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/tools/testserver/chromiumsync.py b/net/tools/testserver/chromiumsync.py index 62d1bf7..b678238 100755 --- a/net/tools/testserver/chromiumsync.py +++ b/net/tools/testserver/chromiumsync.py @@ -487,6 +487,18 @@ class SyncDataModel(object): # batch, even if that item was filtered out. return (batch[-1].version, filtered, len(new_changes) - len(batch)) + def _CopyOverImmutableFields(self, entry): + """Preserve immutable fields by copying pre-commit state. + + Args: + entry: A sync entity from the client. + """ + if entry.id_string in self._entries: + if self._entries[entry.id_string].HasField( + 'server_defined_unique_tag'): + entry.server_defined_unique_tag = ( + self._entries[entry.id_string].server_defined_unique_tag) + def _CheckVersionForCommit(self, entry): """Perform an optimistic concurrency check on the version number. @@ -599,6 +611,8 @@ class SyncDataModel(object): if not self._CheckParentIdForCommit(entry): return None + self._CopyOverImmutableFields(entry); + # At this point, the commit is definitely going to happen. # Deletion works by storing a limited record for an entry, called a |