From 4f0ffbd1f6908818e06538797b30f86ffef13602 Mon Sep 17 00:00:00 2001 From: Jesse Kipp Date: Sun, 16 Oct 2016 00:18:41 -0400 Subject: [PATCH] Issue 13363 - Step 1.2 of compiling event handler When compiling event handlers, check whether scripting is enabled and early return None/null if not. https://html.spec.whatwg.org/multipage/ webappapis.html#getting-the-current-value-of-the-event-handler Issue 13363 - Fix spec for disabled scripting The original spec for this PR was bad because it depended on the DOM without scripting enabled to use Javascript to signal the test's failure, so it could never fail. Use an onerror handler on `window` where scripting is enabled, and use an invalid string of JavaScript for the handler, to detect whether or not the event handler is *really* being compiled or not. Condense tests into a single HTML file Yup, didn't even realize I could do that at the time. Remove an unnecessary test --- components/script/dom/eventtarget.rs | 5 ++++- tests/wpt/metadata/MANIFEST.json | 6 ++++++ ...event_handler_with_scripting_disabled.html | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/events/uncompiled_event_handler_with_scripting_disabled.html 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::().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 = handler.source.encode_utf16().collect(); diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index e7fb5502ff0..94b64c04064 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -37756,6 +37756,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 @@ + + +Uncompiled event handler check that scripting is enabled + + +