Implement MessageEvent::dispatch.

This avoids duplicating the dispatching code for multiple postMessage
implementations.
This commit is contained in:
Ms2ger 2014-07-17 20:14:42 +02:00
parent aa43c1493a
commit 07a89a06c9

View file

@ -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<EventTarget>,
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<Event> = 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;