diff options
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r-- | components/script/dom/macros.rs | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index cf93b72f985..78238dc09fd 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -321,6 +321,18 @@ macro_rules! define_event_handler( ) ); +macro_rules! define_window_owned_event_handler( + ($handler: ident, $event_type: ident, $getter: ident, $setter: ident) => ( + fn $getter(&self) -> Option<::std::rc::Rc<$handler>> { + window_from_node(self).$getter() + } + + fn $setter(&self, listener: Option<::std::rc::Rc<$handler>>) { + window_from_node(self).$setter(listener) + } + ) +); + macro_rules! event_handler( ($event_type: ident, $getter: ident, $setter: ident) => ( define_event_handler!(EventHandlerNonNull, $event_type, $getter, $setter, @@ -335,42 +347,158 @@ macro_rules! error_event_handler( ) ); +macro_rules! beforeunload_event_handler( + ($event_type: ident, $getter: ident, $setter: ident) => ( + define_event_handler!(OnBeforeUnloadEventHandlerNonNull, $event_type, + $getter, $setter, set_beforeunload_event_handler); + ) +); + +macro_rules! window_owned_event_handler( + ($event_type: ident, $getter: ident, $setter: ident) => ( + define_window_owned_event_handler!(EventHandlerNonNull, + $event_type, $getter, $setter); + ) +); + +macro_rules! window_owned_beforeunload_event_handler( + ($event_type: ident, $getter: ident, $setter: ident) => ( + define_window_owned_event_handler!(OnBeforeUnloadEventHandlerNonNull, + $event_type, $getter, $setter); + ) +); + // https://html.spec.whatwg.org/multipage/#globaleventhandlers // see webidls/EventHandler.webidl // As more methods get added, just update them here. macro_rules! global_event_handlers( () => ( event_handler!(blur, GetOnblur, SetOnblur); + event_handler!(focus, GetOnfocus, SetOnfocus); event_handler!(load, GetOnload, SetOnload); event_handler!(resize, GetOnresize, SetOnresize); + event_handler!(scroll, GetOnscroll, SetOnscroll); global_event_handlers!(NoOnload); ); (NoOnload) => ( event_handler!(abort, GetOnabort, SetOnabort); + event_handler!(cancel, GetOncancel, SetOncancel); event_handler!(canplay, GetOncanplay, SetOncanplay); event_handler!(canplaythrough, GetOncanplaythrough, SetOncanplaythrough); event_handler!(change, GetOnchange, SetOnchange); event_handler!(click, GetOnclick, SetOnclick); + event_handler!(close, GetOnclose, SetOnclose); + event_handler!(contextmenu, GetOncontextmenu, SetOncontextmenu); + event_handler!(cuechange, GetOncuechange, SetOncuechange); event_handler!(dblclick, GetOndblclick, SetOndblclick); + event_handler!(drag, GetOndrag, SetOndrag); + event_handler!(dragend, GetOndragend, SetOndragend); + event_handler!(dragenter, GetOndragenter, SetOndragenter); + event_handler!(dragexit, GetOndragexit, SetOndragexit); + event_handler!(dragleave, GetOndragleave, SetOndragleave); + event_handler!(dragover, GetOndragover, SetOndragover); + event_handler!(dragstart, GetOndragstart, SetOndragstart); + event_handler!(drop, GetOndrop, SetOndrop); + event_handler!(durationchange, GetOndurationchange, SetOndurationchange); event_handler!(emptied, GetOnemptied, SetOnemptied); + event_handler!(ended, GetOnended, SetOnended); error_event_handler!(error, GetOnerror, SetOnerror); event_handler!(input, GetOninput, SetOninput); + event_handler!(invalid, GetOninvalid, SetOninvalid); event_handler!(keydown, GetOnkeydown, SetOnkeydown); event_handler!(keypress, GetOnkeypress, SetOnkeypress); event_handler!(keyup, GetOnkeyup, SetOnkeyup); event_handler!(loadeddata, GetOnloadeddata, SetOnloadeddata); event_handler!(loadedmetata, GetOnloadedmetadata, SetOnloadedmetadata); + event_handler!(loadstart, GetOnloadstart, SetOnloadstart); + event_handler!(mousedown, GetOnmousedown, SetOnmousedown); + event_handler!(mouseenter, GetOnmouseenter, SetOnmouseenter); + event_handler!(mouseleave, GetOnmouseleave, SetOnmouseleave); + event_handler!(mousemove, GetOnmousemove, SetOnmousemove); + event_handler!(mouseout, GetOnmouseout, SetOnmouseout); event_handler!(mouseover, GetOnmouseover, SetOnmouseover); + event_handler!(mouseup, GetOnmouseup, SetOnmouseup); + event_handler!(wheel, GetOnwheel, SetOnwheel); event_handler!(pause, GetOnpause, SetOnpause); event_handler!(play, GetOnplay, SetOnplay); event_handler!(playing, GetOnplaying, SetOnplaying); event_handler!(progress, GetOnprogress, SetOnprogress); + event_handler!(ratechange, GetOnratechange, SetOnratechange); event_handler!(reset, GetOnreset, SetOnreset); + event_handler!(seeked, GetOnseeked, SetOnseeked); + event_handler!(seeking, GetOnseeking, SetOnseeking); + event_handler!(select, GetOnselect, SetOnselect); + event_handler!(show, GetOnshow, SetOnshow); + event_handler!(stalled, GetOnstalled, SetOnstalled); event_handler!(submit, GetOnsubmit, SetOnsubmit); event_handler!(suspend, GetOnsuspend, SetOnsuspend); event_handler!(timeupdate, GetOntimeupdate, SetOntimeupdate); event_handler!(toggle, GetOntoggle, SetOntoggle); + event_handler!(volumechange, GetOnvolumechange, SetOnvolumechange); event_handler!(waiting, GetOnwaiting, SetOnwaiting); ) ); + +// https://html.spec.whatwg.org/multipage/#windoweventhandlers +// see webidls/EventHandler.webidl +// As more methods get added, just update them here. +macro_rules! window_event_handlers( + () => ( + event_handler!(afterprint, GetOnafterprint, SetOnafterprint); + event_handler!(beforeprint, GetOnbeforeprint, SetOnbeforeprint); + beforeunload_event_handler!(beforeunload, GetOnbeforeunload, + SetOnbeforeunload); + event_handler!(hashchange, GetOnhashchange, SetOnhashchange); + event_handler!(languagechange, GetOnlanguagechange, + SetOnlanguagechange); + event_handler!(message, GetOnmessage, SetOnmessage); + event_handler!(offline, GetOnoffline, SetOnoffline); + event_handler!(online, GetOnonline, SetOnonline); + event_handler!(pagehide, GetOnpagehide, SetOnpagehide); + event_handler!(pageshow, GetOnpageshow, SetOnpageshow); + event_handler!(popstate, GetOnpopstate, SetOnpopstate); + event_handler!(rejectionhandled, GetOnrejectionhandled, + SetOnrejectionhandled); + event_handler!(storage, GetOnstorage, SetOnstorage); + event_handler!(unhandledrejection, GetOnunhandledrejection, + SetOnunhandledrejection); + event_handler!(unload, GetOnunload, SetOnunload); + ); + (ForwardToWindow) => ( + window_owned_event_handler!(afterprint, GetOnafterprint, + SetOnafterprint); + window_owned_event_handler!(beforeprint, GetOnbeforeprint, + SetOnbeforeprint); + window_owned_beforeunload_event_handler!(beforeunload, + GetOnbeforeunload, + SetOnbeforeunload); + window_owned_event_handler!(hashchange, GetOnhashchange, + SetOnhashchange); + window_owned_event_handler!(languagechange, GetOnlanguagechange, + SetOnlanguagechange); + window_owned_event_handler!(message, GetOnmessage, SetOnmessage); + window_owned_event_handler!(offline, GetOnoffline, SetOnoffline); + window_owned_event_handler!(online, GetOnonline, SetOnonline); + window_owned_event_handler!(pagehide, GetOnpagehide, SetOnpagehide); + window_owned_event_handler!(pageshow, GetOnpageshow, SetOnpageshow); + window_owned_event_handler!(popstate, GetOnpopstate, SetOnpopstate); + window_owned_event_handler!(rejectionhandled, GetOnrejectionhandled, + SetOnrejectionhandled); + window_owned_event_handler!(storage, GetOnstorage, SetOnstorage); + window_owned_event_handler!(unhandledrejection, GetOnunhandledrejection, + SetOnunhandledrejection); + window_owned_event_handler!(unload, GetOnunload, SetOnunload); + ); +); + +// https://html.spec.whatwg.org/multipage/#documentandelementeventhandlers +// see webidls/EventHandler.webidl +// As more methods get added, just update them here. +macro_rules! document_and_element_event_handlers( + () => ( + event_handler!(cut, GetOncut, SetOncut); + event_handler!(copy, GetOncopy, SetOncopy); + event_handler!(paste, GetOnpaste, SetOnpaste); + ) +); |