diff options
Diffstat (limited to 'components/script/dom/messageevent.rs')
-rw-r--r-- | components/script/dom/messageevent.rs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index 99f8603973e..004c80aad31 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -5,7 +5,7 @@ use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::{HandleObject, HandleValue}; +use js::rust::{HandleObject, HandleValue, MutableHandleValue}; use servo_atoms::Atom; use crate::dom::bindings::cell::DomRefCell; @@ -266,8 +266,8 @@ impl MessageEventMethods for MessageEvent { } /// <https://html.spec.whatwg.org/multipage/#dom-messageevent-data> - fn Data(&self, _cx: JSContext) -> JSVal { - self.data.get() + fn Data(&self, _cx: JSContext, mut retval: MutableHandleValue) { + retval.set(self.data.get()) } /// <https://html.spec.whatwg.org/multipage/#dom-messageevent-origin> @@ -302,9 +302,10 @@ impl MessageEventMethods for MessageEvent { } /// <https://html.spec.whatwg.org/multipage/#dom-messageevent-ports> - fn Ports(&self, cx: JSContext) -> JSVal { + fn Ports(&self, cx: JSContext, mut retval: MutableHandleValue) { if let Some(ports) = &*self.frozen_ports.borrow() { - return ports.get(); + retval.set(ports.get()); + return; } let ports: Vec<DomRoot<MessagePort>> = self @@ -313,7 +314,7 @@ impl MessageEventMethods for MessageEvent { .iter() .map(|port| DomRoot::from_ref(&**port)) .collect(); - let frozen_ports = to_frozen_array(ports.as_slice(), cx); + to_frozen_array(ports.as_slice(), cx, retval); // Safety: need to create the Heap value in its final memory location before setting it. *self.frozen_ports.borrow_mut() = Some(Heap::default()); @@ -321,9 +322,7 @@ impl MessageEventMethods for MessageEvent { .borrow() .as_ref() .unwrap() - .set(frozen_ports); - - frozen_ports + .set(retval.get()); } /// <https://html.spec.whatwg.org/multipage/#dom-messageevent-initmessageevent> |