mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Move WebIDL methods to traits implemented by JSRef types.
This commit is contained in:
parent
dfdda0098a
commit
76783b029e
106 changed files with 3644 additions and 1912 deletions
|
@ -65,10 +65,35 @@ impl EventTarget {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn AddEventListener(&mut self,
|
||||
ty: DOMString,
|
||||
listener: Option<EventListener>,
|
||||
capture: bool) {
|
||||
pub fn dispatch_event_with_target<'a>(&self,
|
||||
abstract_self: &JSRef<'a, EventTarget>,
|
||||
abstract_target: Option<JSRef<'a, EventTarget>>,
|
||||
event: &mut JSRef<Event>) -> Fallible<bool> {
|
||||
if event.get().dispatching || !event.get().initialized {
|
||||
return Err(InvalidState);
|
||||
}
|
||||
Ok(dispatch_event(abstract_self, abstract_target, event))
|
||||
}
|
||||
}
|
||||
|
||||
pub trait EventTargetMethods {
|
||||
fn AddEventListener(&mut self,
|
||||
ty: DOMString,
|
||||
listener: Option<EventListener>,
|
||||
capture: bool);
|
||||
fn RemoveEventListener(&mut self,
|
||||
ty: DOMString,
|
||||
listener: Option<EventListener>,
|
||||
capture: bool);
|
||||
fn DispatchEvent(&self, abstract_self: &JSRef<EventTarget>,
|
||||
event: &mut JSRef<Event>) -> Fallible<bool>;
|
||||
}
|
||||
|
||||
impl<'a> EventTargetMethods for JSRef<'a, EventTarget> {
|
||||
fn AddEventListener(&mut self,
|
||||
ty: DOMString,
|
||||
listener: Option<EventListener>,
|
||||
capture: bool) {
|
||||
for &listener in listener.iter() {
|
||||
let entry = self.handlers.find_or_insert_with(ty.clone(), |_| vec!());
|
||||
let phase = if capture { Capturing } else { Bubbling };
|
||||
|
@ -82,10 +107,10 @@ impl EventTarget {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn RemoveEventListener(&mut self,
|
||||
ty: DOMString,
|
||||
listener: Option<EventListener>,
|
||||
capture: bool) {
|
||||
fn RemoveEventListener(&mut self,
|
||||
ty: DOMString,
|
||||
listener: Option<EventListener>,
|
||||
capture: bool) {
|
||||
for &listener in listener.iter() {
|
||||
let mut entry = self.handlers.find_mut(&ty);
|
||||
for entry in entry.mut_iter() {
|
||||
|
@ -102,20 +127,10 @@ impl EventTarget {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn DispatchEvent(&self, abstract_self: &JSRef<EventTarget>,
|
||||
event: &mut JSRef<Event>) -> Fallible<bool> {
|
||||
fn DispatchEvent(&self, abstract_self: &JSRef<EventTarget>,
|
||||
event: &mut JSRef<Event>) -> Fallible<bool> {
|
||||
self.dispatch_event_with_target(abstract_self, None, event)
|
||||
}
|
||||
|
||||
pub fn dispatch_event_with_target<'a>(&self,
|
||||
abstract_self: &JSRef<'a, EventTarget>,
|
||||
abstract_target: Option<JSRef<'a, EventTarget>>,
|
||||
event: &mut JSRef<Event>) -> Fallible<bool> {
|
||||
if event.get().dispatching || !event.get().initialized {
|
||||
return Err(InvalidState);
|
||||
}
|
||||
Ok(dispatch_event(abstract_self, abstract_target, event))
|
||||
}
|
||||
}
|
||||
|
||||
impl Reflectable for EventTarget {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue