mirror of
https://github.com/servo/servo.git
synced 2025-07-30 02:30:21 +01:00
auto merge of #3651 : ttaubert/servo/issue/3643-event-new-enums, r=Manishearth
r? @jdm
This commit is contained in:
commit
293e06fd7c
4 changed files with 25 additions and 11 deletions
|
@ -35,6 +35,18 @@ pub enum EventTypeId {
|
||||||
UIEventTypeId
|
UIEventTypeId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[deriving(PartialEq)]
|
||||||
|
pub enum EventBubbles {
|
||||||
|
Bubbles,
|
||||||
|
DoesNotBubble
|
||||||
|
}
|
||||||
|
|
||||||
|
#[deriving(PartialEq)]
|
||||||
|
pub enum EventCancelable {
|
||||||
|
Cancelable,
|
||||||
|
NotCancelable
|
||||||
|
}
|
||||||
|
|
||||||
#[jstraceable]
|
#[jstraceable]
|
||||||
#[must_root]
|
#[must_root]
|
||||||
pub struct Event {
|
pub struct Event {
|
||||||
|
@ -84,17 +96,19 @@ impl Event {
|
||||||
|
|
||||||
pub fn new(global: &GlobalRef,
|
pub fn new(global: &GlobalRef,
|
||||||
type_: DOMString,
|
type_: DOMString,
|
||||||
can_bubble: bool,
|
bubbles: EventBubbles,
|
||||||
cancelable: bool) -> Temporary<Event> {
|
cancelable: EventCancelable) -> Temporary<Event> {
|
||||||
let event = Event::new_uninitialized(global).root();
|
let event = Event::new_uninitialized(global).root();
|
||||||
event.InitEvent(type_, can_bubble, cancelable);
|
event.InitEvent(type_, bubbles == Bubbles, cancelable == Cancelable);
|
||||||
Temporary::from_rooted(*event)
|
Temporary::from_rooted(*event)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn Constructor(global: &GlobalRef,
|
pub fn Constructor(global: &GlobalRef,
|
||||||
type_: DOMString,
|
type_: DOMString,
|
||||||
init: &EventBinding::EventInit) -> Fallible<Temporary<Event>> {
|
init: &EventBinding::EventInit) -> Fallible<Temporary<Event>> {
|
||||||
Ok(Event::new(global, type_, init.bubbles, init.cancelable))
|
let bubbles = if init.bubbles { Bubbles } else { DoesNotBubble };
|
||||||
|
let cancelable = if init.cancelable { Cancelable } else { NotCancelable };
|
||||||
|
Ok(Event::new(global, type_, bubbles, cancelable))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ use dom::bindings::utils::{Reflectable, Reflector};
|
||||||
use dom::document::{Document, DocumentHelpers};
|
use dom::document::{Document, DocumentHelpers};
|
||||||
use dom::element::{Element, AttributeHandlers, HTMLFormElementTypeId, HTMLTextAreaElementTypeId, HTMLDataListElementTypeId};
|
use dom::element::{Element, AttributeHandlers, HTMLFormElementTypeId, HTMLTextAreaElementTypeId, HTMLDataListElementTypeId};
|
||||||
use dom::element::{HTMLInputElementTypeId, HTMLButtonElementTypeId, HTMLObjectElementTypeId, HTMLSelectElementTypeId};
|
use dom::element::{HTMLInputElementTypeId, HTMLButtonElementTypeId, HTMLObjectElementTypeId, HTMLSelectElementTypeId};
|
||||||
use dom::event::Event;
|
use dom::event::{Event, Bubbles, Cancelable};
|
||||||
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||||
use dom::htmlelement::HTMLElement;
|
use dom::htmlelement::HTMLElement;
|
||||||
use dom::htmlinputelement::HTMLInputElement;
|
use dom::htmlinputelement::HTMLInputElement;
|
||||||
|
@ -172,7 +172,7 @@ impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> {
|
||||||
// TODO: Handle validation
|
// TODO: Handle validation
|
||||||
let event = Event::new(&Window(*win),
|
let event = Event::new(&Window(*win),
|
||||||
"submit".to_string(),
|
"submit".to_string(),
|
||||||
true, true).root();
|
Bubbles, Cancelable).root();
|
||||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||||
target.DispatchEvent(*event).ok();
|
target.DispatchEvent(*event).ok();
|
||||||
if event.DefaultPrevented() {
|
if event.DefaultPrevented() {
|
||||||
|
|
|
@ -17,7 +17,7 @@ use dom::bindings::js::{MutNullableJS, JS, JSRef, Temporary, OptionalRootedRoota
|
||||||
use dom::bindings::str::ByteString;
|
use dom::bindings::str::ByteString;
|
||||||
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
use dom::document::Document;
|
use dom::document::Document;
|
||||||
use dom::event::Event;
|
use dom::event::{Event, DoesNotBubble, Cancelable};
|
||||||
use dom::eventtarget::{EventTarget, EventTargetHelpers, XMLHttpRequestTargetTypeId};
|
use dom::eventtarget::{EventTarget, EventTargetHelpers, XMLHttpRequestTargetTypeId};
|
||||||
use dom::progressevent::ProgressEvent;
|
use dom::progressevent::ProgressEvent;
|
||||||
use dom::urlsearchparams::URLSearchParamsHelpers;
|
use dom::urlsearchparams::URLSearchParamsHelpers;
|
||||||
|
@ -746,7 +746,7 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> {
|
||||||
let global = self.global.root();
|
let global = self.global.root();
|
||||||
let event = Event::new(&global.root_ref(),
|
let event = Event::new(&global.root_ref(),
|
||||||
"readystatechange".to_string(),
|
"readystatechange".to_string(),
|
||||||
false, true).root();
|
DoesNotBubble, Cancelable).root();
|
||||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||||
target.dispatch_event_with_target(None, *event).ok();
|
target.dispatch_event_with_target(None, *event).ok();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ use dom::bindings::utils::{wrap_for_same_compartment, pre_wrap};
|
||||||
use dom::document::{Document, HTMLDocument, DocumentHelpers};
|
use dom::document::{Document, HTMLDocument, DocumentHelpers};
|
||||||
use dom::element::{Element, HTMLButtonElementTypeId, HTMLInputElementTypeId};
|
use dom::element::{Element, HTMLButtonElementTypeId, HTMLInputElementTypeId};
|
||||||
use dom::element::{HTMLSelectElementTypeId, HTMLTextAreaElementTypeId, HTMLOptionElementTypeId};
|
use dom::element::{HTMLSelectElementTypeId, HTMLTextAreaElementTypeId, HTMLOptionElementTypeId};
|
||||||
use dom::event::Event;
|
use dom::event::{Event, Bubbles, DoesNotBubble, Cancelable, NotCancelable};
|
||||||
use dom::uievent::UIEvent;
|
use dom::uievent::UIEvent;
|
||||||
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
||||||
use dom::node;
|
use dom::node;
|
||||||
|
@ -851,7 +851,7 @@ impl ScriptTask {
|
||||||
// We have no concept of a document loader right now, so just dispatch the
|
// We have no concept of a document loader right now, so just dispatch the
|
||||||
// "load" event as soon as we've finished executing all scripts parsed during
|
// "load" event as soon as we've finished executing all scripts parsed during
|
||||||
// the initial load.
|
// the initial load.
|
||||||
let event = Event::new(&global::Window(*window), "load".to_string(), false, false).root();
|
let event = Event::new(&global::Window(*window), "load".to_string(), DoesNotBubble, NotCancelable).root();
|
||||||
let doctarget: JSRef<EventTarget> = EventTargetCast::from_ref(*document);
|
let doctarget: JSRef<EventTarget> = EventTargetCast::from_ref(*document);
|
||||||
let wintarget: JSRef<EventTarget> = EventTargetCast::from_ref(*window);
|
let wintarget: JSRef<EventTarget> = EventTargetCast::from_ref(*window);
|
||||||
let _ = wintarget.dispatch_event_with_target(Some(doctarget), *event);
|
let _ = wintarget.dispatch_event_with_target(Some(doctarget), *event);
|
||||||
|
@ -981,7 +981,7 @@ impl ScriptTask {
|
||||||
let event =
|
let event =
|
||||||
Event::new(&global::Window(*window),
|
Event::new(&global::Window(*window),
|
||||||
"click".to_string(),
|
"click".to_string(),
|
||||||
true, true).root();
|
Bubbles, Cancelable).root();
|
||||||
let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(node);
|
let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(node);
|
||||||
let _ = eventtarget.dispatch_event_with_target(None, *event);
|
let _ = eventtarget.dispatch_event_with_target(None, *event);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue