diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html new file mode 100644 index 0000000000..cb54da6995 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-text-modifications.html @@ -0,0 +1,40 @@ +<!doctype html> +<head> +<meta charset=utf-8> +<title>Modify HTMLScriptElement's text after #prepare-a-script</title> +<link rel=help href="https://html.spec.whatwg.org/multipage/scripting.html#prepare-a-script"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +var t = async_test("Modify inline script element's text " + + "after prepare-a-script before evaluation"); + +function changeScriptText() { + document.querySelector('#script0').textContent = + 't.unreached_func("This should not be evaluated")();'; +} + +t.step_timeout(changeScriptText, 500); +</script> + +<!-- This is "a style sheet that is blocking scripts" and thus ... --> +<link rel="stylesheet" href="/common/slow.py?pipe=trickle(d1)"></link> + +<!-- This inline script becomes a parser-blocking script, and thus +the step_timeout is evaluated after script0 is inserted into DOM, +prepare-a-script'ed, but before its evaluation. --> +<script id="script0"> +t.step(() => { + // When this is evaluated after the stylesheet is loaded, + // script0's textContent is modified by the async script above, + // but the evaluated script is still the original script here, + // not what is overwritten, because "child text content" is taken in + // #prepare-a-script and passed to "creating a classic script". + var s = document.getElementById('script0'); + assert_equals(s.textContent, + 't.unreached_func("This should not be evaluated")();', + "<script>'s textContent should be already modified"); + t.done(); + }); +</script> |