Invert conditional and return early for AddEventListener/RemoveEventListener

This commit is contained in:
Stephen Lester 2016-10-05 07:48:11 -07:00
parent 8a3af9d1b9
commit 76e04e2acd

View file

@ -515,21 +515,23 @@ impl EventTargetMethods for EventTarget {
ty: DOMString, ty: DOMString,
listener: Option<Rc<EventListener>>, listener: Option<Rc<EventListener>>,
capture: bool) { capture: bool) {
if let Some(listener) = listener { let listener = match listener {
let mut handlers = self.handlers.borrow_mut(); Some(l) => l,
let entry = match handlers.entry(Atom::from(ty)) { None => return,
Occupied(entry) => entry.into_mut(), };
Vacant(entry) => entry.insert(EventListeners(vec!())), let mut handlers = self.handlers.borrow_mut();
}; let entry = match handlers.entry(Atom::from(ty)) {
Occupied(entry) => entry.into_mut(),
Vacant(entry) => entry.insert(EventListeners(vec!())),
};
let phase = if capture { ListenerPhase::Capturing } else { ListenerPhase::Bubbling }; let phase = if capture { ListenerPhase::Capturing } else { ListenerPhase::Bubbling };
let new_entry = EventListenerEntry { let new_entry = EventListenerEntry {
phase: phase, phase: phase,
listener: EventListenerType::Additive(listener) listener: EventListenerType::Additive(listener)
}; };
if !entry.contains(&new_entry) { if !entry.contains(&new_entry) {
entry.push(new_entry); entry.push(new_entry);
}
} }
} }
@ -538,18 +540,20 @@ impl EventTargetMethods for EventTarget {
ty: DOMString, ty: DOMString,
listener: Option<Rc<EventListener>>, listener: Option<Rc<EventListener>>,
capture: bool) { capture: bool) {
if let Some(ref listener) = listener { let ref listener = match listener {
let mut handlers = self.handlers.borrow_mut(); Some(l) => l,
let entry = handlers.get_mut(&Atom::from(ty)); None => return,
for entry in entry { };
let phase = if capture { ListenerPhase::Capturing } else { ListenerPhase::Bubbling }; let mut handlers = self.handlers.borrow_mut();
let old_entry = EventListenerEntry { let entry = handlers.get_mut(&Atom::from(ty));
phase: phase, for entry in entry {
listener: EventListenerType::Additive(listener.clone()) let phase = if capture { ListenerPhase::Capturing } else { ListenerPhase::Bubbling };
}; let old_entry = EventListenerEntry {
if let Some(position) = entry.iter().position(|e| *e == old_entry) { phase: phase,
entry.remove(position); listener: EventListenerType::Additive(listener.clone())
} };
if let Some(position) = entry.iter().position(|e| *e == old_entry) {
entry.remove(position);
} }
} }
} }