Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!doctype html>
<meta charset="utf-8" />
<title>HTML partial updates: patching a shadow root directly</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="container">
<template shadowrootmode="open" marker="x"
><?marker name=a>b<?start name=c><?end><template for="x#a">a</template
><template for="x#c">c</template></template
>
</div>
<script>
test(() => {
const { shadowRoot } = document.querySelector("#container");
assert_equals(shadowRoot.marker, "x");
assert_equals(shadowRoot.textContent, "abc");
}, "markers are respected in declarative shadow root");
promise_test(async (t) => {
const element = document.createElement("div");
const shadow = element.attachShadow({ mode: "open", marker: "x" });
assert_equals(shadow.marker, "x");
shadow.innerHTML = "<?marker name=a>X<?marker name=b>";
const writer = shadow.streamAppendHTMLUnsafe().getWriter();
await writer.write("<template for=x#a>a</template>");
await writer.write("<template for=x#b>b</template>");
await writer.close();
assert_equals(shadow.textContent, "aXb");
}, "markers are respected in imperative shadow root with streaming");
</script>