mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-09 11:06:10 +00:00
LibWeb: Use alternative workaround for null strategy algorithm on abort
This unfortunately caused a regression for the included WPT test. Instead of reordering the spec step, fall back to the default size strategy of 1.
This commit is contained in:
parent
c64521aa4f
commit
c04b14d0cb
Notes:
github-actions[bot]
2024-11-13 15:45:13 +00:00
Author: https://github.com/shannonbooth
Commit: c04b14d0cb
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2311
4 changed files with 133 additions and 6 deletions
|
@ -0,0 +1,15 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script>
|
||||
self.GLOBAL = {
|
||||
isWindow: function() { return true; },
|
||||
isWorker: function() { return false; },
|
||||
isShadowRealm: function() { return false; },
|
||||
};
|
||||
</script>
|
||||
<script src="../../resources/testharness.js"></script>
|
||||
<script src="../../resources/testharnessreport.js"></script>
|
||||
|
||||
<div id=log></div>
|
||||
<script src="../../streams/writable-streams/bad-strategies.any.js"></script>
|
|
@ -0,0 +1,95 @@
|
|||
// META: global=window,worker,shadowrealm
|
||||
'use strict';
|
||||
|
||||
const error1 = new Error('a unique string');
|
||||
error1.name = 'error1';
|
||||
|
||||
test(() => {
|
||||
assert_throws_exactly(error1, () => {
|
||||
new WritableStream({}, {
|
||||
get size() {
|
||||
throw error1;
|
||||
},
|
||||
highWaterMark: 5
|
||||
});
|
||||
}, 'construction should re-throw the error');
|
||||
}, 'Writable stream: throwing strategy.size getter');
|
||||
|
||||
test(() => {
|
||||
assert_throws_js(TypeError, () => {
|
||||
new WritableStream({}, { size: 'a string' });
|
||||
});
|
||||
}, 'reject any non-function value for strategy.size');
|
||||
|
||||
test(() => {
|
||||
assert_throws_exactly(error1, () => {
|
||||
new WritableStream({}, {
|
||||
size() {
|
||||
return 1;
|
||||
},
|
||||
get highWaterMark() {
|
||||
throw error1;
|
||||
}
|
||||
});
|
||||
}, 'construction should re-throw the error');
|
||||
}, 'Writable stream: throwing strategy.highWaterMark getter');
|
||||
|
||||
test(() => {
|
||||
|
||||
for (const highWaterMark of [-1, -Infinity, NaN, 'foo', {}]) {
|
||||
assert_throws_js(RangeError, () => {
|
||||
new WritableStream({}, {
|
||||
size() {
|
||||
return 1;
|
||||
},
|
||||
highWaterMark
|
||||
});
|
||||
}, `construction should throw a RangeError for ${highWaterMark}`);
|
||||
}
|
||||
}, 'Writable stream: invalid strategy.highWaterMark');
|
||||
|
||||
promise_test(t => {
|
||||
const ws = new WritableStream({}, {
|
||||
size() {
|
||||
throw error1;
|
||||
},
|
||||
highWaterMark: 5
|
||||
});
|
||||
|
||||
const writer = ws.getWriter();
|
||||
|
||||
const p1 = promise_rejects_exactly(t, error1, writer.write('a'), 'write should reject with the thrown error');
|
||||
|
||||
const p2 = promise_rejects_exactly(t, error1, writer.closed, 'closed should reject with the thrown error');
|
||||
|
||||
return Promise.all([p1, p2]);
|
||||
}, 'Writable stream: throwing strategy.size method');
|
||||
|
||||
promise_test(() => {
|
||||
const sizes = [NaN, -Infinity, Infinity, -1];
|
||||
return Promise.all(sizes.map(size => {
|
||||
const ws = new WritableStream({}, {
|
||||
size() {
|
||||
return size;
|
||||
},
|
||||
highWaterMark: 5
|
||||
});
|
||||
|
||||
const writer = ws.getWriter();
|
||||
|
||||
return writer.write('a').then(() => assert_unreached('write must reject'), writeE => {
|
||||
assert_equals(writeE.name, 'RangeError', `write must reject with a RangeError for ${size}`);
|
||||
|
||||
return writer.closed.then(() => assert_unreached('write must reject'), closedE => {
|
||||
assert_equals(closedE, writeE, `closed should reject with the same error as write`);
|
||||
});
|
||||
});
|
||||
}));
|
||||
}, 'Writable stream: invalid strategy.size return value');
|
||||
|
||||
test(() => {
|
||||
assert_throws_js(TypeError, () => new WritableStream(undefined, {
|
||||
size: 'not a function',
|
||||
highWaterMark: NaN
|
||||
}), 'WritableStream constructor should throw a TypeError');
|
||||
}, 'Writable stream: invalid size beats invalid highWaterMark');
|
Loading…
Add table
Add a link
Reference in a new issue