diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/document.rs | 3 | ||||
-rw-r--r-- | components/script/dom/messageevent.rs | 16 |
2 files changed, 15 insertions, 4 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 8a4beae9dc4..174a43af664 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -47,6 +47,7 @@ use dom::htmltitleelement::HTMLTitleElement; use dom::location::Location; use dom::mouseevent::MouseEvent; use dom::keyboardevent::KeyboardEvent; +use dom::messageevent::MessageEvent; use dom::node::{Node, ElementNodeTypeId, DocumentNodeTypeId, NodeHelpers}; use dom::node::{CloneChildren, DoNotCloneChildren}; use dom::nodelist::NodeList; @@ -711,6 +712,8 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { global::Window(*window))), "keyboardevent" | "keyevents" => Ok(EventCast::from_temporary( KeyboardEvent::new_uninitialized(*window))), + "messageevent" => Ok(EventCast::from_temporary( + MessageEvent::new_uninitialized(global::Window(*window)))), _ => Err(NotSupported) } } diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs index f2540a4bb85..32842fd2897 100644 --- a/components/script/dom/messageevent.rs +++ b/components/script/dom/messageevent.rs @@ -16,7 +16,7 @@ use dom::eventtarget::{EventTarget, EventTargetHelpers}; use servo_util::str::DOMString; use js::jsapi::JSContext; -use js::jsval::JSVal; +use js::jsval::{JSVal, UndefinedValue}; #[dom_struct] pub struct MessageEvent { @@ -43,13 +43,21 @@ impl MessageEvent { } } + pub fn new_uninitialized(global: GlobalRef) -> Temporary<MessageEvent> { + MessageEvent::new_initialized(global, UndefinedValue(), "".to_string(), "".to_string()) + } + + pub fn new_initialized(global: GlobalRef, data: JSVal, origin: DOMString, lastEventId: DOMString) -> Temporary<MessageEvent> { + reflect_dom_object(box MessageEvent::new_inherited(data, origin, lastEventId), + global, + MessageEventBinding::Wrap) + } + pub fn new(global: GlobalRef, type_: DOMString, bubbles: bool, cancelable: bool, data: JSVal, origin: DOMString, lastEventId: DOMString) -> Temporary<MessageEvent> { - let ev = reflect_dom_object(box MessageEvent::new_inherited(data, origin, lastEventId), - global, - MessageEventBinding::Wrap).root(); + let ev = MessageEvent::new_initialized(global, data, origin, lastEventId).root(); let event: JSRef<Event> = EventCast::from_ref(*ev); event.InitEvent(type_, bubbles, cancelable); Temporary::from_rooted(*ev) |