Index: third_party/mojo/src/mojo/public/python/mojo_bindings/descriptor.py |
diff --git a/third_party/mojo/src/mojo/public/python/mojo_bindings/descriptor.py b/third_party/mojo/src/mojo/public/python/mojo_bindings/descriptor.py |
index 69c409f0d21a55b016f54e234bd1d9623e45b50a..efba73de693ab3ac28ea1aadbb8d64a61b5782e2 100644 |
--- a/third_party/mojo/src/mojo/public/python/mojo_bindings/descriptor.py |
+++ b/third_party/mojo/src/mojo/public/python/mojo_bindings/descriptor.py |
@@ -314,12 +314,19 @@ class InterfaceType(BaseHandleType): |
def Serialize(self, value, data_offset, data, handle_offset): |
(encoded_handle, handles) = super(InterfaceType, self).Serialize( |
value, data_offset, data, handle_offset) |
- # Set the version field to 0 for now. |
- return ((encoded_handle, 0), handles) |
+ if encoded_handle == -1: |
+ version = 0 |
+ else: |
+ version = self.interface.manager.version |
+ if value and isinstance(value, reflection.InterfaceProxy): |
+ version = value.manager.version |
+ return ((encoded_handle, version), handles) |
def Deserialize(self, value, context): |
- # Ignore the version field for now. |
- return super(InterfaceType, self).Deserialize(value[0], context) |
+ proxy = super(InterfaceType, self).Deserialize(value[0], context) |
+ if proxy: |
+ proxy.manager.version = value[1] |
+ return proxy |
def FromHandle(self, handle): |
if handle.IsValid(): |
@@ -534,8 +541,8 @@ class MapType(SerializableType): |
'__module__': __name__, |
'DESCRIPTOR': { |
'fields': [ |
- SingleFieldGroup('keys', MapType._GetArrayType(key_type), 0, 1), |
- SingleFieldGroup('values', MapType._GetArrayType(value_type), 1, 2), |
+ SingleFieldGroup('keys', MapType._GetArrayType(key_type), 0, 0), |
+ SingleFieldGroup('values', MapType._GetArrayType(value_type), 1, 0), |
], |
} |
} |