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

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

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