mirror of
https://github.com/servo/servo.git
synced 2025-08-13 01:15:34 +01:00
Update web-platform-tests to revision 26e8a76d7fbea0721468e791a325444ac9939a4f
This commit is contained in:
parent
1c2bed5a69
commit
6b4026ce2f
89 changed files with 889 additions and 258 deletions
|
@ -0,0 +1,47 @@
|
|||
function assert_transfer_error(transferList) {
|
||||
assert_throws("DataCloneError", () => self.postMessage({ get whatever() { throw new Error("You should not have gotten to this point") } }, "*", transferList));
|
||||
}
|
||||
|
||||
test(() => {
|
||||
[self, self.document, new Image()].forEach(val => {
|
||||
assert_transfer_error([val]);
|
||||
});
|
||||
}, "Cannot transfer all objects");
|
||||
|
||||
function transfer_tests(name, create) {
|
||||
promise_test(async () => {
|
||||
const transferable = await create();
|
||||
assert_transfer_error([transferable, transferable]);
|
||||
}, `Cannot transfer the same ${name} twice`);
|
||||
|
||||
promise_test(async () => {
|
||||
const transferable = await create();
|
||||
self.postMessage(null, "*", [transferable]);
|
||||
assert_throws("DataCloneError", () => self.postMessage(null, "*", [transferable]));
|
||||
}, `Serialize should make the ${name} detached, so it cannot be transferred again`);
|
||||
|
||||
promise_test(async () => {
|
||||
const transferable = await create(),
|
||||
customError = new Error("hi");
|
||||
self.postMessage(null, "*", [transferable]);
|
||||
assert_throws(customError, () => self.postMessage({ get whatever() { throw customError } }, "*", [transferable]));
|
||||
}, `Serialize should throw before a detached ${name} is found`);
|
||||
|
||||
promise_test(async () => {
|
||||
const transferable = await create();
|
||||
let seen = false;
|
||||
const message = {
|
||||
get a() {
|
||||
self.postMessage(null, '*', [transferable]);
|
||||
seen = true;
|
||||
}
|
||||
};
|
||||
assert_throws("DataCloneError", () => self.postMessage(message, "*", [transferable]));
|
||||
assert_true(seen);
|
||||
}, `Cannot transfer ${name} detached while the message was serialized`);
|
||||
}
|
||||
|
||||
transfer_tests("ArrayBuffer", () => new ArrayBuffer(1));
|
||||
transfer_tests("MessagePort", () => new MessageChannel().port1);
|
||||
transfer_tests("ImageBitmap", () => self.createImageBitmap(document.createElement("canvas")));
|
||||
transfer_tests("OffscreenCanvas", () => new OffscreenCanvas(1, 1));
|
Loading…
Add table
Add a link
Reference in a new issue