Skip to content

Commit 0793d49

Browse files
committed
Add patchUnsafe() methods
Depends on w3c/trusted-types#597 for Trusted Types integration.
1 parent d441450 commit 0793d49

File tree

1 file changed

+80
-2
lines changed

1 file changed

+80
-2
lines changed

source

Lines changed: 80 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116904,7 +116904,7 @@ document.body.appendChild(frame)</code></pre>
116904116904

116905116905
<h3 id="dom-parsing-and-serialization">DOM parsing and serialization APIs</h3>
116906116906

116907-
<pre><code class="idl">partial interface <span id="Element-partial">Element</span> {
116907+
<pre><code class="idl">partial interface <span>Element</span> {
116908116908
[<span>CEReactions</span>] undefined <span data-x="dom-Element-setHTMLUnsafe">setHTMLUnsafe</span>((<code data-x="tt-trustedhtml">TrustedHTML</code> or DOMString) html);
116909116909
DOMString <span data-x="dom-Element-getHTML">getHTML</span>(optional <span>GetHTMLOptions</span> options = {});
116910116910

@@ -116913,7 +116913,7 @@ document.body.appendChild(frame)</code></pre>
116913116913
[<span>CEReactions</span>] undefined <span data-x="dom-Element-insertAdjacentHTML">insertAdjacentHTML</span>(DOMString position, (<code data-x="tt-trustedhtml">TrustedHTML</code> or DOMString) string);
116914116914
};
116915116915

116916-
partial interface <span id="ShadowRoot-partial">ShadowRoot</span> {
116916+
partial interface <span>ShadowRoot</span> {
116917116917
[<span>CEReactions</span>] undefined <span data-x="dom-ShadowRoot-setHTMLUnsafe">setHTMLUnsafe</span>((<code data-x="tt-trustedhtml">TrustedHTML</code> or DOMString) html);
116918116918
DOMString <span data-x="dom-ShadowRoot-getHTML">getHTML</span>(optional <span>GetHTMLOptions</span> options = {});
116919116919

@@ -117741,6 +117741,84 @@ interface <dfn interface>XMLSerializer</dfn> {
117741117741

117742117742
</div>
117743117743

117744+
<h3 split-filename="patching" id="patching">Patching</h3>
117745+
117746+
<p>TODO: introduction, what's all this?</p>
117747+
117748+
<pre><code class="idl">partial interface <span>Element</span> {
117749+
WritableStream <span data-x="dom-Element-patchUnsafe">patchUnsafe</span>(optional PatchUnsafeOptions options = {});
117750+
};
117751+
117752+
partial interface <span>ShadowRoot</span> {
117753+
WritableStream <span data-x="dom-ShadowRoot-patchUnsafe">patchUnsafe</span>(optional PatchUnsafeOptions options = {});
117754+
};
117755+
117756+
dictionary WindowPostMessageOptions</dfn> : <span>StructuredSerializeOptions</span> {
117757+
USVString targetOrigin</dfn> = "/";
117758+
};
117759+
dictionary <dfn dictionary>PatchUnsafeOptions</dfn> {
117760+
TrustedTransformStream <dfn dict-member for="PatchUnsafeOptions" >trustedTransformStream</dfn>;
117761+
};</code></pre>
117762+
117763+
<div w-nodev>
117764+
117765+
<p><code>Element</code>'s <dfn method for="Element"><code
117766+
data-x="dom-Element-patchUnsafe">patchUnsafe(<var>options</var>)</code></dfn> method steps
117767+
are:</p>
117768+
117769+
<ol>
117770+
<li><p>Let <var>writable</var> be a new WritableStream.</p></li>
117771+
117772+
<li>
117773+
<p>If <var>options</var>["<code data-x="dom-PatchUnsafeOptions-trustedTransformStream">trustedTransformStream</code>"] <span data-x="map exists">exists</span>:</p>
117774+
117775+
<ol>
117776+
<li><p>Set <var>writable</var> to the result of piping <var>writable</var> through <var>options</var>["trustedTransformStream"].</p></li>
117777+
</ol>
117778+
</li>
117779+
117780+
<li>
117781+
<p>Otherwise:</p>
117782+
117783+
<ol>
117784+
<li><p>If there's a default TT policy, use that and wrap <var>writable</var> 👋</p></li>
117785+
</ol>
117786+
</li>
117787+
117788+
<li><p>Create a new parser and do all the actual work 👋</p></li>
117789+
117790+
<li><p>Return <var>writable</var>.</p></li>
117791+
</ol>
117792+
117793+
<div class="example">
117794+
<p>Do a thing like this:</p>
117795+
<pre><code class="js">const policy = trustedTypes.createPolicy("my-policy", {
117796+
createTransformStream() {
117797+
return new TransformStream({
117798+
transform(chunk, controller) {
117799+
// TODO: some buffering
117800+
controller.enqueue(sanitize(chunk));
117801+
}
117802+
});
117803+
}
117804+
});
117805+
117806+
const trustedTransformStream = policy.createTransformStream(input);
117807+
const writable = element.patchUnsafe({ trustedTransformStream });
117808+
const response = await fetch('/fragments/something');
117809+
response.body.pipeTo(writable);</code></pre>
117810+
</div>
117811+
117812+
<p><code>ShadowRoot</code>'s <dfn method for="ShadowRoot"><code
117813+
data-x="dom-ShadowRoot-patchUnsafe">patchUnsafe(<var>options</var>)</code></dfn> method steps
117814+
are:</p>
117815+
117816+
<ol>
117817+
<li>TODO</li>
117818+
</ol>
117819+
117820+
</div>
117821+
117744117822
<h3 split-filename="timers-and-user-prompts" id="timers">Timers</h3>
117745117823

117746117824
<p>The <code data-x="dom-setTimeout">setTimeout()</code> and <code

0 commit comments

Comments
 (0)