Index: mojo/public/js/codec.js |
diff --git a/mojo/public/js/codec.js b/mojo/public/js/codec.js |
index ce58a8cfd4aea874d6b752d9f8efe47f28268037..e1cc0fe343533ac8947d10a5bc6993769ecb9706 100644 |
--- a/mojo/public/js/codec.js |
+++ b/mojo/public/js/codec.js |
@@ -5,13 +5,15 @@ |
define("mojo/public/js/codec", [ |
"mojo/public/js/buffer", |
"mojo/public/js/interface_types", |
+ "mojo/public/js/lib/interface_endpoint_handle", |
"mojo/public/js/unicode", |
-], function(buffer, types, unicode) { |
+], function(buffer, types, interfaceEndpointHandle, unicode) { |
var kErrorUnsigned = "Passing negative value to unsigned"; |
var kErrorArray = "Passing non Array for array type"; |
var kErrorString = "Passing non String for string type"; |
var kErrorMap = "Passing non Map for map type"; |
+ var InterfaceEndpointHandle = interfaceEndpointHandle.InterfaceEndpointHandle; |
// Memory ------------------------------------------------------------------- |
@@ -29,12 +31,14 @@ define("mojo/public/js/codec", [ |
var kArrayHeaderSize = 8; |
var kStructHeaderSize = 8; |
- var kMessageHeaderSize = 24; |
- var kMessageWithRequestIDHeaderSize = 32; |
+ var kMessageV0HeaderSize = 24; |
+ var kMessageV1HeaderSize = 32; |
+ var kMessageV2HeaderSize = 48; |
var kMapStructPayloadSize = 16; |
var kStructHeaderNumBytesOffset = 0; |
var kStructHeaderVersionOffset = 4; |
+ var kMessagePayloadInterfaceIdsPointerOffset = kMessageV2HeaderSize - 8; |
yzshen1
2017/04/12 00:50:33
Please move this line to be below line 434
wangjimmy
2017/04/12 18:58:25
Done.
|
var kEncodedInvalidHandleValue = 0xFFFFFFFF; |
@@ -457,6 +461,17 @@ define("mojo/public/js/codec", [ |
return this.buffer.getUint32(kMessageInterfaceIdOffset); |
}; |
+ Message.prototype.getPayloadInterfaceIds = function() { |
+ if (this.getHeaderVersion() < 2) { |
+ return null; |
+ } |
+ |
+ var decoder = new Decoder(this.buffer, this.handles, |
+ kMessagePayloadInterfaceIdsPointerOffset); |
+ var payloadInterfaceIds = decoder.decodeArrayPointer(Uint32); |
+ return payloadInterfaceIds; |
+ }; |
+ |
Message.prototype.isResponse = function() { |
return (this.getFlags() & kMessageIsResponse) != 0; |
}; |
@@ -480,11 +495,11 @@ define("mojo/public/js/codec", [ |
function MessageBuilder(messageName, payloadSize) { |
// Currently, we don't compute the payload size correctly ahead of time. |
// Instead, we resize the buffer at the end. |
- var numberOfBytes = kMessageHeaderSize + payloadSize; |
+ var numberOfBytes = kMessageV0HeaderSize + payloadSize; |
this.buffer = new buffer.Buffer(numberOfBytes); |
this.handles = []; |
- var encoder = this.createEncoder(kMessageHeaderSize); |
- encoder.writeUint32(kMessageHeaderSize); |
+ var encoder = this.createEncoder(kMessageV0HeaderSize); |
+ encoder.writeUint32(kMessageV0HeaderSize); |
encoder.writeUint32(0); // version. |
encoder.writeUint32(0); // interface ID. |
encoder.writeUint32(messageName); |
@@ -518,11 +533,11 @@ define("mojo/public/js/codec", [ |
requestID) { |
// Currently, we don't compute the payload size correctly ahead of time. |
// Instead, we resize the buffer at the end. |
- var numberOfBytes = kMessageWithRequestIDHeaderSize + payloadSize; |
+ var numberOfBytes = kMessageV1HeaderSize + payloadSize; |
this.buffer = new buffer.Buffer(numberOfBytes); |
this.handles = []; |
- var encoder = this.createEncoder(kMessageWithRequestIDHeaderSize); |
- encoder.writeUint32(kMessageWithRequestIDHeaderSize); |
+ var encoder = this.createEncoder(kMessageV1HeaderSize); |
+ encoder.writeUint32(kMessageV1HeaderSize); |
encoder.writeUint32(1); // version. |
encoder.writeUint32(0); // interface ID. |
encoder.writeUint32(messageName); |
@@ -838,6 +853,17 @@ define("mojo/public/js/codec", [ |
NullableInterface.prototype = Object.create(Interface.prototype); |
+ function AssociatedInterfacePtrInfo() { |
+ } |
+ |
+ AssociatedInterfacePtrInfo.prototype.encodedSize = 8; |
+ |
+ function NullableAssociatedInterfacePtrInfo() { |
+ } |
+ |
+ NullableAssociatedInterfacePtrInfo.encodedSize = |
+ AssociatedInterfacePtrInfo.encodedSize; |
+ |
function InterfaceRequest() { |
} |
@@ -860,6 +886,17 @@ define("mojo/public/js/codec", [ |
NullableInterfaceRequest.encode = InterfaceRequest.encode; |
+ function AssociatedInterfaceRequest() { |
+ } |
+ |
+ AssociatedInterfaceRequest.encodedSize = 4; |
+ |
+ function NullableAssociatedInterfaceRequest() { |
+ } |
+ |
+ NullableAssociatedInterfaceRequest.encodedSize = |
+ AssociatedInterfaceRequest.encodedSize; |
+ |
function MapOf(keyClass, valueClass) { |
this.keyClass = keyClass; |
this.valueClass = valueClass; |
@@ -892,8 +929,11 @@ define("mojo/public/js/codec", [ |
exports.kMapStructPayloadSize = kMapStructPayloadSize; |
exports.kStructHeaderSize = kStructHeaderSize; |
exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue; |
- exports.kMessageHeaderSize = kMessageHeaderSize; |
- exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; |
+ exports.kMessageV0HeaderSize = kMessageV0HeaderSize; |
+ exports.kMessageV1HeaderSize = kMessageV1HeaderSize; |
+ exports.kMessageV2HeaderSize = kMessageV2HeaderSize; |
+ exports.kMessagePayloadInterfaceIdsPointerOffset = |
yzshen1
2017/04/12 00:50:33
Is it necessary to export this value?
wangjimmy
2017/04/12 18:58:25
Yes, I use it as the offset for validateArrayPoint
|
+ kMessagePayloadInterfaceIdsPointerOffset; |
exports.kMessageExpectsResponse = kMessageExpectsResponse; |
exports.kMessageIsResponse = kMessageIsResponse; |
exports.Int8 = Int8; |
@@ -920,6 +960,12 @@ define("mojo/public/js/codec", [ |
exports.NullableInterface = NullableInterface; |
exports.InterfaceRequest = InterfaceRequest; |
exports.NullableInterfaceRequest = NullableInterfaceRequest; |
+ exports.AssociatedInterfacePtrInfo = AssociatedInterfacePtrInfo; |
+ exports.NullableAssociatedInterfacePtrInfo = |
+ NullableAssociatedInterfacePtrInfo; |
+ exports.AssociatedInterfaceRequest = AssociatedInterfaceRequest; |
+ exports.NullableAssociatedInterfaceRequest = |
+ NullableAssociatedInterfaceRequest; |
exports.MapOf = MapOf; |
exports.NullableMapOf = NullableMapOf; |
return exports; |