mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
Bug 1478615 [wpt PR 12190] - Introduce AgentClusterID to serialized messages, a=testonly
Automatic update from web-platform-testsIntroduce AgentClusterID to serialized messages There are restrictions to sharing SharedArrayBuffer (and WebAssembly Modules) between execution contexts; for example, you cannot share a SharedArrayBuffer between a Window and the Service Worker it created. The rules are described here: https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-agent-cluster-formalism This defines an "agent" which is similar to an execution context, and an "agent cluster" which is a collection of agents that can share between each other. This CL begins to model some of this behavior by using a `base::UnguessableToken` as an agent cluster ID that can be queried from an `ExecutionContext`. This CL also has the correct behavior when a message is sent to an agent that is not part of its agent cluster; in that case a "messageerror" event is sent instead of a "message" event. Bug: chromium:798572, chromium:714842 Change-Id: Ie70cce4cbd0ebd04d8d270d66f59690caf7f616a Reviewed-on: https://chromium-review.googlesource.com/1130505 Commit-Queue: Ben Smith <binji@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Jeremy Roman <jbroman@chromium.org> Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org> Cr-Commit-Position: refs/heads/master@{#580984} -- wpt-commits: 44cf7952750b5ce5ead67966d2e5304753aef930 wpt-pr: 12190
This commit is contained in:
parent
49edc1ebf0
commit
8deef6b4ba
@ -643397,7 +643397,7 @@
|
||||
"support"
|
||||
],
|
||||
"wasm/resources/service-worker.js": [
|
||||
"bb0ec21cc570bef2ecc880d8a03cf88395a56b76",
|
||||
"684eaf64878c22afc9ac877b79db7d26f14a3670",
|
||||
"support"
|
||||
],
|
||||
"wasm/wasm_local_iframe_test.html": [
|
||||
@ -643417,7 +643417,7 @@
|
||||
"support"
|
||||
],
|
||||
"wasm/wasm_service_worker_test.https.html": [
|
||||
"e350ed95eaff91ed982b28dada7a774675368adb",
|
||||
"cced4b8f6ecdaa03c6d80793c2f3650b217452a5",
|
||||
"testharness"
|
||||
],
|
||||
"web-animations/META.yml": [
|
||||
|
@ -24,3 +24,7 @@ self.addEventListener('message', function(e) {
|
||||
.catch(e => port.postMessage({type:"OTHER ERROR"}));
|
||||
}
|
||||
});
|
||||
|
||||
self.addEventListener('messageerror', function(e) {
|
||||
port.postMessage({type:"RECEIVE ERROR"});
|
||||
});
|
||||
|
@ -8,14 +8,16 @@
|
||||
promise_test(async test => {
|
||||
var registration = await service_worker_unregister_and_register(
|
||||
test, 'resources/service-worker.js', 'resources/blank.html');
|
||||
add_completion_callback(() => registration.unregister());
|
||||
var worker = registration.installing;
|
||||
var data = await new Promise((resolve, reject) => {
|
||||
var messageChannel = new MessageChannel();
|
||||
worker.postMessage({port: messageChannel.port2}, [messageChannel.port2]);
|
||||
worker.postMessage({compile: true});
|
||||
messageChannel.port1.onmessage = event => resolve(event.data);
|
||||
});
|
||||
assert_equals(data, null);
|
||||
add_completion_callback(() => registration.unregister());
|
||||
var worker = registration.installing;
|
||||
var event = await new Promise((resolve, reject) => {
|
||||
var messageChannel = new MessageChannel();
|
||||
worker.postMessage({port: messageChannel.port2}, [messageChannel.port2]);
|
||||
worker.postMessage({compile: true});
|
||||
messageChannel.port1.onmessage = event => reject(event);
|
||||
messageChannel.port1.onmessageerror = event => resolve(event);
|
||||
});
|
||||
assert_equals(event.type, "messageerror");
|
||||
assert_equals(event.data, null);
|
||||
}, 'postMessaging wasm from a service worker should fail');
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user