aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2014-12-08 01:55:08 -0700
committerbors-servo <metajack+bors@gmail.com>2014-12-08 01:55:08 -0700
commitbdb3a2538b9f10aad4c911cc0118257d8311cd26 (patch)
treea414ece955af80d2fcc1e839fba4a6647b37959a /components/script
parent673dc339712ea58bc6a4d4c90d556e5c9e84a65a (diff)
parent8b8eea15c71d3f2e68f58f6273c5c0de14b7cf86 (diff)
downloadservo-bdb3a2538b9f10aad4c911cc0118257d8311cd26.tar.gz
servo-bdb3a2538b9f10aad4c911cc0118257d8311cd26.zip
auto merge of #4257 : johnathan79717/servo/4008, r=jdm
This is a fix for issue #4008.
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)