Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 define("mojo/public/js/codec", [ | 5 define("mojo/public/js/codec", [ |
| 6 "mojo/public/js/buffer", | 6 "mojo/public/js/buffer", |
| 7 "mojo/public/js/interface_types", | 7 "mojo/public/js/interface_types", |
| 8 "mojo/public/js/lib/interface_endpoint_handle", | |
| 8 "mojo/public/js/unicode", | 9 "mojo/public/js/unicode", |
| 9 ], function(buffer, types, unicode) { | 10 ], function(buffer, types, interfaceEndpointHandle, unicode) { |
| 10 | 11 |
| 11 var kErrorUnsigned = "Passing negative value to unsigned"; | 12 var kErrorUnsigned = "Passing negative value to unsigned"; |
| 12 var kErrorArray = "Passing non Array for array type"; | 13 var kErrorArray = "Passing non Array for array type"; |
| 13 var kErrorString = "Passing non String for string type"; | 14 var kErrorString = "Passing non String for string type"; |
| 14 var kErrorMap = "Passing non Map for map type"; | 15 var kErrorMap = "Passing non Map for map type"; |
| 16 var InterfaceEndpointHandle = interfaceEndpointHandle.InterfaceEndpointHandle; | |
| 15 | 17 |
| 16 // Memory ------------------------------------------------------------------- | 18 // Memory ------------------------------------------------------------------- |
| 17 | 19 |
| 18 var kAlignment = 8; | 20 var kAlignment = 8; |
| 19 | 21 |
| 20 function align(size) { | 22 function align(size) { |
| 21 return size + (kAlignment - (size % kAlignment)) % kAlignment; | 23 return size + (kAlignment - (size % kAlignment)) % kAlignment; |
| 22 } | 24 } |
| 23 | 25 |
| 24 function isAligned(offset) { | 26 function isAligned(offset) { |
| 25 return offset >= 0 && (offset % kAlignment) === 0; | 27 return offset >= 0 && (offset % kAlignment) === 0; |
| 26 } | 28 } |
| 27 | 29 |
| 28 // Constants ---------------------------------------------------------------- | 30 // Constants ---------------------------------------------------------------- |
| 29 | 31 |
| 30 var kArrayHeaderSize = 8; | 32 var kArrayHeaderSize = 8; |
| 31 var kStructHeaderSize = 8; | 33 var kStructHeaderSize = 8; |
| 32 var kMessageHeaderSize = 24; | 34 var kMessageHeaderSize = 24; |
| 33 var kMessageWithRequestIDHeaderSize = 32; | 35 var kMessageWithRequestIDHeaderSize = 32; |
|
yzshen1
2017/04/11 06:23:11
Please change kMessageHeaderSize and kMessageWithR
wangjimmy
2017/04/12 00:26:17
Done.
| |
| 36 var kMessageV2HeaderSize = 48; | |
| 34 var kMapStructPayloadSize = 16; | 37 var kMapStructPayloadSize = 16; |
| 35 | 38 |
| 36 var kStructHeaderNumBytesOffset = 0; | 39 var kStructHeaderNumBytesOffset = 0; |
| 37 var kStructHeaderVersionOffset = 4; | 40 var kStructHeaderVersionOffset = 4; |
| 38 | 41 |
| 39 var kEncodedInvalidHandleValue = 0xFFFFFFFF; | 42 var kEncodedInvalidHandleValue = 0xFFFFFFFF; |
| 40 | 43 |
| 41 // Decoder ------------------------------------------------------------------ | 44 // Decoder ------------------------------------------------------------------ |
| 42 | 45 |
| 43 function Decoder(buffer, handles, base) { | 46 function Decoder(buffer, handles, base) { |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 450 }; | 453 }; |
| 451 | 454 |
| 452 Message.prototype.getFlags = function() { | 455 Message.prototype.getFlags = function() { |
| 453 return this.buffer.getUint32(kMessageFlagsOffset); | 456 return this.buffer.getUint32(kMessageFlagsOffset); |
| 454 }; | 457 }; |
| 455 | 458 |
| 456 Message.prototype.getInterfaceId = function() { | 459 Message.prototype.getInterfaceId = function() { |
| 457 return this.buffer.getUint32(kMessageInterfaceIdOffset); | 460 return this.buffer.getUint32(kMessageInterfaceIdOffset); |
| 458 }; | 461 }; |
| 459 | 462 |
| 463 Message.prototype.getPayloadInterfaceIds = function() { | |
| 464 if (this.getHeaderVersion() < 2) { | |
| 465 throw new Error( | |
| 466 "Version of message does not support payload interface ids."); | |
| 467 } | |
| 468 | |
| 469 var messageV2PayloadInterfaceIdsPointer = kMessageV2HeaderSize - 8; | |
|
yzshen1
2017/04/11 06:23:11
Please consider defining kMessagePayloadInterfaceI
wangjimmy
2017/04/12 00:26:17
Done.
| |
| 470 var decoder = new Decoder(this.buffer, this.handles, | |
| 471 messageV2PayloadInterfaceIdsPointer); | |
| 472 var payloadInterfaceIds = decoder.decodeArrayPointer(Uint32); | |
| 473 return payloadInterfaceIds; | |
| 474 }; | |
| 475 | |
| 460 Message.prototype.isResponse = function() { | 476 Message.prototype.isResponse = function() { |
| 461 return (this.getFlags() & kMessageIsResponse) != 0; | 477 return (this.getFlags() & kMessageIsResponse) != 0; |
| 462 }; | 478 }; |
| 463 | 479 |
| 464 Message.prototype.expectsResponse = function() { | 480 Message.prototype.expectsResponse = function() { |
| 465 return (this.getFlags() & kMessageExpectsResponse) != 0; | 481 return (this.getFlags() & kMessageExpectsResponse) != 0; |
| 466 }; | 482 }; |
| 467 | 483 |
| 468 Message.prototype.setRequestID = function(requestID) { | 484 Message.prototype.setRequestID = function(requestID) { |
| 469 // TODO(darin): Verify that space was reserved for this field! | 485 // TODO(darin): Verify that space was reserved for this field! |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 831 encoder.encodeHandle(interfacePtrInfo.handle); | 847 encoder.encodeHandle(interfacePtrInfo.handle); |
| 832 encoder.writeUint32(interfacePtrInfo.version); | 848 encoder.writeUint32(interfacePtrInfo.version); |
| 833 }; | 849 }; |
| 834 | 850 |
| 835 function NullableInterface(cls) { | 851 function NullableInterface(cls) { |
| 836 Interface.call(this, cls); | 852 Interface.call(this, cls); |
| 837 } | 853 } |
| 838 | 854 |
| 839 NullableInterface.prototype = Object.create(Interface.prototype); | 855 NullableInterface.prototype = Object.create(Interface.prototype); |
| 840 | 856 |
| 857 function AssociatedInterfacePtrInfo() { | |
| 858 } | |
| 859 | |
| 860 AssociatedInterfacePtrInfo.prototype.encodedSize = 8; | |
| 861 | |
| 862 function NullableAssociatedInterfacePtrInfo() { | |
| 863 } | |
| 864 | |
| 865 NullableAssociatedInterfacePtrInfo.encodedSize = | |
| 866 AssociatedInterfacePtrInfo.encodedSize; | |
| 867 | |
| 868 NullableAssociatedInterfacePtrInfo.decode = | |
| 869 AssociatedInterfacePtrInfo.decode; | |
|
yzshen1
2017/04/11 06:23:11
Where are the definition of the decode/encode func
wangjimmy
2017/04/12 00:26:17
Done. Removed the Nullable encode/decode for Assoc
| |
| 870 | |
| 871 NullableAssociatedInterfacePtrInfo.encode = | |
| 872 AssociatedInterfacePtrInfo.encode; | |
| 873 | |
| 841 function InterfaceRequest() { | 874 function InterfaceRequest() { |
| 842 } | 875 } |
| 843 | 876 |
| 844 InterfaceRequest.encodedSize = 4; | 877 InterfaceRequest.encodedSize = 4; |
| 845 | 878 |
| 846 InterfaceRequest.decode = function(decoder) { | 879 InterfaceRequest.decode = function(decoder) { |
| 847 return new types.InterfaceRequest(decoder.decodeHandle()); | 880 return new types.InterfaceRequest(decoder.decodeHandle()); |
| 848 }; | 881 }; |
| 849 | 882 |
| 850 InterfaceRequest.encode = function(encoder, val) { | 883 InterfaceRequest.encode = function(encoder, val) { |
| 851 encoder.encodeHandle(val ? val.handle : null); | 884 encoder.encodeHandle(val ? val.handle : null); |
| 852 }; | 885 }; |
| 853 | 886 |
| 854 function NullableInterfaceRequest() { | 887 function NullableInterfaceRequest() { |
| 855 } | 888 } |
| 856 | 889 |
| 857 NullableInterfaceRequest.encodedSize = InterfaceRequest.encodedSize; | 890 NullableInterfaceRequest.encodedSize = InterfaceRequest.encodedSize; |
| 858 | 891 |
| 859 NullableInterfaceRequest.decode = InterfaceRequest.decode; | 892 NullableInterfaceRequest.decode = InterfaceRequest.decode; |
| 860 | 893 |
| 861 NullableInterfaceRequest.encode = InterfaceRequest.encode; | 894 NullableInterfaceRequest.encode = InterfaceRequest.encode; |
| 862 | 895 |
| 896 function AssociatedInterfaceRequest() { | |
| 897 } | |
| 898 | |
| 899 AssociatedInterfaceRequest.encodedSize = 4; | |
| 900 | |
| 901 function NullableAssociatedInterfaceRequest() { | |
| 902 } | |
| 903 | |
| 904 NullableAssociatedInterfaceRequest.encodedSize = | |
| 905 AssociatedInterfaceRequest.encodedSize; | |
| 906 | |
| 907 NullableAssociatedInterfaceRequest.decode = | |
| 908 AssociatedInterfaceRequest.decode; | |
| 909 | |
| 910 NullableAssociatedInterfaceRequest.encode = | |
| 911 AssociatedInterfaceRequest.encode; | |
| 912 | |
| 863 function MapOf(keyClass, valueClass) { | 913 function MapOf(keyClass, valueClass) { |
| 864 this.keyClass = keyClass; | 914 this.keyClass = keyClass; |
| 865 this.valueClass = valueClass; | 915 this.valueClass = valueClass; |
| 866 } | 916 } |
| 867 | 917 |
| 868 MapOf.prototype.encodedSize = 8; | 918 MapOf.prototype.encodedSize = 8; |
| 869 | 919 |
| 870 MapOf.prototype.decode = function(decoder) { | 920 MapOf.prototype.decode = function(decoder) { |
| 871 return decoder.decodeMapPointer(this.keyClass, this.valueClass); | 921 return decoder.decodeMapPointer(this.keyClass, this.valueClass); |
| 872 }; | 922 }; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 887 exports.Message = Message; | 937 exports.Message = Message; |
| 888 exports.MessageBuilder = MessageBuilder; | 938 exports.MessageBuilder = MessageBuilder; |
| 889 exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; | 939 exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; |
| 890 exports.MessageReader = MessageReader; | 940 exports.MessageReader = MessageReader; |
| 891 exports.kArrayHeaderSize = kArrayHeaderSize; | 941 exports.kArrayHeaderSize = kArrayHeaderSize; |
| 892 exports.kMapStructPayloadSize = kMapStructPayloadSize; | 942 exports.kMapStructPayloadSize = kMapStructPayloadSize; |
| 893 exports.kStructHeaderSize = kStructHeaderSize; | 943 exports.kStructHeaderSize = kStructHeaderSize; |
| 894 exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue; | 944 exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue; |
| 895 exports.kMessageHeaderSize = kMessageHeaderSize; | 945 exports.kMessageHeaderSize = kMessageHeaderSize; |
| 896 exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; | 946 exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; |
| 947 exports.kMessageV2HeaderSize = kMessageV2HeaderSize; | |
| 897 exports.kMessageExpectsResponse = kMessageExpectsResponse; | 948 exports.kMessageExpectsResponse = kMessageExpectsResponse; |
| 898 exports.kMessageIsResponse = kMessageIsResponse; | 949 exports.kMessageIsResponse = kMessageIsResponse; |
| 899 exports.Int8 = Int8; | 950 exports.Int8 = Int8; |
| 900 exports.Uint8 = Uint8; | 951 exports.Uint8 = Uint8; |
| 901 exports.Int16 = Int16; | 952 exports.Int16 = Int16; |
| 902 exports.Uint16 = Uint16; | 953 exports.Uint16 = Uint16; |
| 903 exports.Int32 = Int32; | 954 exports.Int32 = Int32; |
| 904 exports.Uint32 = Uint32; | 955 exports.Uint32 = Uint32; |
| 905 exports.Int64 = Int64; | 956 exports.Int64 = Int64; |
| 906 exports.Uint64 = Uint64; | 957 exports.Uint64 = Uint64; |
| 907 exports.Float = Float; | 958 exports.Float = Float; |
| 908 exports.Double = Double; | 959 exports.Double = Double; |
| 909 exports.String = String; | 960 exports.String = String; |
| 910 exports.Enum = Enum; | 961 exports.Enum = Enum; |
| 911 exports.NullableString = NullableString; | 962 exports.NullableString = NullableString; |
| 912 exports.PointerTo = PointerTo; | 963 exports.PointerTo = PointerTo; |
| 913 exports.NullablePointerTo = NullablePointerTo; | 964 exports.NullablePointerTo = NullablePointerTo; |
| 914 exports.ArrayOf = ArrayOf; | 965 exports.ArrayOf = ArrayOf; |
| 915 exports.NullableArrayOf = NullableArrayOf; | 966 exports.NullableArrayOf = NullableArrayOf; |
| 916 exports.PackedBool = PackedBool; | 967 exports.PackedBool = PackedBool; |
| 917 exports.Handle = Handle; | 968 exports.Handle = Handle; |
| 918 exports.NullableHandle = NullableHandle; | 969 exports.NullableHandle = NullableHandle; |
| 919 exports.Interface = Interface; | 970 exports.Interface = Interface; |
| 920 exports.NullableInterface = NullableInterface; | 971 exports.NullableInterface = NullableInterface; |
| 921 exports.InterfaceRequest = InterfaceRequest; | 972 exports.InterfaceRequest = InterfaceRequest; |
| 922 exports.NullableInterfaceRequest = NullableInterfaceRequest; | 973 exports.NullableInterfaceRequest = NullableInterfaceRequest; |
| 974 exports.AssociatedInterfacePtrInfo = AssociatedInterfacePtrInfo; | |
| 975 exports.NullableAssociatedInterfacePtrInfo = | |
| 976 NullableAssociatedInterfacePtrInfo; | |
| 977 exports.AssociatedInterfaceRequest = AssociatedInterfaceRequest; | |
| 978 exports.NullableAssociatedInterfaceRequest = | |
| 979 NullableAssociatedInterfaceRequest; | |
| 923 exports.MapOf = MapOf; | 980 exports.MapOf = MapOf; |
| 924 exports.NullableMapOf = NullableMapOf; | 981 exports.NullableMapOf = NullableMapOf; |
| 925 return exports; | 982 return exports; |
| 926 }); | 983 }); |
| OLD | NEW |