Skip to content

Commit 99b0f1b

Browse files
committed
fixup! lib: refactor internal webidl converters
1 parent 48f5856 commit 99b0f1b

2 files changed

Lines changed: 26 additions & 14 deletions

File tree

test/parallel/test-internal-webidl-buffer-source.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@ const TYPED_ARRAY_CTORS = [
1515
Float16Array, Float32Array, Float64Array,
1616
BigInt64Array, BigUint64Array,
1717
];
18-
const hasGrowableSharedArrayBuffer = (() => {
18+
19+
function createGrowableSharedArrayBufferView(Ctor) {
1920
try {
20-
return new SharedArrayBuffer(0, { maxByteLength: 1 }).growable === true;
21+
const buffer = new SharedArrayBuffer(0, { maxByteLength: 1 });
22+
const view = new Ctor(buffer);
23+
return view.buffer.growable === true ? view : undefined;
2124
} catch {
22-
return false;
25+
return undefined;
2326
}
24-
})();
27+
}
28+
29+
const hasGrowableSharedArrayBufferViews =
30+
createGrowableSharedArrayBufferView(Uint8Array) !== undefined;
2531

2632
test('BufferSource accepts ArrayBuffer', () => {
2733
const ab = new ArrayBuffer(8);
@@ -167,11 +173,12 @@ test('BufferSource handles resizable-backed views with explicit options', () =>
167173
});
168174

169175
test('BufferSource handles growable SAB-backed views with explicit options', {
170-
skip: !hasGrowableSharedArrayBuffer,
176+
skip: !hasGrowableSharedArrayBufferViews,
171177
}, () => {
172178
for (const Ctor of [DataView, ...TYPED_ARRAY_CTORS]) {
173179
{
174-
const view = new Ctor(new SharedArrayBuffer(0, { maxByteLength: 1 }));
180+
const view = createGrowableSharedArrayBufferView(Ctor);
181+
assert.notStrictEqual(view, undefined);
175182
assert.throws(
176183
() => converters.BufferSource(view, {
177184
allowShared: true,
@@ -182,7 +189,8 @@ test('BufferSource handles growable SAB-backed views with explicit options', {
182189
}
183190

184191
{
185-
const view = new Ctor(new SharedArrayBuffer(0, { maxByteLength: 1 }));
192+
const view = createGrowableSharedArrayBufferView(Ctor);
193+
assert.notStrictEqual(view, undefined);
186194
assert.strictEqual(converters.BufferSource(view, {
187195
allowShared: true,
188196
allowResizable: true,

test/parallel/test-internal-webidl.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,18 @@ const opts = {
1212
prefix: 'Prefix',
1313
context: 'Context',
1414
};
15-
const hasGrowableSharedArrayBuffer = (() => {
15+
function createGrowableSharedArrayBufferView() {
1616
try {
17-
return new SharedArrayBuffer(0, { maxByteLength: 1 }).growable === true;
17+
const buffer = new SharedArrayBuffer(4, { maxByteLength: 8 });
18+
const view = new Uint8Array(buffer);
19+
return view.buffer.growable === true ? view : undefined;
1820
} catch {
19-
return false;
21+
return undefined;
2022
}
21-
})();
23+
}
24+
25+
const hasGrowableSharedArrayBufferView =
26+
createGrowableSharedArrayBufferView() !== undefined;
2227

2328
function assertInvalidArgType(fn) {
2429
assert.throws(fn, {
@@ -436,9 +441,8 @@ assert.throws(() => webidl.requiredArguments(1, 2, opts), {
436441
assert.strictEqual(converters.BufferSource(view, allowShared), view);
437442
assert.strictEqual(converters.Uint8Array(view, allowShared), view);
438443

439-
if (hasGrowableSharedArrayBuffer) {
440-
const growable = new SharedArrayBuffer(4, { maxByteLength: 8 });
441-
const growableView = new Uint8Array(growable);
444+
if (hasGrowableSharedArrayBufferView) {
445+
const growableView = createGrowableSharedArrayBufferView();
442446

443447
assert.throws(() => converters.BufferSource(growableView, {
444448
__proto__: null,

0 commit comments

Comments
 (0)