Implement Event::new_initialized and initialize the event in Event::new.

This commit is contained in:
Ms2ger 2014-05-31 10:42:21 +02:00
parent d7cac61d9c
commit d896442a4a
4 changed files with 22 additions and 13 deletions

View file

@ -546,7 +546,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
"uievents" | "uievent" => Ok(EventCast::from_temporary(UIEvent::new_uninitialized(&*window))),
"mouseevents" | "mouseevent" => Ok(EventCast::from_temporary(MouseEvent::new_uninitialized(&*window))),
"customevent" => Ok(EventCast::from_temporary(CustomEvent::new_uninitialized(&*window))),
"htmlevents" | "events" | "event" => Ok(Event::new(&*window)),
"htmlevents" | "events" | "event" => Ok(Event::new_uninitialized(&*window)),
_ => Err(NotSupported)
}
}

View file

@ -83,18 +83,25 @@ impl Event {
}
}
pub fn new(window: &JSRef<Window>) -> Temporary<Event> {
pub fn new_uninitialized(window: &JSRef<Window>) -> Temporary<Event> {
reflect_dom_object(box Event::new_inherited(HTMLEventTypeId),
window,
EventBinding::Wrap)
}
pub fn new(window: &JSRef<Window>,
type_: DOMString,
can_bubble: bool,
cancelable: bool) -> Temporary<Event> {
let mut event = Event::new_uninitialized(window).root();
event.InitEvent(type_, can_bubble, cancelable);
Temporary::from_rooted(&*event)
}
pub fn Constructor(global: &JSRef<Window>,
type_: DOMString,
init: &EventBinding::EventInit) -> Fallible<Temporary<Event>> {
let mut ev = Event::new(global).root();
ev.InitEvent(type_, init.bubbles, init.cancelable);
Ok(Temporary::from_rooted(&*ev))
Ok(Event::new(global, type_, init.bubbles, init.cancelable))
}
}

View file

@ -10,7 +10,7 @@ use dom::bindings::codegen::BindingDeclarations::XMLHttpRequestBinding::XMLHttpR
use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast, XMLHttpRequestDerived};
use dom::bindings::error::{ErrorResult, InvalidState, Network, Syntax, Security};
use dom::document::Document;
use dom::event::{Event, EventMethods};
use dom::event::Event;
use dom::eventtarget::{EventTarget, EventTargetHelpers, XMLHttpRequestTargetTypeId};
use dom::bindings::conversions::ToJSValConvertible;
use dom::bindings::error::Fallible;
@ -564,8 +564,8 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> {
fn change_ready_state(&mut self, rs: XMLHttpRequestState) {
self.ready_state = rs;
let win = &*self.global.root();
let mut event = Event::new(win).root();
event.InitEvent("readystatechange".to_owned(), false, true);
let mut event =
Event::new(win, "readystatechange".to_owned(), false, true).root();
let target: &JSRef<EventTarget> = EventTargetCast::from_ref(self);
target.dispatch_event_with_target(None, &mut *event).ok();
}