1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
<!DOCTYPE HTML>
<meta charset="utf-8" />
<title>streamAppendHTMLUnsafe with scripts</title>
<link rel=help href="https://github.com/WICG/declarative-partial-updates">
<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>
|