resizable-array-buffers-transferable.js (1022B)
1 const scopes = [ 2 "SameProcess", 3 "DifferentProcess", 4 "DifferentProcessForIndexedDB", 5 ]; 6 7 function testArrayBufferTransferable(scope) { 8 var length = 4; 9 var byteLength = length * Uint8Array.BYTES_PER_ELEMENT; 10 var maxByteLength = 2 * byteLength; 11 12 var ab = new ArrayBuffer(byteLength, {maxByteLength}); 13 assertEq(ab.resizable, true); 14 assertEq(ab.byteLength, byteLength); 15 assertEq(ab.maxByteLength, maxByteLength); 16 17 var ta = new Uint8Array(ab); 18 ta.set([33, 44, 55, 66]); 19 assertEq(ta.toString(), "33,44,55,66"); 20 21 var clonebuf = serialize(ab, [ab], {scope}); 22 var ab2 = deserialize(clonebuf); 23 assertEq(ab2 instanceof ArrayBuffer, true); 24 assertEq(new Uint8Array(ab2).toString(), "33,44,55,66"); 25 assertEq(ab2.resizable, true); 26 assertEq(ab2.byteLength, byteLength); 27 assertEq(ab2.maxByteLength, maxByteLength); 28 29 assertEq(ab.detached, true); 30 assertEq(ab2.detached, false); 31 32 ab2.resize(maxByteLength); 33 assertEq(ab2.byteLength, maxByteLength); 34 } 35 scopes.forEach(testArrayBufferTransferable);