mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Remove Traceable from eventtarget.rs
This commit is contained in:
parent
7e1e76f8b0
commit
25af998842
1 changed files with 9 additions and 10 deletions
|
@ -8,7 +8,6 @@ use dom::bindings::codegen::Bindings::EventListenerBinding::EventListener;
|
||||||
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
|
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
|
||||||
use dom::bindings::error::{Fallible, InvalidState, report_pending_exception};
|
use dom::bindings::error::{Fallible, InvalidState, report_pending_exception};
|
||||||
use dom::bindings::js::JSRef;
|
use dom::bindings::js::JSRef;
|
||||||
use dom::bindings::trace::Traceable;
|
|
||||||
use dom::bindings::utils::{Reflectable, Reflector};
|
use dom::bindings::utils::{Reflectable, Reflector};
|
||||||
use dom::event::Event;
|
use dom::event::Event;
|
||||||
use dom::eventdispatcher::dispatch_event;
|
use dom::eventdispatcher::dispatch_event;
|
||||||
|
@ -70,7 +69,7 @@ pub struct EventListenerEntry {
|
||||||
pub struct EventTarget {
|
pub struct EventTarget {
|
||||||
pub type_id: EventTargetTypeId,
|
pub type_id: EventTargetTypeId,
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
handlers: Traceable<RefCell<HashMap<DOMString, Vec<EventListenerEntry>>>>,
|
handlers: RefCell<HashMap<DOMString, Vec<EventListenerEntry>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EventTarget {
|
impl EventTarget {
|
||||||
|
@ -78,19 +77,19 @@ impl EventTarget {
|
||||||
EventTarget {
|
EventTarget {
|
||||||
type_id: type_id,
|
type_id: type_id,
|
||||||
reflector_: Reflector::new(),
|
reflector_: Reflector::new(),
|
||||||
handlers: Traceable::new(RefCell::new(HashMap::new())),
|
handlers: RefCell::new(HashMap::new()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_listeners(&self, type_: &str) -> Option<Vec<EventListener>> {
|
pub fn get_listeners(&self, type_: &str) -> Option<Vec<EventListener>> {
|
||||||
self.handlers.deref().borrow().find_equiv(&type_).map(|listeners| {
|
self.handlers.borrow().find_equiv(&type_).map(|listeners| {
|
||||||
listeners.iter().map(|entry| entry.listener.get_listener()).collect()
|
listeners.iter().map(|entry| entry.listener.get_listener()).collect()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_listeners_for(&self, type_: &str, desired_phase: ListenerPhase)
|
pub fn get_listeners_for(&self, type_: &str, desired_phase: ListenerPhase)
|
||||||
-> Option<Vec<EventListener>> {
|
-> Option<Vec<EventListener>> {
|
||||||
self.handlers.deref().borrow().find_equiv(&type_).map(|listeners| {
|
self.handlers.borrow().find_equiv(&type_).map(|listeners| {
|
||||||
let filtered = listeners.iter().filter(|entry| entry.phase == desired_phase);
|
let filtered = listeners.iter().filter(|entry| entry.phase == desired_phase);
|
||||||
filtered.map(|entry| entry.listener.get_listener()).collect()
|
filtered.map(|entry| entry.listener.get_listener()).collect()
|
||||||
})
|
})
|
||||||
|
@ -131,7 +130,7 @@ impl<'a> EventTargetHelpers for JSRef<'a, EventTarget> {
|
||||||
fn set_inline_event_listener(self,
|
fn set_inline_event_listener(self,
|
||||||
ty: DOMString,
|
ty: DOMString,
|
||||||
listener: Option<EventListener>) {
|
listener: Option<EventListener>) {
|
||||||
let mut handlers = self.handlers.deref().borrow_mut();
|
let mut handlers = self.handlers.borrow_mut();
|
||||||
let entries = handlers.find_or_insert_with(ty, |_| vec!());
|
let entries = handlers.find_or_insert_with(ty, |_| vec!());
|
||||||
let idx = entries.iter().position(|&entry| {
|
let idx = entries.iter().position(|&entry| {
|
||||||
match entry.listener {
|
match entry.listener {
|
||||||
|
@ -161,7 +160,7 @@ impl<'a> EventTargetHelpers for JSRef<'a, EventTarget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_inline_event_listener(self, ty: DOMString) -> Option<EventListener> {
|
fn get_inline_event_listener(self, ty: DOMString) -> Option<EventListener> {
|
||||||
let handlers = self.handlers.deref().borrow();
|
let handlers = self.handlers.borrow();
|
||||||
let entries = handlers.find(&ty);
|
let entries = handlers.find(&ty);
|
||||||
entries.and_then(|entries| entries.iter().find(|entry| {
|
entries.and_then(|entries| entries.iter().find(|entry| {
|
||||||
match entry.listener {
|
match entry.listener {
|
||||||
|
@ -224,7 +223,7 @@ impl<'a> EventTargetHelpers for JSRef<'a, EventTarget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn has_handlers(self) -> bool {
|
fn has_handlers(self) -> bool {
|
||||||
!self.handlers.deref().borrow().is_empty()
|
!self.handlers.borrow().is_empty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,7 +234,7 @@ impl<'a> EventTargetMethods for JSRef<'a, EventTarget> {
|
||||||
capture: bool) {
|
capture: bool) {
|
||||||
match listener {
|
match listener {
|
||||||
Some(listener) => {
|
Some(listener) => {
|
||||||
let mut handlers = self.handlers.deref().borrow_mut();
|
let mut handlers = self.handlers.borrow_mut();
|
||||||
let entry = handlers.find_or_insert_with(ty, |_| vec!());
|
let entry = handlers.find_or_insert_with(ty, |_| vec!());
|
||||||
let phase = if capture { Capturing } else { Bubbling };
|
let phase = if capture { Capturing } else { Bubbling };
|
||||||
let new_entry = EventListenerEntry {
|
let new_entry = EventListenerEntry {
|
||||||
|
@ -256,7 +255,7 @@ impl<'a> EventTargetMethods for JSRef<'a, EventTarget> {
|
||||||
capture: bool) {
|
capture: bool) {
|
||||||
match listener {
|
match listener {
|
||||||
Some(listener) => {
|
Some(listener) => {
|
||||||
let mut handlers = self.handlers.deref().borrow_mut();
|
let mut handlers = self.handlers.borrow_mut();
|
||||||
let mut entry = handlers.find_mut(&ty);
|
let mut entry = handlers.find_mut(&ty);
|
||||||
for entry in entry.iter_mut() {
|
for entry in entry.iter_mut() {
|
||||||
let phase = if capture { Capturing } else { Bubbling };
|
let phase = if capture { Capturing } else { Bubbling };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue