aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/dedicatedworkerglobalscope.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/dedicatedworkerglobalscope.rs')
-rw-r--r--components/script/dom/dedicatedworkerglobalscope.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs
index a3adde75498..d0e8ba8258d 100644
--- a/components/script/dom/dedicatedworkerglobalscope.rs
+++ b/components/script/dom/dedicatedworkerglobalscope.rs
@@ -462,13 +462,20 @@ impl DedicatedWorkerGlobalScope {
fn handle_script_event(&self, msg: WorkerScriptMsg) {
match msg {
- WorkerScriptMsg::DOMMessage(data) => {
+ WorkerScriptMsg::DOMMessage { origin, data } => {
let scope = self.upcast::<WorkerGlobalScope>();
let target = self.upcast();
let _ac = enter_realm(self);
rooted!(in(*scope.get_cx()) let mut message = UndefinedValue());
- data.read(scope.upcast(), message.handle_mut());
- MessageEvent::dispatch_jsval(target, scope.upcast(), message.handle(), None, None);
+ assert!(data.read(scope.upcast(), message.handle_mut()));
+ MessageEvent::dispatch_jsval(
+ target,
+ scope.upcast(),
+ message.handle(),
+ Some(&origin),
+ None,
+ vec![],
+ );
},
WorkerScriptMsg::Common(msg) => {
self.upcast::<WorkerGlobalScope>().process_event(msg);
@@ -562,11 +569,13 @@ unsafe extern "C" fn interrupt_callback(cx: *mut JSContext) -> bool {
impl DedicatedWorkerGlobalScopeMethods for DedicatedWorkerGlobalScope {
// https://html.spec.whatwg.org/multipage/#dom-dedicatedworkerglobalscope-postmessage
fn PostMessage(&self, cx: SafeJSContext, message: HandleValue) -> ErrorResult {
- let data = StructuredCloneData::write(*cx, message)?;
+ rooted!(in(*cx) let transfer = UndefinedValue());
+ let data = StructuredCloneData::write(*cx, message, transfer.handle())?;
let worker = self.worker.borrow().as_ref().unwrap().clone();
- let pipeline_id = self.upcast::<GlobalScope>().pipeline_id();
+ let pipeline_id = self.global().pipeline_id();
+ let origin = self.global().origin().immutable().ascii_serialization();
let task = Box::new(task!(post_worker_message: move || {
- Worker::handle_message(worker, data);
+ Worker::handle_message(worker, origin, data);
}));
// TODO: Change this task source to a new `unshipped-port-message-queue` task source
self.parent_sender