From 07a89a06c96b4c27850ffb4df386fae4ce0a4494 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 17 Jul 2014 20:14:42 +0200 Subject: [PATCH] Implement MessageEvent::dispatch. This avoids duplicating the dispatching code for multiple postMessage implementations. --- src/components/script/dom/messageevent.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/components/script/dom/messageevent.rs b/src/components/script/dom/messageevent.rs index a9d536fad06..05eca45fd71 100644 --- a/src/components/script/dom/messageevent.rs +++ b/src/components/script/dom/messageevent.rs @@ -4,12 +4,14 @@ use dom::bindings::codegen::Bindings::MessageEventBinding; use dom::bindings::codegen::InheritTypes::{EventCast, MessageEventDerived}; +use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::trace::Traceable; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::event::{Event, EventMethods, MessageEventTypeId}; +use dom::eventtarget::{EventTarget, EventTargetHelpers}; use servo_util::str::DOMString; @@ -63,6 +65,19 @@ impl MessageEvent { } } +impl MessageEvent { + pub fn dispatch(target: &JSRef, + scope: &GlobalRef, + message: DOMString) { + let messageevent = MessageEvent::new( + scope, "message".to_string(), false, false, + message.to_jsval(scope.get_cx()), + "".to_string(), "".to_string()).root(); + let event: &JSRef = EventCast::from_ref(&*messageevent); + target.dispatch_event_with_target(None, &*event).unwrap(); + } +} + pub trait MessageEventMethods { fn Data(&self, cx: *mut JSContext) -> JSVal; fn Origin(&self) -> DOMString;