diff options
author | Josh Matthews <josh@joshmatthews.net> | 2015-11-07 17:56:16 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2015-11-12 16:21:24 -0500 |
commit | 2340583e56a7a67dc3d15dcd2673670255694b59 (patch) | |
tree | 07d8bfe396a846575cf6d3dce3c2179b43a5010f /components/script/dom/macros.rs | |
parent | b40882093a306032d38ad02e30f0095e0a49ec21 (diff) | |
download | servo-2340583e56a7a67dc3d15dcd2673670255694b59.tar.gz servo-2340583e56a7a67dc3d15dcd2673670255694b59.zip |
Differentiate between error and non-error event handlers per the spec.
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r-- | components/script/dom/macros.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index a029593b0e1..370621dfe8d 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -279,7 +279,7 @@ macro_rules! no_jsmanaged_fields( /// These are used to generate a event handler which has no special case. macro_rules! define_event_handler( - ($handler: ident, $event_type: ident, $getter: ident, $setter: ident) => ( + ($handler: ident, $event_type: ident, $getter: ident, $setter: ident, $setter_fn: ident) => ( fn $getter(&self) -> Option<::std::rc::Rc<$handler>> { use dom::bindings::inheritance::Castable; use dom::eventtarget::EventTarget; @@ -291,20 +291,22 @@ macro_rules! define_event_handler( use dom::bindings::inheritance::Castable; use dom::eventtarget::EventTarget; let eventtarget = self.upcast::<EventTarget>(); - eventtarget.set_event_handler_common(stringify!($event_type), listener) + eventtarget.$setter_fn(stringify!($event_type), listener) } ) ); macro_rules! event_handler( ($event_type: ident, $getter: ident, $setter: ident) => ( - define_event_handler!(EventHandlerNonNull, $event_type, $getter, $setter); + define_event_handler!(EventHandlerNonNull, $event_type, $getter, $setter, + set_event_handler_common); ) ); macro_rules! error_event_handler( ($event_type: ident, $getter: ident, $setter: ident) => ( - define_event_handler!(OnErrorEventHandlerNonNull, $event_type, $getter, $setter); + define_event_handler!(OnErrorEventHandlerNonNull, $event_type, $getter, $setter, + set_error_event_handler); ) ); @@ -319,6 +321,7 @@ macro_rules! global_event_handlers( ); (NoOnload) => ( event_handler!(click, GetOnclick, SetOnclick); + error_event_handler!(error, GetOnerror, SetOnerror); event_handler!(keydown, GetOnkeydown, SetOnkeydown); event_handler!(keypress, GetOnkeypress, SetOnkeypress); event_handler!(keyup, GetOnkeyup, SetOnkeyup); |