From ac288f6657b867652b884c4383c38eb45c91e714 Mon Sep 17 00:00:00 2001 From: Tetsuharu OHZEKI Date: Sat, 10 May 2014 01:17:52 +0900 Subject: [PATCH] Add UIEvent::new_uninitialized(). --- src/components/script/dom/document.rs | 2 +- src/components/script/dom/uievent.rs | 21 ++++++++++++++++----- src/components/script/script_task.rs | 7 +++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index c10c791d828..9c51aa6d1c7 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -532,8 +532,8 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { match interface.to_ascii_lower().as_slice() { // FIXME: Implement CustomEvent (http://dom.spec.whatwg.org/#customevent) - "uievents" | "uievent" => Ok(EventCast::from_temporary(UIEvent::new(&*window))), "mouseevents" | "mouseevent" => Ok(EventCast::from_temporary(MouseEvent::new(&*window))), + "uievents" | "uievent" => Ok(EventCast::from_temporary(UIEvent::new_uninitialized(&*window))), "htmlevents" | "events" | "event" => Ok(Event::new(&*window)), _ => Err(NotSupported) } diff --git a/src/components/script/dom/uievent.rs b/src/components/script/dom/uievent.rs index 631353fe498..d37ef605512 100644 --- a/src/components/script/dom/uievent.rs +++ b/src/components/script/dom/uievent.rs @@ -36,19 +36,30 @@ impl UIEvent { } } - pub fn new(window: &JSRef) -> Temporary { + pub fn new_uninitialized(window: &JSRef) -> Temporary { reflect_dom_object(~UIEvent::new_inherited(UIEventTypeId), window, UIEventBinding::Wrap) } + pub fn new(window: &JSRef, + type_: DOMString, + can_bubble: bool, + cancelable: bool, + view: Option>, + detail: i32) -> Temporary { + let mut ev = UIEvent::new_uninitialized(window).root(); + ev.InitUIEvent(type_, can_bubble, cancelable, view, detail); + Temporary::from_rooted(&*ev) + } + pub fn Constructor(owner: &JSRef, type_: DOMString, init: &UIEventBinding::UIEventInit) -> Fallible> { - let mut ev = UIEvent::new(owner).root(); - ev.InitUIEvent(type_, init.parent.bubbles, init.parent.cancelable, - init.view.root_ref(), init.detail); - Ok(Temporary::from_rooted(&*ev)) + let event = UIEvent::new(owner, type_, + init.parent.bubbles, init.parent.cancelable, + init.view.root_ref(), init.detail); + Ok(event) } } diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs index 45f1349b3f6..bc0a44ee786 100644 --- a/src/components/script/script_task.rs +++ b/src/components/script/script_task.rs @@ -16,7 +16,7 @@ use dom::document::{Document, HTMLDocument, DocumentMethods, DocumentHelpers}; use dom::element::{Element, AttributeHandlers}; use dom::event::{Event_, ResizeEvent, ReflowEvent, ClickEvent, MouseDownEvent, MouseMoveEvent, MouseUpEvent}; use dom::event::{Event, EventMethods}; -use dom::uievent::{UIEvent, UIEventMethods}; +use dom::uievent::UIEvent; use dom::eventtarget::{EventTarget, EventTargetHelpers}; use dom::node; use dom::node::{Node, NodeHelpers}; @@ -1093,9 +1093,8 @@ impl ScriptTask { Some(mut window) => { // http://dev.w3.org/csswg/cssom-view/#resizing-viewports // https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#event-type-resize - let mut uievent = UIEvent::new(&*window).root(); - uievent.InitUIEvent("resize".to_owned(), false, false, - Some((*window).clone()), 0i32); + let mut uievent = UIEvent::new(&window.clone(), "resize".to_owned(), false, false, + Some((*window).clone()), 0i32).root(); let event: &mut JSRef = EventCast::from_mut_ref(&mut *uievent); let wintarget: &mut JSRef = EventTargetCast::from_mut_ref(&mut *window);