mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
auto merge of #3776 : saneyuki/servo/macro, r=jdm
Fix #3755 This doesn't convert some specialized event handlers (e.g. `HTMLBodyElement`'s ones, `HTMLElement.GetOnload()`).
This commit is contained in:
commit
470d27a668
8 changed files with 43 additions and 163 deletions
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue