aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/document.rs3
-rw-r--r--components/script/dom/messageevent.rs16
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)