diff options
author | bors-servo <metajack+bors@gmail.com> | 2014-12-08 01:55:08 -0700 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2014-12-08 01:55:08 -0700 |
commit | bdb3a2538b9f10aad4c911cc0118257d8311cd26 (patch) | |
tree | a414ece955af80d2fcc1e839fba4a6647b37959a /components/script | |
parent | 673dc339712ea58bc6a4d4c90d556e5c9e84a65a (diff) | |
parent | 8b8eea15c71d3f2e68f58f6273c5c0de14b7cf86 (diff) | |
download | servo-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.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) |