-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1917950 [wpt PR 48085] - Streams: test whether patched
then()
s…
…ees correct `byobRequest`, a=testonly Automatic update from web-platform-tests Streams: test whether patched `then()` sees correct `byobRequest` See whatwg/streams#1326 for context. This also updates the `transferArrayBufferView` test utility to be synchronous, which slightly changes the timings of some tests in `streams/readable-byte-streams/general.any.js`. -- wpt-commits: bc9dcbbf1a4c2c741ef47f47d6ede6458f40c4a4 wpt-pr: 48085 UltraBlame original commit: 427adfdff2597708b7034c942818644b0fe69e50
- Loading branch information
Showing
3 changed files
with
59 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
54 changes: 54 additions & 0 deletions
54
testing/web-platform/tests/streams/readable-byte-streams/patched-global.any.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
|
||
|
||
'use strict'; | ||
|
||
|
||
|
||
|
||
promise_test(async (t) => { | ||
let controller; | ||
const rs = new ReadableStream({ | ||
type: 'bytes', | ||
start(c) { | ||
controller = c; | ||
} | ||
}); | ||
const reader = rs.getReader({mode: 'byob'}); | ||
|
||
const length = 0x4000; | ||
const buffer = new ArrayBuffer(length); | ||
const bigArray = new BigUint64Array(buffer, length - 8, 1); | ||
|
||
const read1 = reader.read(new Uint8Array(new ArrayBuffer(0x100))); | ||
const read2 = reader.read(bigArray); | ||
|
||
let flag = false; | ||
Object.defineProperty(Object.prototype, 'then', { | ||
get: t.step_func(() => { | ||
if (!flag) { | ||
flag = true; | ||
assert_equals(controller.byobRequest, null, 'byobRequest should be null after filling both views'); | ||
} | ||
}), | ||
configurable: true | ||
}); | ||
t.add_cleanup(() => { | ||
delete Object.prototype.then; | ||
}); | ||
|
||
controller.enqueue(new Uint8Array(0x110).fill(0x42)); | ||
assert_true(flag, 'patched then() should be called'); | ||
|
||
|
||
const result1 = await read1; | ||
assert_false(result1.done, 'result1.done'); | ||
assert_typed_array_equals(result1.value, new Uint8Array(0x100).fill(0x42), 'result1.value'); | ||
|
||
|
||
const result2 = await read2; | ||
assert_false(result2.done, 'result2.done'); | ||
assert_equals(result2.value.constructor, BigUint64Array, 'result2.value constructor'); | ||
assert_equals(result2.value.byteOffset, length - 8, 'result2.value byteOffset'); | ||
assert_equals(result2.value.length, 1, 'result2.value length'); | ||
assert_array_equals([...result2.value], [0x42424242_42424242n], 'result2.value contents'); | ||
}, 'Patched then() sees byobRequest after filling all pending pull-into descriptors'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters