aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/eventtarget.rs5
-rw-r--r--tests/wpt/metadata/MANIFEST.json6
-rw-r--r--tests/wpt/web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html21
3 files changed, 31 insertions, 1 deletions
diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs
index 6d6ea81c7b6..a17bac4a35c 100644
--- a/components/script/dom/eventtarget.rs
+++ b/components/script/dom/eventtarget.rs
@@ -373,7 +373,10 @@ impl EventTarget {
None => self.downcast::<Window>().unwrap().Document(),
};
- // TODO step 1.2 (browsing context/scripting enabled)
+ // Step 1.2
+ if !document.is_scripting_enabled() {
+ return None;
+ }
// Step 1.3
let body: Vec<u16> = handler.source.encode_utf16().collect();
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 59e1863b1ac..a5720317386 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -37762,6 +37762,12 @@
"path": "html/semantics/forms/the-select-element/common-HTMLOptionsCollection-add.html",
"url": "/html/semantics/forms/the-select-element/common-HTMLOptionsCollection-add.html"
}
+ ],
+ "html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html": [
+ {
+ "path": "html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html",
+ "url": "/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html"
+ }
]
}
},
diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html
new file mode 100644
index 00000000000..a912b32d7fe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Uncompiled event handler check that scripting is enabled</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ setup({ allow_uncaught_exception: true });
+ test(function() {
+ var invoked = false;
+ window.addEventListener("error", function() {
+ invoked = true;
+ });
+
+ // Make sure that `this_will_error` will in fact error when it's referenced
+ assert_equals(typeof this_will_error, "undefined");
+ var dom = (new DOMParser()).parseFromString("<div id=\"has-event-handler\" onclick=\"this_will_error;\"></div>", "text/html");
+ var click = new MouseEvent("click");
+ dom.getElementById("has-event-handler").dispatchEvent(click);
+ assert_equals(invoked, false);
+ }, "when scripting is disabled, the handler is never compiled");
+</script>