aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/document.rs3
-rw-r--r--components/script/dom/htmlelement.rs2
-rw-r--r--components/script/dom/htmlinputelement.rs3
-rw-r--r--components/script/dom/macros.rs16
-rw-r--r--components/script/dom/webidls/EventHandler.webidl2
-rw-r--r--components/script/dom/window.rs3
6 files changed, 22 insertions, 7 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index f282aa3b483..fad44638f64 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -966,7 +966,6 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
self.ready_state.get()
}
- event_handler!(click, GetOnclick, SetOnclick)
- event_handler!(load, GetOnload, SetOnload)
+ global_event_handlers!()
event_handler!(readystatechange, GetOnreadystatechange, SetOnreadystatechange)
}
diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs
index 7467ea56fdf..010946fabc4 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -75,7 +75,7 @@ impl<'a> HTMLElementMethods for JSRef<'a, HTMLElement> {
make_bool_getter!(Hidden)
make_bool_setter!(SetHidden, "hidden")
- event_handler!(click, GetOnclick, SetOnclick)
+ global_event_handlers!(NoOnload)
fn GetOnload(self) -> Option<EventHandlerNonNull> {
if self.is_body_or_frameset() {
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index be3b52b4ae6..bfe686330fe 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -633,8 +633,7 @@ impl<'a> Activatable for JSRef<'a, HTMLInputElement> {
Some(o) => {
// Avoiding iterating through the whole tree here, instead
// we can check if the conditions for radio group siblings apply
- if name != None && // unless self no longer has a button group
- name == o.get_radio_group_name() && // TODO should be compatibility caseless
+ if name == o.get_radio_group_name() && // TODO should be compatibility caseless
self.form_owner() == o.form_owner() &&
// TODO Both a and b are in the same home subtree
o.input_type.get() == InputRadio {
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs
index 630a112c032..b98d67a090f 100644
--- a/components/script/dom/macros.rs
+++ b/components/script/dom/macros.rs
@@ -211,3 +211,19 @@ macro_rules! error_event_handler(
define_event_handler!(OnErrorEventHandlerNonNull, $event_type, $getter, $setter)
)
)
+
+// https://html.spec.whatwg.org/multipage/webappapis.html#globaleventhandlers
+// see webidls/EventHandler.webidl
+// As more methods get added, just update them here.
+macro_rules! global_event_handlers(
+ () => (
+ event_handler!(load, GetOnload, SetOnload)
+ global_event_handlers!(NoOnload)
+
+ );
+ (NoOnload) => (
+ event_handler!(click, GetOnclick, SetOnclick)
+ event_handler!(input, GetOninput, SetOninput)
+ event_handler!(change, GetOnchange, SetOnchange)
+ )
+) \ No newline at end of file
diff --git a/components/script/dom/webidls/EventHandler.webidl b/components/script/dom/webidls/EventHandler.webidl
index 1278d7467fd..de491455302 100644
--- a/components/script/dom/webidls/EventHandler.webidl
+++ b/components/script/dom/webidls/EventHandler.webidl
@@ -23,6 +23,8 @@ typedef OnErrorEventHandlerNonNull? OnErrorEventHandler;
interface GlobalEventHandlers {
attribute EventHandler onclick;
attribute EventHandler onload;
+ attribute EventHandler oninput;
+ attribute EventHandler onchange;
};
[NoInterfaceObject]
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 0e6e00ed200..da0cc228b0a 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -270,8 +270,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> {
self.performance.or_init(|| Performance::new(self))
}
- event_handler!(click, GetOnclick, SetOnclick)
- event_handler!(load, GetOnload, SetOnload)
+ global_event_handlers!()
event_handler!(unload, GetOnunload, SetOnunload)
error_event_handler!(error, GetOnerror, SetOnerror)