diff options
Diffstat (limited to 'components/script/dom/messageevent.rs')
-rw-r--r-- | components/script/dom/messageevent.rs | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index c00e2bc5dec..9c2428912f8 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -9,7 +9,7 @@ use crate::dom::bindings::codegen::Bindings::MessageEventBinding::MessageEventMe use crate::dom::bindings::codegen::UnionTypes::WindowProxyOrMessagePortOrServiceWorker; use crate::dom::bindings::error::Fallible; use crate::dom::bindings::inheritance::Castable; -use crate::dom::bindings::reflector::reflect_dom_object; +use crate::dom::bindings::reflector::reflect_dom_object2; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::str::DOMString; use crate::dom::bindings::trace::RootedTraceableBox; @@ -24,7 +24,7 @@ use crate::script_runtime::JSContext; use dom_struct::dom_struct; use js::jsapi::Heap; use js::jsval::JSVal; -use js::rust::HandleValue; +use js::rust::{HandleObject, HandleValue}; use servo_atoms::Atom; #[unrooted_must_root_lint::must_root] @@ -91,8 +91,13 @@ impl MessageEvent { } pub fn new_uninitialized(global: &GlobalScope) -> DomRoot<MessageEvent> { + Self::new_uninitialized_with_proto(global, None) + } + + fn new_uninitialized_with_proto(global: &GlobalScope, proto: Option<HandleObject>) -> DomRoot<MessageEvent> { MessageEvent::new_initialized( global, + proto, HandleValue::undefined(), DOMString::new(), None, @@ -101,8 +106,9 @@ impl MessageEvent { ) } - pub fn new_initialized( + fn new_initialized( global: &GlobalScope, + proto: Option<HandleObject>, data: HandleValue, origin: DOMString, source: Option<&WindowProxyOrMessagePortOrServiceWorker>, @@ -115,7 +121,7 @@ impl MessageEvent { lastEventId, ports, )); - let ev = reflect_dom_object(ev, global); + let ev = reflect_dom_object2(ev, global, proto); ev.data.set(data.get()); ev @@ -132,7 +138,33 @@ impl MessageEvent { lastEventId: DOMString, ports: Vec<DomRoot<MessagePort>>, ) -> DomRoot<MessageEvent> { - let ev = MessageEvent::new_initialized(global, data, origin, source, lastEventId, ports); + Self::new_with_proto( + global, + None, + type_, + bubbles, + cancelable, + data, + origin, + source, + lastEventId, + ports, + ) + } + + fn new_with_proto( + global: &GlobalScope, + proto: Option<HandleObject>, + type_: Atom, + bubbles: bool, + cancelable: bool, + data: HandleValue, + origin: DOMString, + source: Option<&WindowProxyOrMessagePortOrServiceWorker>, + lastEventId: DOMString, + ports: Vec<DomRoot<MessagePort>>, + ) -> DomRoot<MessageEvent> { + let ev = MessageEvent::new_initialized(global, proto, data, origin, source, lastEventId, ports); { let event = ev.upcast::<Event>(); event.init_event(type_, bubbles, cancelable); @@ -142,11 +174,13 @@ impl MessageEvent { pub fn Constructor( global: &GlobalScope, + proto: Option<HandleObject>, type_: DOMString, init: RootedTraceableBox<MessageEventBinding::MessageEventInit>, ) -> Fallible<DomRoot<MessageEvent>> { - let ev = MessageEvent::new( + let ev = MessageEvent::new_with_proto( global, + proto, Atom::from(type_), init.parent.bubbles, init.parent.cancelable, |