Drop event listener exceptions on the floor.

We get a lot of failures from assertions that event listeners haven't
thrown exceptions. As the FIXME above these assertions suggests, we
should just drop them on the floor.
This commit is contained in:
Cameron Zwarich 2014-06-04 17:05:50 -07:00
parent 473b9e488b
commit 7a18ab59c8

View file

@ -48,9 +48,8 @@ pub fn dispatch_event<'a, 'b>(target: &JSRef<'a, EventTarget>,
Some(listeners) => { Some(listeners) => {
event.current_target.assign(Some(cur_target.deref().clone())); event.current_target.assign(Some(cur_target.deref().clone()));
for listener in listeners.iter() { for listener in listeners.iter() {
//FIXME: this should have proper error handling, or explicitly // Explicitly drop any exception on the floor.
// drop the exception on the floor let _ = listener.HandleEvent_(&**cur_target, event, ReportExceptions);
assert!(listener.HandleEvent_(&**cur_target, event, ReportExceptions).is_ok());
if event.deref().stop_immediate { if event.deref().stop_immediate {
break; break;
@ -78,9 +77,9 @@ pub fn dispatch_event<'a, 'b>(target: &JSRef<'a, EventTarget>,
let opt_listeners = target.deref().get_listeners(type_); let opt_listeners = target.deref().get_listeners(type_);
for listeners in opt_listeners.iter() { for listeners in opt_listeners.iter() {
for listener in listeners.iter() { for listener in listeners.iter() {
//FIXME: this should have proper error handling, or explicitly drop the // Explicitly drop any exception on the floor.
// exception on the floor. let _ = listener.HandleEvent_(target, event, ReportExceptions);
assert!(listener.HandleEvent_(target, event, ReportExceptions).is_ok());
if event.deref().stop_immediate { if event.deref().stop_immediate {
break; break;
} }
@ -97,9 +96,8 @@ pub fn dispatch_event<'a, 'b>(target: &JSRef<'a, EventTarget>,
Some(listeners) => { Some(listeners) => {
event.deref_mut().current_target.assign(Some(cur_target.deref().clone())); event.deref_mut().current_target.assign(Some(cur_target.deref().clone()));
for listener in listeners.iter() { for listener in listeners.iter() {
//FIXME: this should have proper error handling or explicitly // Explicitly drop any exception on the floor.
// drop exceptions on the floor. let _ = listener.HandleEvent_(&**cur_target, event, ReportExceptions);
assert!(listener.HandleEvent_(&**cur_target, event, ReportExceptions).is_ok());
if event.deref().stop_immediate { if event.deref().stop_immediate {
break; break;