Auto merge of #13600 - slester:13586, r=jdm

Invert conditional and return early for AddEventListener/RemoveEventL…

<!-- Please describe your changes on the following line: -->
Cleans up code as described in #13586 by returning early instead of nesting everything in an `if` statement.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #13586

<!-- Either: -->
- [x] These changes do not require tests because the change is a cleanup of code and the author of the issue stated that new tests were not required.

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

…istener

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13600)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-10-05 12:04:03 -05:00 committed by GitHub
commit 596fdf2fef

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);
} }
} }
} }