aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/worker.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/worker.rs')
-rw-r--r--components/script/dom/worker.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index 850276ae2c0..cfbec632303 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -97,7 +97,11 @@ impl Worker {
*self.context_for_interrupt.borrow_mut() = Some(cx);
}
- pub fn handle_message(address: TrustedWorkerAddress, data: StructuredSerializedData) {
+ pub fn handle_message(
+ address: TrustedWorkerAddress,
+ data: StructuredSerializedData,
+ can_gc: CanGc,
+ ) {
let worker = address.root();
if worker.is_terminated() {
@@ -109,10 +113,18 @@ impl Worker {
let _ac = enter_realm(target);
rooted!(in(*GlobalScope::get_cx()) let mut message = UndefinedValue());
if let Ok(ports) = structuredclone::read(&global, data, message.handle_mut()) {
- MessageEvent::dispatch_jsval(target, &global, message.handle(), None, None, ports);
+ MessageEvent::dispatch_jsval(
+ target,
+ &global,
+ message.handle(),
+ None,
+ None,
+ ports,
+ can_gc,
+ );
} else {
// Step 4 of the "port post message steps" of the implicit messageport, fire messageerror.
- MessageEvent::dispatch_error(target, &global);
+ MessageEvent::dispatch_error(target, &global, can_gc);
}
}