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

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

Issue 2759563004: Mojo JS bindings: change module loading solution. (Closed)
Patch Set: . Created 3 years, 9 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
« no previous file with comments | « mojo/public/js/new_bindings/buffer.js ('k') | mojo/public/js/new_bindings/connector.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 (function() {
6 "mojo/public/js/buffer", 6 var internal = mojoBindings.internal;
7 "mojo/public/js/interface_types",
8 "mojo/public/js/unicode",
9 ], function(buffer, types, unicode) {
10 7
11 var kErrorUnsigned = "Passing negative value to unsigned"; 8 var kErrorUnsigned = "Passing negative value to unsigned";
12 var kErrorArray = "Passing non Array for array type"; 9 var kErrorArray = "Passing non Array for array type";
13 var kErrorString = "Passing non String for string type"; 10 var kErrorString = "Passing non String for string type";
14 var kErrorMap = "Passing non Map for map type"; 11 var kErrorMap = "Passing non Map for map type";
15 12
16 // Memory ------------------------------------------------------------------- 13 // Memory -------------------------------------------------------------------
17 14
18 var kAlignment = 8; 15 var kAlignment = 8;
19 16
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 128
132 Decoder.prototype.decodeHandle = function() { 129 Decoder.prototype.decodeHandle = function() {
133 return this.handles[this.readUint32()] || null; 130 return this.handles[this.readUint32()] || null;
134 }; 131 };
135 132
136 Decoder.prototype.decodeString = function() { 133 Decoder.prototype.decodeString = function() {
137 var numberOfBytes = this.readUint32(); 134 var numberOfBytes = this.readUint32();
138 var numberOfElements = this.readUint32(); 135 var numberOfElements = this.readUint32();
139 var base = this.next; 136 var base = this.next;
140 this.next += numberOfElements; 137 this.next += numberOfElements;
141 return unicode.decodeUtf8String( 138 return internal.decodeUtf8String(
142 new Uint8Array(this.buffer.arrayBuffer, base, numberOfElements)); 139 new Uint8Array(this.buffer.arrayBuffer, base, numberOfElements));
143 }; 140 };
144 141
145 Decoder.prototype.decodeArray = function(cls) { 142 Decoder.prototype.decodeArray = function(cls) {
146 var numberOfBytes = this.readUint32(); 143 var numberOfBytes = this.readUint32();
147 var numberOfElements = this.readUint32(); 144 var numberOfElements = this.readUint32();
148 var val = new Array(numberOfElements); 145 var val = new Array(numberOfElements);
149 if (cls === PackedBool) { 146 if (cls === PackedBool) {
150 var byte; 147 var byte;
151 for (var i = 0; i < numberOfElements; ++i) { 148 for (var i = 0; i < numberOfElements; ++i) {
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 if (handle) { 304 if (handle) {
308 this.handles.push(handle); 305 this.handles.push(handle);
309 this.writeUint32(this.handles.length - 1); 306 this.writeUint32(this.handles.length - 1);
310 } else { 307 } else {
311 this.writeUint32(kEncodedInvalidHandleValue); 308 this.writeUint32(kEncodedInvalidHandleValue);
312 } 309 }
313 }; 310 };
314 311
315 Encoder.prototype.encodeString = function(val) { 312 Encoder.prototype.encodeString = function(val) {
316 var base = this.next + kArrayHeaderSize; 313 var base = this.next + kArrayHeaderSize;
317 var numberOfElements = unicode.encodeUtf8String( 314 var numberOfElements = internal.encodeUtf8String(
318 val, new Uint8Array(this.buffer.arrayBuffer, base)); 315 val, new Uint8Array(this.buffer.arrayBuffer, base));
319 var numberOfBytes = kArrayHeaderSize + numberOfElements; 316 var numberOfBytes = kArrayHeaderSize + numberOfElements;
320 this.writeUint32(numberOfBytes); 317 this.writeUint32(numberOfBytes);
321 this.writeUint32(numberOfElements); 318 this.writeUint32(numberOfElements);
322 this.next += numberOfElements; 319 this.next += numberOfElements;
323 }; 320 };
324 321
325 Encoder.prototype.encodeArray = 322 Encoder.prototype.encodeArray =
326 function(cls, val, numberOfElements, encodedSize) { 323 function(cls, val, numberOfElements, encodedSize) {
327 if (numberOfElements === undefined) 324 if (numberOfElements === undefined)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 Encoder.prototype.encodeStringPointer = function(val) { 379 Encoder.prototype.encodeStringPointer = function(val) {
383 if (val == null) { 380 if (val == null) {
384 // Also handles undefined, since undefined == null. 381 // Also handles undefined, since undefined == null.
385 this.encodePointer(val); 382 this.encodePointer(val);
386 return; 383 return;
387 } 384 }
388 // Only accepts string primivites, not String Objects like new String("foo") 385 // Only accepts string primivites, not String Objects like new String("foo")
389 if (typeof(val) !== "string") { 386 if (typeof(val) !== "string") {
390 throw new Error(kErrorString); 387 throw new Error(kErrorString);
391 } 388 }
392 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val); 389 var encodedSize = kArrayHeaderSize + internal.utf8Length(val);
393 var encoder = this.createAndEncodeEncoder(encodedSize); 390 var encoder = this.createAndEncodeEncoder(encodedSize);
394 encoder.encodeString(val); 391 encoder.encodeString(val);
395 }; 392 };
396 393
397 Encoder.prototype.encodeMap = function(keyClass, valueClass, val) { 394 Encoder.prototype.encodeMap = function(keyClass, valueClass, val) {
398 var keys = new Array(val.size); 395 var keys = new Array(val.size);
399 var values = new Array(val.size); 396 var values = new Array(val.size);
400 var i = 0; 397 var i = 0;
401 val.forEach(function(value, key) { 398 val.forEach(function(value, key) {
402 values[i] = value; 399 values[i] = value;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 this.buffer.setUint64(kMessageRequestIDOffset, requestID); 463 this.buffer.setUint64(kMessageRequestIDOffset, requestID);
467 }; 464 };
468 465
469 466
470 // MessageBuilder ----------------------------------------------------------- 467 // MessageBuilder -----------------------------------------------------------
471 468
472 function MessageBuilder(messageName, payloadSize) { 469 function MessageBuilder(messageName, payloadSize) {
473 // Currently, we don't compute the payload size correctly ahead of time. 470 // Currently, we don't compute the payload size correctly ahead of time.
474 // Instead, we resize the buffer at the end. 471 // Instead, we resize the buffer at the end.
475 var numberOfBytes = kMessageHeaderSize + payloadSize; 472 var numberOfBytes = kMessageHeaderSize + payloadSize;
476 this.buffer = new buffer.Buffer(numberOfBytes); 473 this.buffer = new internal.Buffer(numberOfBytes);
477 this.handles = []; 474 this.handles = [];
478 var encoder = this.createEncoder(kMessageHeaderSize); 475 var encoder = this.createEncoder(kMessageHeaderSize);
479 encoder.writeUint32(kMessageHeaderSize); 476 encoder.writeUint32(kMessageHeaderSize);
480 encoder.writeUint32(0); // version. 477 encoder.writeUint32(0); // version.
481 encoder.writeUint32(0); // interface ID. 478 encoder.writeUint32(0); // interface ID.
482 encoder.writeUint32(messageName); 479 encoder.writeUint32(messageName);
483 encoder.writeUint32(0); // flags. 480 encoder.writeUint32(0); // flags.
484 encoder.writeUint32(0); // padding. 481 encoder.writeUint32(0); // padding.
485 } 482 }
486 483
(...skipping 17 matching lines...) Expand all
504 return message; 501 return message;
505 }; 502 };
506 503
507 // MessageWithRequestIDBuilder ----------------------------------------------- 504 // MessageWithRequestIDBuilder -----------------------------------------------
508 505
509 function MessageWithRequestIDBuilder(messageName, payloadSize, flags, 506 function MessageWithRequestIDBuilder(messageName, payloadSize, flags,
510 requestID) { 507 requestID) {
511 // Currently, we don't compute the payload size correctly ahead of time. 508 // Currently, we don't compute the payload size correctly ahead of time.
512 // Instead, we resize the buffer at the end. 509 // Instead, we resize the buffer at the end.
513 var numberOfBytes = kMessageWithRequestIDHeaderSize + payloadSize; 510 var numberOfBytes = kMessageWithRequestIDHeaderSize + payloadSize;
514 this.buffer = new buffer.Buffer(numberOfBytes); 511 this.buffer = new internal.Buffer(numberOfBytes);
515 this.handles = []; 512 this.handles = [];
516 var encoder = this.createEncoder(kMessageWithRequestIDHeaderSize); 513 var encoder = this.createEncoder(kMessageWithRequestIDHeaderSize);
517 encoder.writeUint32(kMessageWithRequestIDHeaderSize); 514 encoder.writeUint32(kMessageWithRequestIDHeaderSize);
518 encoder.writeUint32(1); // version. 515 encoder.writeUint32(1); // version.
519 encoder.writeUint32(0); // interface ID. 516 encoder.writeUint32(0); // interface ID.
520 encoder.writeUint32(messageName); 517 encoder.writeUint32(messageName);
521 encoder.writeUint32(flags); 518 encoder.writeUint32(flags);
522 encoder.writeUint32(0); // padding. 519 encoder.writeUint32(0); // padding.
523 encoder.writeUint64(requestID); 520 encoder.writeUint64(requestID);
524 } 521 }
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 804
808 NullableHandle.encode = Handle.encode; 805 NullableHandle.encode = Handle.encode;
809 806
810 function Interface(cls) { 807 function Interface(cls) {
811 this.cls = cls; 808 this.cls = cls;
812 } 809 }
813 810
814 Interface.prototype.encodedSize = 8; 811 Interface.prototype.encodedSize = 8;
815 812
816 Interface.prototype.decode = function(decoder) { 813 Interface.prototype.decode = function(decoder) {
817 var interfacePtrInfo = new types.InterfacePtrInfo( 814 var interfacePtrInfo = new mojoBindings.InterfacePtrInfo(
818 decoder.decodeHandle(), decoder.readUint32()); 815 decoder.decodeHandle(), decoder.readUint32());
819 var interfacePtr = new this.cls(); 816 var interfacePtr = new this.cls();
820 interfacePtr.ptr.bind(interfacePtrInfo); 817 interfacePtr.ptr.bind(interfacePtrInfo);
821 return interfacePtr; 818 return interfacePtr;
822 }; 819 };
823 820
824 Interface.prototype.encode = function(encoder, val) { 821 Interface.prototype.encode = function(encoder, val) {
825 var interfacePtrInfo = 822 var interfacePtrInfo =
826 val ? val.ptr.passInterface() : new types.InterfacePtrInfo(null, 0); 823 val ? val.ptr.passInterface() :
824 new mojoBindings.InterfacePtrInfo(null, 0);
827 encoder.encodeHandle(interfacePtrInfo.handle); 825 encoder.encodeHandle(interfacePtrInfo.handle);
828 encoder.writeUint32(interfacePtrInfo.version); 826 encoder.writeUint32(interfacePtrInfo.version);
829 }; 827 };
830 828
831 function NullableInterface(cls) { 829 function NullableInterface(cls) {
832 Interface.call(this, cls); 830 Interface.call(this, cls);
833 } 831 }
834 832
835 NullableInterface.prototype = Object.create(Interface.prototype); 833 NullableInterface.prototype = Object.create(Interface.prototype);
836 834
837 function InterfaceRequest() { 835 function InterfaceRequest() {
838 } 836 }
839 837
840 InterfaceRequest.encodedSize = 4; 838 InterfaceRequest.encodedSize = 4;
841 839
842 InterfaceRequest.decode = function(decoder) { 840 InterfaceRequest.decode = function(decoder) {
843 return new types.InterfaceRequest(decoder.decodeHandle()); 841 return new mojoBindings.InterfaceRequest(decoder.decodeHandle());
844 }; 842 };
845 843
846 InterfaceRequest.encode = function(encoder, val) { 844 InterfaceRequest.encode = function(encoder, val) {
847 encoder.encodeHandle(val ? val.handle : null); 845 encoder.encodeHandle(val ? val.handle : null);
848 }; 846 };
849 847
850 function NullableInterfaceRequest() { 848 function NullableInterfaceRequest() {
851 } 849 }
852 850
853 NullableInterfaceRequest.encodedSize = InterfaceRequest.encodedSize; 851 NullableInterfaceRequest.encodedSize = InterfaceRequest.encodedSize;
(...skipping 16 matching lines...) Expand all
870 MapOf.prototype.encode = function(encoder, val) { 868 MapOf.prototype.encode = function(encoder, val) {
871 encoder.encodeMapPointer(this.keyClass, this.valueClass, val); 869 encoder.encodeMapPointer(this.keyClass, this.valueClass, val);
872 }; 870 };
873 871
874 function NullableMapOf(keyClass, valueClass) { 872 function NullableMapOf(keyClass, valueClass) {
875 MapOf.call(this, keyClass, valueClass); 873 MapOf.call(this, keyClass, valueClass);
876 } 874 }
877 875
878 NullableMapOf.prototype = Object.create(MapOf.prototype); 876 NullableMapOf.prototype = Object.create(MapOf.prototype);
879 877
880 var exports = {}; 878 internal.align = align;
881 exports.align = align; 879 internal.isAligned = isAligned;
882 exports.isAligned = isAligned; 880 internal.Message = Message;
883 exports.Message = Message; 881 internal.MessageBuilder = MessageBuilder;
884 exports.MessageBuilder = MessageBuilder; 882 internal.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder;
885 exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; 883 internal.MessageReader = MessageReader;
886 exports.MessageReader = MessageReader; 884 internal.kArrayHeaderSize = kArrayHeaderSize;
887 exports.kArrayHeaderSize = kArrayHeaderSize; 885 internal.kMapStructPayloadSize = kMapStructPayloadSize;
888 exports.kMapStructPayloadSize = kMapStructPayloadSize; 886 internal.kStructHeaderSize = kStructHeaderSize;
889 exports.kStructHeaderSize = kStructHeaderSize; 887 internal.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue;
890 exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue; 888 internal.kMessageHeaderSize = kMessageHeaderSize;
891 exports.kMessageHeaderSize = kMessageHeaderSize; 889 internal.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize;
892 exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; 890 internal.kMessageExpectsResponse = kMessageExpectsResponse;
893 exports.kMessageExpectsResponse = kMessageExpectsResponse; 891 internal.kMessageIsResponse = kMessageIsResponse;
894 exports.kMessageIsResponse = kMessageIsResponse; 892 internal.Int8 = Int8;
895 exports.Int8 = Int8; 893 internal.Uint8 = Uint8;
896 exports.Uint8 = Uint8; 894 internal.Int16 = Int16;
897 exports.Int16 = Int16; 895 internal.Uint16 = Uint16;
898 exports.Uint16 = Uint16; 896 internal.Int32 = Int32;
899 exports.Int32 = Int32; 897 internal.Uint32 = Uint32;
900 exports.Uint32 = Uint32; 898 internal.Int64 = Int64;
901 exports.Int64 = Int64; 899 internal.Uint64 = Uint64;
902 exports.Uint64 = Uint64; 900 internal.Float = Float;
903 exports.Float = Float; 901 internal.Double = Double;
904 exports.Double = Double; 902 internal.String = String;
905 exports.String = String; 903 internal.Enum = Enum;
906 exports.Enum = Enum; 904 internal.NullableString = NullableString;
907 exports.NullableString = NullableString; 905 internal.PointerTo = PointerTo;
908 exports.PointerTo = PointerTo; 906 internal.NullablePointerTo = NullablePointerTo;
909 exports.NullablePointerTo = NullablePointerTo; 907 internal.ArrayOf = ArrayOf;
910 exports.ArrayOf = ArrayOf; 908 internal.NullableArrayOf = NullableArrayOf;
911 exports.NullableArrayOf = NullableArrayOf; 909 internal.PackedBool = PackedBool;
912 exports.PackedBool = PackedBool; 910 internal.Handle = Handle;
913 exports.Handle = Handle; 911 internal.NullableHandle = NullableHandle;
914 exports.NullableHandle = NullableHandle; 912 internal.Interface = Interface;
915 exports.Interface = Interface; 913 internal.NullableInterface = NullableInterface;
916 exports.NullableInterface = NullableInterface; 914 internal.InterfaceRequest = InterfaceRequest;
917 exports.InterfaceRequest = InterfaceRequest; 915 internal.NullableInterfaceRequest = NullableInterfaceRequest;
918 exports.NullableInterfaceRequest = NullableInterfaceRequest; 916 internal.MapOf = MapOf;
919 exports.MapOf = MapOf; 917 internal.NullableMapOf = NullableMapOf;
920 exports.NullableMapOf = NullableMapOf; 918 })();
921 return exports;
922 });
OLDNEW
« no previous file with comments | « mojo/public/js/new_bindings/buffer.js ('k') | mojo/public/js/new_bindings/connector.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698