| Index: mojo/public/dart/mojo/lib/src/codec.dart
|
| diff --git a/mojo/public/dart/mojo/lib/src/codec.dart b/mojo/public/dart/mojo/lib/src/codec.dart
|
| index 020312b152b1590290221aebadd2ccf42d79364f..0e8af2e0d5178169e56a487aff56850c4d1d9223 100644
|
| --- a/mojo/public/dart/mojo/lib/src/codec.dart
|
| +++ b/mojo/public/dart/mojo/lib/src/codec.dart
|
| @@ -170,11 +170,11 @@ class Encoder {
|
| _buffer.buffer.setUint64(_base + offset, value, Endianness.LITTLE_ENDIAN);
|
| }
|
|
|
| - void encodeFloat(double value, int offset) => _buffer.buffer.setFloat32(
|
| - _base + offset, value, Endianness.LITTLE_ENDIAN);
|
| + void encodeFloat(double value, int offset) => _buffer.buffer
|
| + .setFloat32(_base + offset, value, Endianness.LITTLE_ENDIAN);
|
|
|
| - void encodeDouble(double value, int offset) => _buffer.buffer.setFloat64(
|
| - _base + offset, value, Endianness.LITTLE_ENDIAN);
|
| + void encodeDouble(double value, int offset) => _buffer.buffer
|
| + .setFloat64(_base + offset, value, Endianness.LITTLE_ENDIAN);
|
|
|
| void encodeHandle(core.MojoHandle value, int offset, bool nullable) {
|
| if ((value == null) || !value.isValid) {
|
| @@ -275,8 +275,7 @@ class Encoder {
|
| void encodeUnion(Union value, int offset, bool nullable) {
|
| if (value == null) {
|
| if (!nullable) {
|
| - throw new MojoCodecError(
|
| - 'Trying to encode a non-nullable null union.');
|
| + throw new MojoCodecError('Trying to encode a non-nullable null union.');
|
| }
|
| encodeUint64(0, offset);
|
| encodeUint64(0, offset + 8);
|
| @@ -422,15 +421,19 @@ class Encoder {
|
| }
|
|
|
| void encodeHandleArray(List<core.MojoHandle> value, int offset,
|
| - int nullability, int expectedLength) => _handleArrayEncodeHelper(
|
| - (e, v, o, n) => e.encodeHandle(v, o, n), value, offset,
|
| - kSerializedHandleSize, nullability, expectedLength);
|
| + int nullability, int expectedLength) =>
|
| + _handleArrayEncodeHelper((e, v, o, n) => e.encodeHandle(v, o, n), value,
|
| + offset, kSerializedHandleSize, nullability, expectedLength);
|
|
|
| void encodeMessagePipeHandleArray(List<core.MojoMessagePipeEndpoint> value,
|
| int offset, int nullability, int expectedLength) =>
|
| _handleArrayEncodeHelper(
|
| - (e, v, o, n) => e.encodeMessagePipeHandle(v, o, n), value, offset,
|
| - kSerializedHandleSize, nullability, expectedLength);
|
| + (e, v, o, n) => e.encodeMessagePipeHandle(v, o, n),
|
| + value,
|
| + offset,
|
| + kSerializedHandleSize,
|
| + nullability,
|
| + expectedLength);
|
|
|
| void encodeConsumerHandleArray(List<core.MojoDataPipeConsumer> value,
|
| int offset, int nullability, int expectedLength) =>
|
| @@ -445,14 +448,22 @@ class Encoder {
|
| void encodeSharedBufferHandleArray(List<core.MojoSharedBuffer> value,
|
| int offset, int nullability, int expectedLength) =>
|
| _handleArrayEncodeHelper(
|
| - (e, v, o, n) => e.encodeSharedBufferHandle(v, o, n), value, offset,
|
| - kSerializedHandleSize, nullability, expectedLength);
|
| + (e, v, o, n) => e.encodeSharedBufferHandle(v, o, n),
|
| + value,
|
| + offset,
|
| + kSerializedHandleSize,
|
| + nullability,
|
| + expectedLength);
|
|
|
| void encodeInterfaceRequestArray(
|
| List<Proxy> value, int offset, int nullability, int expectedLength) =>
|
| _handleArrayEncodeHelper(
|
| - (e, v, o, n) => e.encodeInterfaceRequest(v, o, n), value, offset,
|
| - kSerializedHandleSize, nullability, expectedLength);
|
| + (e, v, o, n) => e.encodeInterfaceRequest(v, o, n),
|
| + value,
|
| + offset,
|
| + kSerializedHandleSize,
|
| + nullability,
|
| + expectedLength);
|
|
|
| void encodeInterfaceArray(
|
| List<Stub> value, int offset, int nullability, int expectedLength) =>
|
| @@ -473,10 +484,10 @@ class Encoder {
|
| }
|
|
|
| void appendBytes(Uint8List value) {
|
| - _buffer.buffer.buffer
|
| - .asUint8List()
|
| - .setRange(_base + ArrayDataHeader.kHeaderSize,
|
| - _base + ArrayDataHeader.kHeaderSize + value.lengthInBytes, value);
|
| + _buffer.buffer.buffer.asUint8List().setRange(
|
| + _base + ArrayDataHeader.kHeaderSize,
|
| + _base + ArrayDataHeader.kHeaderSize + value.lengthInBytes,
|
| + value);
|
| }
|
|
|
| void appendInt8Array(List<int> value) =>
|
| @@ -561,8 +572,8 @@ class Decoder {
|
|
|
| Decoder(this._message, [this._base = 0, this._validator = null]) {
|
| if (_validator == null) {
|
| - _validator = new _Validator(
|
| - _message.buffer.lengthInBytes, _message.handles.length);
|
| + _validator =
|
| + new _Validator(_message.buffer.lengthInBytes, _message.numHandles);
|
| }
|
| }
|
|
|
| @@ -574,9 +585,11 @@ class Decoder {
|
|
|
| ByteData get _buffer => _message.buffer;
|
| List<core.MojoHandle> get _handles => _message.handles;
|
| - List<core.MojoHandle> get excessHandles => new List.from(_message.handles
|
| - .getRange(_validator._minNextClaimedHandle, _message.handles.length))
|
| - ..addAll(_validator._skippedIndices.map((i) => _message.handles[i]));
|
| + List<core.MojoHandle> get excessHandles => (_message.handles == null)
|
| + ? null
|
| + : (new List.from(_message.handles
|
| + .getRange(_validator._minNextClaimedHandle, _message.handles.length))
|
| + ..addAll(_validator._skippedIndices.map((i) => _message.handles[i])));
|
|
|
| int decodeInt8(int offset) => _buffer.getInt8(_base + offset);
|
| int decodeUint8(int offset) => _buffer.getUint8(_base + offset);
|
| @@ -709,7 +722,8 @@ class Decoder {
|
| return null;
|
| }
|
| var header = d.decodeDataHeaderForBoolArray(expectedLength);
|
| - var bytes = new Uint8List.view(d._buffer.buffer,
|
| + var bytes = new Uint8List.view(
|
| + d._buffer.buffer,
|
| d._buffer.offsetInBytes + d._base + ArrayDataHeader.kHeaderSize,
|
| (header.numElements + 7) ~/ kAlignment);
|
| var result = new List<bool>(header.numElements);
|
| @@ -758,7 +772,8 @@ class Decoder {
|
| return null;
|
| }
|
| var header = d.decodeDataHeaderForArray(elementSize, expectedLength);
|
| - return arrayViewer(d._buffer.buffer,
|
| + return arrayViewer(
|
| + d._buffer.buffer,
|
| d._buffer.offsetInBytes + d._base + ArrayDataHeader.kHeaderSize,
|
| header.numElements);
|
| }
|
| @@ -776,37 +791,37 @@ class Decoder {
|
| nullability, expectedLength);
|
|
|
| List<int> decodeUint16Array(
|
| - int offset, int nullability, int expectedLength) => decodeArray(
|
| - (b, s, l) => new Uint16List.view(b, s, l), 2, offset, nullability,
|
| - expectedLength);
|
| + int offset, int nullability, int expectedLength) =>
|
| + decodeArray((b, s, l) => new Uint16List.view(b, s, l), 2, offset,
|
| + nullability, expectedLength);
|
|
|
| List<int> decodeInt32Array(int offset, int nullability, int expectedLength) =>
|
| decodeArray((b, s, l) => new Int32List.view(b, s, l), 4, offset,
|
| nullability, expectedLength);
|
|
|
| List<int> decodeUint32Array(
|
| - int offset, int nullability, int expectedLength) => decodeArray(
|
| - (b, s, l) => new Uint32List.view(b, s, l), 4, offset, nullability,
|
| - expectedLength);
|
| + int offset, int nullability, int expectedLength) =>
|
| + decodeArray((b, s, l) => new Uint32List.view(b, s, l), 4, offset,
|
| + nullability, expectedLength);
|
|
|
| List<int> decodeInt64Array(int offset, int nullability, int expectedLength) =>
|
| decodeArray((b, s, l) => new Int64List.view(b, s, l), 8, offset,
|
| nullability, expectedLength);
|
|
|
| List<int> decodeUint64Array(
|
| - int offset, int nullability, int expectedLength) => decodeArray(
|
| - (b, s, l) => new Uint64List.view(b, s, l), 8, offset, nullability,
|
| - expectedLength);
|
| + int offset, int nullability, int expectedLength) =>
|
| + decodeArray((b, s, l) => new Uint64List.view(b, s, l), 8, offset,
|
| + nullability, expectedLength);
|
|
|
| List<double> decodeFloatArray(
|
| - int offset, int nullability, int expectedLength) => decodeArray(
|
| - (b, s, l) => new Float32List.view(b, s, l), 4, offset, nullability,
|
| - expectedLength);
|
| + int offset, int nullability, int expectedLength) =>
|
| + decodeArray((b, s, l) => new Float32List.view(b, s, l), 4, offset,
|
| + nullability, expectedLength);
|
|
|
| List<double> decodeDoubleArray(
|
| - int offset, int nullability, int expectedLength) => decodeArray(
|
| - (b, s, l) => new Float64List.view(b, s, l), 8, offset, nullability,
|
| - expectedLength);
|
| + int offset, int nullability, int expectedLength) =>
|
| + decodeArray((b, s, l) => new Float64List.view(b, s, l), 8, offset,
|
| + nullability, expectedLength);
|
|
|
| List _handleArrayDecodeHelper(Function elementDecoder, int offset,
|
| int elementSize, int nullability, int expectedLength) {
|
| @@ -817,7 +832,8 @@ class Decoder {
|
| var header = d.decodeDataHeaderForArray(elementSize, expectedLength);
|
| var result = new List(header.numElements);
|
| for (int i = 0; i < result.length; ++i) {
|
| - result[i] = elementDecoder(d,
|
| + result[i] = elementDecoder(
|
| + d,
|
| ArrayDataHeader.kHeaderSize + elementSize * i,
|
| isElementNullable(nullability));
|
| }
|
| @@ -852,13 +868,20 @@ class Decoder {
|
| List<Stub> decodeInterfaceRequestArray(int offset, int nullability,
|
| int expectedLength, Function interfaceFactory) =>
|
| _handleArrayDecodeHelper(
|
| - (d, o, n) => d.decodeInterfaceRequest(o, n, interfaceFactory), offset,
|
| - kSerializedHandleSize, nullability, expectedLength);
|
| + (d, o, n) => d.decodeInterfaceRequest(o, n, interfaceFactory),
|
| + offset,
|
| + kSerializedHandleSize,
|
| + nullability,
|
| + expectedLength);
|
|
|
| List<Proxy> decodeServiceInterfaceArray(int offset, int nullability,
|
| - int expectedLength, Function clientFactory) => _handleArrayDecodeHelper(
|
| - (d, o, n) => d.decodeServiceInterface(o, n, clientFactory), offset,
|
| - kSerializedInterfaceSize, nullability, expectedLength);
|
| + int expectedLength, Function clientFactory) =>
|
| + _handleArrayDecodeHelper(
|
| + (d, o, n) => d.decodeServiceInterface(o, n, clientFactory),
|
| + offset,
|
| + kSerializedInterfaceSize,
|
| + nullability,
|
| + expectedLength);
|
|
|
| static String _stringOfUtf8(Uint8List bytes) =>
|
| (const Utf8Decoder()).convert(bytes.toList());
|
|
|