mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-23 08:30:50 +00:00
This required a bit of manual manipulation. These tests dynamically fetch generated IDL files, e.g.: https://github.com/web-platform-tests/wpt/blob/master/interfaces/streams.idl Our WPT importer is not able to detect the IDL files that need to be imported, so dom.idl and streams.idl was copied over manually. Further, idlharness.js would create URLs of the form "file://interfaces/dom.idl". So idlharness.js was adapted to create a URL relative to the test file.
79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
// META: global=window,worker,shadowrealm-in-window
|
|
// META: script=/resources/WebIDLParser.js
|
|
// META: script=/resources/idlharness.js
|
|
// META: timeout=long
|
|
|
|
idl_test(
|
|
['streams'],
|
|
['dom'], // for AbortSignal
|
|
async idl_array => {
|
|
// Empty try/catches ensure that if something isn't implemented (e.g., readable byte streams, or writable streams)
|
|
// the harness still sets things up correctly. Note that the corresponding interface tests will still fail.
|
|
|
|
try {
|
|
new ReadableStream({
|
|
start(c) {
|
|
self.readableStreamDefaultController = c;
|
|
}
|
|
});
|
|
} catch {}
|
|
|
|
try {
|
|
new ReadableStream({
|
|
start(c) {
|
|
self.readableByteStreamController = c;
|
|
},
|
|
type: 'bytes'
|
|
});
|
|
} catch {}
|
|
|
|
try {
|
|
let resolvePullCalledPromise;
|
|
const pullCalledPromise = new Promise(resolve => {
|
|
resolvePullCalledPromise = resolve;
|
|
});
|
|
const stream = new ReadableStream({
|
|
pull(c) {
|
|
self.readableStreamByobRequest = c.byobRequest;
|
|
resolvePullCalledPromise();
|
|
},
|
|
type: 'bytes'
|
|
});
|
|
const reader = stream.getReader({ mode: 'byob' });
|
|
reader.read(new Uint8Array(1));
|
|
await pullCalledPromise;
|
|
} catch {}
|
|
|
|
try {
|
|
new WritableStream({
|
|
start(c) {
|
|
self.writableStreamDefaultController = c;
|
|
}
|
|
});
|
|
} catch {}
|
|
|
|
try {
|
|
new TransformStream({
|
|
start(c) {
|
|
self.transformStreamDefaultController = c;
|
|
}
|
|
});
|
|
} catch {}
|
|
|
|
idl_array.add_objects({
|
|
ReadableStream: ["new ReadableStream()"],
|
|
ReadableStreamDefaultReader: ["(new ReadableStream()).getReader()"],
|
|
ReadableStreamBYOBReader: ["(new ReadableStream({ type: 'bytes' })).getReader({ mode: 'byob' })"],
|
|
ReadableStreamDefaultController: ["self.readableStreamDefaultController"],
|
|
ReadableByteStreamController: ["self.readableByteStreamController"],
|
|
ReadableStreamBYOBRequest: ["self.readableStreamByobRequest"],
|
|
WritableStream: ["new WritableStream()"],
|
|
WritableStreamDefaultWriter: ["(new WritableStream()).getWriter()"],
|
|
WritableStreamDefaultController: ["self.writableStreamDefaultController"],
|
|
TransformStream: ["new TransformStream()"],
|
|
TransformStreamDefaultController: ["self.transformStreamDefaultController"],
|
|
ByteLengthQueuingStrategy: ["new ByteLengthQueuingStrategy({ highWaterMark: 5 })"],
|
|
CountQueuingStrategy: ["new CountQueuingStrategy({ highWaterMark: 5 })"]
|
|
});
|
|
}
|
|
);
|