aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/macros.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r--components/script/dom/macros.rs128
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);
+ )
+);