diff options
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> |