diff options
Diffstat (limited to 'components/script/dom/serviceworker.rs')
-rw-r--r-- | components/script/dom/serviceworker.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/components/script/dom/serviceworker.rs b/components/script/dom/serviceworker.rs index dd968c34d94..8d33337f1c5 100644 --- a/components/script/dom/serviceworker.rs +++ b/components/script/dom/serviceworker.rs @@ -19,6 +19,8 @@ use crate::dom::globalscope::GlobalScope; use crate::script_runtime::JSContext; use crate::task::TaskOnce; use dom_struct::dom_struct; +use js::jsapi::JSContext; +use js::jsval::UndefinedValue; use js::rust::HandleValue; use script_traits::{DOMMessage, ScriptMsg}; use servo_url::ServoUrl; @@ -97,14 +99,18 @@ impl ServiceWorkerMethods for ServiceWorker { return Err(Error::InvalidState); } // Step 7 - let data = StructuredCloneData::write(*cx, message)?; - let msg_vec = DOMMessage(data.move_to_arraybuffer()); + rooted!(in(*cx) let transfer = UndefinedValue()); + let data = StructuredCloneData::write(*cx, message, transfer.handle())?; + let msg_vec = DOMMessage { + origin: self.global().origin().immutable().ascii_serialization(), + data: data.move_to_arraybuffer(), + }; let _ = self .global() .script_to_constellation_chan() .send(ScriptMsg::ForwardDOMMessage( msg_vec, - self.scope_url.clone(), + self.scope_url.clone() )); Ok(()) } |