Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: mojo/public/js/codec.js

Issue 2796253002: Associated Message Validation (Closed)
Patch Set: Remove encode & decode for Associated Interface/Request. Current test only tests validation. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698