Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 8 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /html/dom/partial-updates/tentative/stream-html-run-scripts-option.html - WPT Dashboard Interop Dashboard
<!DOCTYPE HTML>
<meta charset="utf-8" />
<title>streamAppendHTMLUnsafe with scripts</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="placeholder"></div>
<script>
for (const method of ["streamAppendHTMLUnsafe", "streamHTMLUnsafe"]) {
promise_test(async t => {
const placeholder = document.getElementById("placeholder");
const writable = placeholder[method]({runScripts: true});
const writer = writable.getWriter();
t.add_cleanup(() => { window.did_run = false });
await writer.write("<script>window.did_run = true;</" + "script>");
await writer.close();
assert_true(window.did_run);
}, `element.${method} with runScripts: true`);
promise_test(async t => {
const placeholder = document.getElementById("placeholder");
const writable = placeholder[method]({runScripts: false});
const writer = writable.getWriter();
t.add_cleanup(() => { window.did_run = false });
await writer.write("<script>window.did_run = true;</" + "script>");
await writer.close();
assert_false(window.did_run);
}, `element.${method} with runScripts: false`);
promise_test(async t => {
const placeholder = document.getElementById("placeholder");
const element = document.createElement("div");
placeholder.append(element);
t.add_cleanup(() => element.remove());
const shadowRoot = element.attachShadow({mode: "open"});
const writer = shadowRoot[method]({runScripts: false}).getWriter();
window.did_run = false;
await writer.write("<script>window.did_run = true;<" + "/script>");
await writer.close();
assert_false(window.did_run);
}, `shadowRoot.${method} with runScripts: false`);
promise_test(async t => {
const placeholder = document.getElementById("placeholder");
const element = document.createElement("div");
placeholder.append(element);
t.add_cleanup(() => element.remove());
const shadowRoot = element.attachShadow({mode: "open"});
const writer = shadowRoot[method]({runScripts: true}).getWriter();
window.did_run = false;
await writer.write("<script>window.did_run = true;<" + "/script>");
await writer.close();
assert_true(window.did_run);
}, `shadowRoot.${method} with runScripts: true`);
}
</script>