aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/macros.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2015-11-07 17:56:16 -0500
committerJosh Matthews <josh@joshmatthews.net>2015-11-12 16:21:24 -0500
commit2340583e56a7a67dc3d15dcd2673670255694b59 (patch)
tree07d8bfe396a846575cf6d3dce3c2179b43a5010f /components/script/dom/macros.rs
parentb40882093a306032d38ad02e30f0095e0a49ec21 (diff)
downloadservo-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.rs11
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);