aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlbodyelement.rs
diff options
context:
space:
mode:
authorAidan Hobson Sayers <aidanhs@cantab.net>2015-09-14 14:16:33 +0100
committerAidan Hobson Sayers <aidanhs@cantab.net>2015-09-14 14:16:33 +0100
commitd1fcbca3b1963bce82a4ef245f0fb9afb58cf73a (patch)
tree36cd043a7b8cab4f8d7d4b73dbdbf5926e110989 /components/script/dom/htmlbodyelement.rs
parent97710f0739410e7b464591f482c2dc117e528bbe (diff)
downloadservo-d1fcbca3b1963bce82a4ef245f0fb9afb58cf73a.tar.gz
servo-d1fcbca3b1963bce82a4ef245f0fb9afb58cf73a.zip
Match forwarded events as atoms, fixes #7495
Diffstat (limited to 'components/script/dom/htmlbodyelement.rs')
-rw-r--r--components/script/dom/htmlbodyelement.rs20
1 files changed, 9 insertions, 11 deletions
diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs
index fa1ddcbdd08..a09825574a4 100644
--- a/components/script/dom/htmlbodyelement.rs
+++ b/components/script/dom/htmlbodyelement.rs
@@ -140,21 +140,19 @@ impl VirtualMethods for HTMLBodyElement {
});
},
(name, AttributeMutation::Set(_)) if name.starts_with("on") => {
- static FORWARDED_EVENTS: &'static [&'static str] =
- &["onfocus", "onload", "onscroll", "onafterprint", "onbeforeprint",
- "onbeforeunload", "onhashchange", "onlanguagechange", "onmessage",
- "onoffline", "ononline", "onpagehide", "onpageshow", "onpopstate",
- "onstorage", "onresize", "onunload", "onerror"];
let window = window_from_node(self);
let (cx, url, reflector) = (window.get_cx(),
window.get_url(),
window.reflector().get_jsobject());
- let evtarget =
- if FORWARDED_EVENTS.iter().any(|&event| &**name == event) {
- EventTargetCast::from_ref(window.r())
- } else {
- EventTargetCast::from_ref(self)
- };
+ let evtarget = match name {
+ &atom!(onfocus) | &atom!(onload) | &atom!(onscroll) | &atom!(onafterprint) |
+ &atom!(onbeforeprint) | &atom!(onbeforeunload) | &atom!(onhashchange) |
+ &atom!(onlanguagechange) | &atom!(onmessage) | &atom!(onoffline) | &atom!(ononline) |
+ &atom!(onpagehide) | &atom!(onpageshow) | &atom!(onpopstate) | &atom!(onstorage) |
+ &atom!(onresize) | &atom!(onunload) | &atom!(onerror)
+ => EventTargetCast::from_ref(window.r()), // forwarded event
+ _ => EventTargetCast::from_ref(self),
+ };
evtarget.set_event_handler_uncompiled(cx, url, reflector,
&name[2..],
(**attr.value()).to_owned());