Automatic update from web-platform-tests Remove ShadowRealm test coverage This intentionally does not make infrastructure or documentation changes, but without implementer support all the ShadowRealm tests add significant noise. Once there is implementer support this can be reverted. -- wpt-commits: e4a4672e9e607fc2b28e7173b83ce4e38ef53071 wpt-pr: 59794
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
// META: global=window,worker
|
|
// META: script=third_party/pako/pako_inflate.min.js
|
|
// META: script=resources/decompress.js
|
|
// META: script=resources/formats.js
|
|
// META: timeout=long
|
|
|
|
'use strict';
|
|
|
|
const SMALL_FILE = "/media/foo.vtt";
|
|
const LARGE_FILE = "/media/test-av-384k-44100Hz-1ch-320x240-30fps-10kfr.webm";
|
|
|
|
let dataPromiseList = [
|
|
["empty data", Promise.resolve(new Uint8Array(0))],
|
|
["small amount data", fetch(SMALL_FILE).then(response => response.bytes())],
|
|
["large amount data", fetch(LARGE_FILE).then(response => response.bytes())],
|
|
];
|
|
|
|
async function compressArrayBuffer(input, format) {
|
|
const cs = new CompressionStream(format);
|
|
const writer = cs.writable.getWriter();
|
|
writer.write(input);
|
|
const closePromise = writer.close();
|
|
const out = [];
|
|
const reader = cs.readable.getReader();
|
|
let totalSize = 0;
|
|
while (true) {
|
|
const { value, done } = await reader.read();
|
|
if (done)
|
|
break;
|
|
out.push(value);
|
|
totalSize += value.byteLength;
|
|
}
|
|
await closePromise;
|
|
const concatenated = new Uint8Array(totalSize);
|
|
let offset = 0;
|
|
for (const array of out) {
|
|
concatenated.set(array, offset);
|
|
offset += array.byteLength;
|
|
}
|
|
return concatenated;
|
|
}
|
|
|
|
test(() => {
|
|
assert_throws_js(TypeError, () => {
|
|
const transformer = new CompressionStream("nonvalid");
|
|
}, "non supported format should throw");
|
|
}, "CompressionStream constructor should throw on invalid format");
|
|
|
|
for (const format of formats) {
|
|
for (const [label, dataPromise] of dataPromiseList) {
|
|
promise_test(async () => {
|
|
const bufferView = await dataPromise;
|
|
const compressedData = await compressArrayBuffer(bufferView, format);
|
|
const decompressedData = await decompressDataOrPako(compressedData, format);
|
|
// check that we got the same result as our original string
|
|
assert_array_equals(decompressedData, bufferView, 'value should match');
|
|
}, `${format} ${label} should be reinflated back to its origin`);
|
|
}
|
|
}
|