aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/dedicatedworkerglobalscope.rs10
-rw-r--r--components/script/dom/document.rs21
-rw-r--r--components/script/dom/htmlelement.rs10
-rw-r--r--components/script/dom/macros.rs26
-rw-r--r--components/script/dom/window.rs43
-rw-r--r--components/script/dom/worker.rs10
-rw-r--r--components/script/dom/xmlhttprequest.rs10
-rw-r--r--components/script/dom/xmlhttprequesteventtarget.rs76
8 files changed, 43 insertions, 163 deletions
diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs
index 1e81f8d9e9f..84fc77d0249 100644
--- a/components/script/dom/dedicatedworkerglobalscope.rs
+++ b/components/script/dom/dedicatedworkerglobalscope.rs
@@ -170,15 +170,7 @@ impl<'a> DedicatedWorkerGlobalScopeMethods for JSRef<'a, DedicatedWorkerGlobalSc
Ok(())
}
- fn GetOnmessage(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("message")
- }
-
- fn SetOnmessage(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("message", listener)
- }
+ event_handler!(message, GetOnmessage, SetOnmessage)
}
trait PrivateDedicatedWorkerGlobalScopeHelpers {
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index cc2fed3682e..d5b52a851db 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -888,23 +888,6 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
root.query_selector_all(selectors)
}
- fn GetOnclick(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("click")
- }
-
- fn SetOnclick(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("click", listener)
- }
-
- fn GetOnload(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("load")
- }
-
- fn SetOnload(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("load", listener)
- }
+ event_handler!(click, GetOnclick, SetOnclick)
+ event_handler!(load, GetOnload, SetOnload)
}
diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs
index 6174f17c818..189589effd1 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -67,15 +67,7 @@ impl<'a> PrivateHTMLElementHelpers for JSRef<'a, HTMLElement> {
}
impl<'a> HTMLElementMethods for JSRef<'a, HTMLElement> {
- fn GetOnclick(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("click")
- }
-
- fn SetOnclick(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("click", listener)
- }
+ event_handler!(click, GetOnclick, SetOnclick)
fn GetOnload(self) -> Option<EventHandlerNonNull> {
if self.is_body_or_frameset() {
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs
index b0aba98c7d6..db2d83246ce 100644
--- a/components/script/dom/macros.rs
+++ b/components/script/dom/macros.rs
@@ -185,3 +185,29 @@ macro_rules! untraceable(
);
)
+/// 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) => (
+ fn $getter(self) -> Option<$handler> {
+ let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
+ eventtarget.get_event_handler_common(stringify!($event_type))
+ }
+
+ fn $setter(self, listener: Option<$handler>) {
+ let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
+ eventtarget.set_event_handler_common(stringify!($event_type), listener)
+ }
+ )
+)
+
+macro_rules! event_handler(
+ ($event_type: ident, $getter: ident, $setter: ident) => (
+ define_event_handler!(EventHandlerNonNull, $event_type, $getter, $setter)
+ )
+)
+
+macro_rules! error_event_handler(
+ ($event_type: ident, $getter: ident, $setter: ident) => (
+ define_event_handler!(OnErrorEventHandlerNonNull, $event_type, $getter, $setter)
+ )
+)
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index d2b6cf8b75d..3ec04a94a93 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -272,45 +272,10 @@ impl<'a> WindowMethods for JSRef<'a, Window> {
self.performance.get().unwrap()
}
- fn GetOnclick(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("click")
- }
-
- fn SetOnclick(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("click", listener)
- }
-
- fn GetOnload(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("load")
- }
-
- fn SetOnload(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("load", listener)
- }
-
- fn GetOnunload(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("unload")
- }
-
- fn SetOnunload(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("unload", listener)
- }
-
- fn GetOnerror(self) -> Option<OnErrorEventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("error")
- }
-
- fn SetOnerror(self, listener: Option<OnErrorEventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("error", listener)
- }
+ event_handler!(click, GetOnclick, SetOnclick)
+ event_handler!(load, GetOnload, SetOnload)
+ event_handler!(unload, GetOnunload, SetOnunload)
+ error_event_handler!(error, GetOnerror, SetOnerror)
fn Screen(self) -> Temporary<Screen> {
if self.screen.get().is_none() {
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index 05a65318c69..9287037f561 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -149,15 +149,7 @@ impl<'a> WorkerMethods for JSRef<'a, Worker> {
Ok(())
}
- fn GetOnmessage(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("message")
- }
-
- fn SetOnmessage(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("message", listener)
- }
+ event_handler!(message, GetOnmessage, SetOnmessage)
}
impl Reflectable for Worker {
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 628eeb2e074..120b4591fbe 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -264,15 +264,7 @@ impl XMLHttpRequest {
}
impl<'a> XMLHttpRequestMethods for JSRef<'a, XMLHttpRequest> {
- fn GetOnreadystatechange(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("readystatechange")
- }
-
- fn SetOnreadystatechange(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("readystatechange", listener)
- }
+ event_handler!(readystatechange, GetOnreadystatechange, SetOnreadystatechange)
fn ReadyState(self) -> u16 {
self.ready_state.get() as u16
diff --git a/components/script/dom/xmlhttprequesteventtarget.rs b/components/script/dom/xmlhttprequesteventtarget.rs
index 79e70123a4d..0510a37bfbb 100644
--- a/components/script/dom/xmlhttprequesteventtarget.rs
+++ b/components/script/dom/xmlhttprequesteventtarget.rs
@@ -45,73 +45,11 @@ impl Reflectable for XMLHttpRequestEventTarget {
}
impl<'a> XMLHttpRequestEventTargetMethods for JSRef<'a, XMLHttpRequestEventTarget> {
- fn GetOnloadstart(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("loadstart")
- }
-
- fn SetOnloadstart(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("loadstart", listener)
- }
-
- fn GetOnprogress(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("progress")
- }
-
- fn SetOnprogress(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("progress", listener)
- }
-
- fn GetOnabort(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("abort")
- }
-
- fn SetOnabort(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("abort", listener)
- }
-
- fn GetOnerror(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("error")
- }
-
- fn SetOnerror(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("error", listener)
- }
-
- fn GetOnload(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("load")
- }
-
- fn SetOnload(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("load", listener)
- }
-
- fn GetOntimeout(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("timeout")
- }
-
- fn SetOntimeout(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("timeout", listener)
- }
-
- fn GetOnloadend(self) -> Option<EventHandlerNonNull> {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.get_event_handler_common("loadend")
- }
-
- fn SetOnloadend(self, listener: Option<EventHandlerNonNull>) {
- let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self);
- eventtarget.set_event_handler_common("loadend", listener)
- }
+ event_handler!(loadstart,GetOnloadstart, SetOnloadstart)
+ event_handler!(progress, GetOnprogress, SetOnprogress)
+ event_handler!(abort, GetOnabort, SetOnabort)
+ event_handler!(error, GetOnerror, SetOnerror)
+ event_handler!(load, GetOnload, SetOnload)
+ event_handler!(timeout, GetOntimeout, SetOntimeout)
+ event_handler!(loadend, GetOnloadend, SetOnloadend)
}