summaryrefslogtreecommitdiffstats
path: root/net/tools/testserver/chromiumsync.py
diff options
context:
space:
mode:
Diffstat (limited to 'net/tools/testserver/chromiumsync.py')
-rwxr-xr-xnet/tools/testserver/chromiumsync.py14
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