diff --git a/testing/web-platform/tests/common/sab.js b/testing/web-platform/tests/common/sab.js new file mode 100644 index 000000000000..df2c13411a4c --- /dev/null +++ b/testing/web-platform/tests/common/sab.js @@ -0,0 +1,13 @@ +const createBuffer = (() => { + + const sabConstructor = new WebAssembly.Memory({ shared:true, initial:0, maximum:0 }).buffer.constructor; + return (type, length) => { + if (type === "ArrayBuffer") { + return new ArrayBuffer(length); + } else if (type === "SharedArrayBuffer") { + return new sabConstructor(length); + } else { + throw new Error("type has to be ArrayBuffer or SharedArrayBuffer"); + } + } +})(); diff --git a/testing/web-platform/tests/encoding/encodeInto.any.js b/testing/web-platform/tests/encoding/encodeInto.any.js index d218a8d3dc71..9ec66f32b6f4 100644 --- a/testing/web-platform/tests/encoding/encodeInto.any.js +++ b/testing/web-platform/tests/encoding/encodeInto.any.js @@ -1,3 +1,6 @@ + + + [ { "input": "Hi", @@ -77,15 +80,15 @@ ["ArrayBuffer", "SharedArrayBuffer"].forEach(arrayBufferOrSharedArrayBuffer => { test(() => { - const bufferLength = testData.destinationLength + destinationData.bufferIncrease, - destinationOffset = destinationData.destinationOffset, - destinationLength = testData.destinationLength, - destinationFiller = destinationData.filler, - encoder = new TextEncoder(), - buffer = new self[arrayBufferOrSharedArrayBuffer](bufferLength), - view = new Uint8Array(buffer, destinationOffset, destinationLength), - fullView = new Uint8Array(buffer), - control = new Array(bufferLength); + const bufferLength = testData.destinationLength + destinationData.bufferIncrease; + const destinationOffset = destinationData.destinationOffset; + const destinationLength = testData.destinationLength; + const destinationFiller = destinationData.filler; + const encoder = new TextEncoder(); + const buffer = createBuffer(arrayBufferOrSharedArrayBuffer, bufferLength); + const view = new Uint8Array(buffer, destinationOffset, destinationLength); + const fullView = new Uint8Array(buffer); + const control = new Array(bufferLength); let byte = destinationFiller; for (let i = 0; i < bufferLength; i++) { if (destinationFiller === "random") { @@ -128,19 +131,17 @@ Float64Array].forEach(view => { ["ArrayBuffer", "SharedArrayBuffer"].forEach((arrayBufferOrSharedArrayBuffer) => { test(() => { - assert_throws_js(TypeError, () => new TextEncoder().encodeInto("", new view(new self[arrayBufferOrSharedArrayBuffer](0)))); + assert_throws_js(TypeError, () => new TextEncoder().encodeInto("", new view(createBuffer(arrayBufferOrSharedArrayBuffer, 0)))); }, "Invalid encodeInto() destination: " + view.name + ", backed by: " + arrayBufferOrSharedArrayBuffer); }); }); ["ArrayBuffer", "SharedArrayBuffer"].forEach((arrayBufferOrSharedArrayBuffer) => { test(() => { - assert_throws_js(TypeError, () => new TextEncoder().encodeInto("", new self[arrayBufferOrSharedArrayBuffer](10))); + assert_throws_js(TypeError, () => new TextEncoder().encodeInto("", createBuffer(arrayBufferOrSharedArrayBuffer, 10))); }, "Invalid encodeInto() destination: " + arrayBufferOrSharedArrayBuffer); }); - - test(() => { const buffer = new ArrayBuffer(10), view = new Uint8Array(buffer); diff --git a/testing/web-platform/tests/encoding/streams/decode-utf8.any.js b/testing/web-platform/tests/encoding/streams/decode-utf8.any.js index a8e7ac10e298..a99a1b60d86b 100644 --- a/testing/web-platform/tests/encoding/streams/decode-utf8.any.js +++ b/testing/web-platform/tests/encoding/streams/decode-utf8.any.js @@ -5,11 +5,10 @@ 'use strict'; ["ArrayBuffer", "SharedArrayBuffer"].forEach((arrayBufferOrSharedArrayBuffer) => { - const inputChunkData = [73, 32, 240, 159, 146, 153, 32, 115, 116, - 114, 101, 97, 109, 115] + const inputChunkData = [73, 32, 240, 159, 146, 153, 32, 115, 116, 114, 101, 97, 109, 115]; - const emptyChunk = new Uint8Array(new self[arrayBufferOrSharedArrayBuffer](0)); - const inputChunk = new Uint8Array(new self[arrayBufferOrSharedArrayBuffer](inputChunkData.length)); + const emptyChunk = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, 0)); + const inputChunk = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, inputChunkData.length)); inputChunk.set(inputChunkData); diff --git a/testing/web-platform/tests/encoding/textdecoder-copy.any.js b/testing/web-platform/tests/encoding/textdecoder-copy.any.js index 6ae65119db68..59590528303e 100644 --- a/testing/web-platform/tests/encoding/textdecoder-copy.any.js +++ b/testing/web-platform/tests/encoding/textdecoder-copy.any.js @@ -1,10 +1,13 @@ + + + ["ArrayBuffer", "SharedArrayBuffer"].forEach(arrayBufferOrSharedArrayBuffer => { test(() => { - const buf = new self[arrayBufferOrSharedArrayBuffer](2), - view = new Uint8Array(buf), - buf2 = new self[arrayBufferOrSharedArrayBuffer](2), - view2 = new Uint8Array(buf2), - decoder = new TextDecoder("utf-8"); + const buf = createBuffer(arrayBufferOrSharedArrayBuffer, 2); + const view = new Uint8Array(buf); + const buf2 = createBuffer(arrayBufferOrSharedArrayBuffer, 2); + const view2 = new Uint8Array(buf2); + const decoder = new TextDecoder("utf-8"); view[0] = 0xEF; view[1] = 0xBB; view2[0] = 0xBF; diff --git a/testing/web-platform/tests/encoding/textdecoder-streaming.any.js b/testing/web-platform/tests/encoding/textdecoder-streaming.any.js index 4e1385f46294..c9242974d828 100644 --- a/testing/web-platform/tests/encoding/textdecoder-streaming.any.js +++ b/testing/web-platform/tests/encoding/textdecoder-streaming.any.js @@ -1,6 +1,8 @@ + + var string = '\x00123ABCabc\x80\xFF\u0100\u1000\uFFFD\uD800\uDC00\uDBFF\uDFFF'; var octets = { 'utf-8': [0x00,0x31,0x32,0x33,0x41,0x42,0x43,0x61,0x62,0x63,0xc2,0x80, @@ -28,7 +30,7 @@ var octets = { var sub = []; for (var j = i; j < encoded.length && j < i + len; ++j) sub.push(encoded[j]); - var uintArray = new Uint8Array(new self[arrayBufferOrSharedArrayBuffer](sub.length)); + var uintArray = new Uint8Array(createBuffer(arrayBufferOrSharedArrayBuffer, sub.length)); uintArray.set(sub); out += decoder.decode(uintArray, {stream: true}); }