Skip to content

Commit a665ee4

Browse files
committed
Trusted Types
1 parent 388779b commit a665ee4

File tree

1 file changed

+76
-17
lines changed

1 file changed

+76
-17
lines changed

dom.bs

Lines changed: 76 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,11 @@ spec:html; type:element
5454
<p>This specification depends on the Infra Standard. [[!INFRA]]
5555

5656
<p>Some of the terms used in this specification are defined in <cite>Encoding</cite>,
57-
<cite>Selectors</cite>, <cite>Web IDL</cite>, <cite>XML</cite>, and <cite>Namespaces in XML</cite>.
57+
<cite>Selectors</cite>, <cite>Trusted Types</cite>, <cite>Web IDL</cite>, <cite>XML</cite>, and
58+
<cite>Namespaces in XML</cite>.
5859
[[!ENCODING]]
5960
[[!SELECTORS4]]
61+
[[!TRUSTED-TYPES]]
6062
[[!WEBIDL]]
6163
[[!XML]]
6264
[[!XML-NAMES]]
@@ -6520,8 +6522,8 @@ interface Element : Node {
65206522
sequence&lt;DOMString> getAttributeNames();
65216523
DOMString? getAttribute(DOMString qualifiedName);
65226524
DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
6523-
[CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
6524-
[CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
6525+
[CEReactions] undefined setAttribute(DOMString qualifiedName, (TrustedType or DOMString) value);
6526+
[CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, (TrustedType or DOMString) value);
65256527
[CEReactions] undefined removeAttribute(DOMString qualifiedName);
65266528
[CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
65276529
[CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
@@ -6946,6 +6948,14 @@ steps:
69466948
<a for=Attr>value</a>.
69476949
</ol>
69486950

6951+
<p>To <dfn>verify attribute value</dfn> given a {{TrustedType}} or string <var>value</var>, an
6952+
<a>attribute</a> <var>attribute</var>, and an <a for=/>Element</a> <var>element</var>:
6953+
6954+
<ol>
6955+
<li><p>Return the result of calling <a abstract-op>get Trusted Types-compliant attribute value</a>
6956+
given <var>attribute</var>, with <var>element</var>, and <var>value</var>. [[!TRUSTED-TYPES]]
6957+
</ol>
6958+
69496959
<hr>
69506960

69516961
<div algorithm>
@@ -6998,6 +7008,10 @@ string <var>namespace</var> (default null):</p>
69987008
<a for=/>attribute</a> <var>attr</var> and an <a for=/>element</a> <var>element</var>:
69997009

70007010
<ol>
7011+
<li><p>Let <var>verifiedValue</var> be the result of
7012+
<a lt="verify attribute value">verifying an attribute value</a> given <var>attr</var>'s
7013+
<a for=Attr>value</a>, <var>attr</var>, and <var>element</var>.
7014+
70017015
<li><p>If <var>attr</var>'s <a for=Attr>element</a> is neither null nor <var>element</var>,
70027016
<a>throw</a> an "{{InUseAttributeError!!exception}}" {{DOMException}}.
70037017

@@ -7013,6 +7027,8 @@ string <var>namespace</var> (default null):</p>
70137027

70147028
<li><p>Otherwise, <a lt="append an attribute">append</a> <var>attr</var> to <var>element</var>.
70157029

7030+
<li><p>Set <var>attr</var>'s <a for=Attr>value</a> to <var>verifiedValue</var>.
7031+
70167032
<li><p>Return <var>oldAttr</var>.
70177033
</ol>
70187034
</div>
@@ -7024,18 +7040,32 @@ an optional null or string <var>prefix</var> (default null), and an optional nul
70247040
<var>namespace</var> (default null):
70257041

70267042
<ol>
7027-
<li>Let <var>attribute</var> be the result of
7043+
<li><p>Let <var>attribute</var> be the result of
70287044
<a lt="get an attribute by namespace and local name">getting an attribute</a> given
70297045
<var>namespace</var>, <var>localName</var>, and <var>element</var>.
70307046

7031-
<li>If <var>attribute</var> is null, create an <a>attribute</a> whose <a for=Attr>namespace</a> is
7032-
<var>namespace</var>, <a for=Attr>namespace prefix</a> is <var>prefix</var>,
7033-
<a for=Attr>local name</a> is <var>localName</var>, <a for=Attr>value</a> is <var>value</var>, and
7034-
<a for=Node>node document</a> is <var>element</var>'s <a for=Node>node document</a>, then
7035-
<a lt="append an attribute">append</a> this <a>attribute</a> to <var>element</var>, and then
7036-
return.
7047+
<li><p>If <var>attribute</var> is null, then set attribute to an <a>attribute</a> whose
7048+
<a for=Attr>namespace</a> is <var>namespace</var>, <a for=Attr>namespace prefix</a> is
7049+
<var>prefix</var>, <a for=Attr>local name</a> is <var>localName</var>, <a for=Attr>value</a> is
7050+
<var>value</var>, and <a for=Node>node document</a> is <var>element</var>'s
7051+
<a for=Node>node document</a>.
7052+
7053+
<li><p>Let <var>verifiedValue</var> be the result of
7054+
<a lt="verify attribute value">verifying an attribute value</a> given <var>value</var>,
7055+
<var>attribute</var>, and <var>element</var>.
70377056

7038-
<li><p><a lt="change an attribute">Change</a> <var>attribute</var> to <var>value</var>.
7057+
<li><p>Set <var>attribute</var> to the result of
7058+
<a lt="get an attribute by namespace and local name">getting an attribute</a> given
7059+
<var>namespace</var>, <var>localName</var>, and <var>element</var>.
7060+
7061+
<li><p>If <var>attribute</var> is null, create an <a>attribute</a> whose <a for=Attr>namespace</a>
7062+
is <var>namespace</var>, <a for=Attr>namespace prefix</a> is <var>prefix</var>,
7063+
<a for=Attr>local name</a> is <var>localName</var>, <a for=Attr>value</a> is
7064+
<var>verifiedValue</var>, and <a for=Node>node document</a> is <var>element</var>'s
7065+
<a for=Node>node document</a>, then <a lt="append an attribute">append</a> this <a>attribute</a> to
7066+
<var>element</var>, and then return.
7067+
7068+
<li><p><a lt="change an attribute">Change</a> <var>attribute</var> to <var>verifiedValue</var>.
70397069
</ol>
70407070
</div>
70417071

@@ -7294,14 +7324,26 @@ method steps are:
72947324
<li><p>Let <var>attribute</var> be the first <a>attribute</a> in <a>this</a>'s
72957325
<a for=Element>attribute list</a> whose <a for=Attr>qualified name</a> is <var>qualifiedName</var>,
72967326
and null otherwise.
7297-
<!-- This is step 2 of "get an attribute by name", modified as appropriate -->
7327+
7328+
<li><p>If <var>attribute</var> is null, then set <var>attribute</var> to an <a>attribute</a>
7329+
whose <a for=Attr>local name</a> is <var>qualifiedName</var>, <a for=Attr>value</a> is
7330+
<var>value</var>, and <a for=Node>node document</a> is <a>this</a>'s <a for=Node>node document</a>.
7331+
7332+
<li><p>Let <var>verifiedValue</var> be the result of
7333+
<a lt="verify attribute value">verifying an attribute value</a> given <var>value</var>,
7334+
<var>attribute</var>, and <a>this</a>.
7335+
7336+
<li><p>Set <var>attribute</var> to the first <a>attribute</a> in <a>this</a>'s
7337+
<a for=Element>attribute list</a> whose <a for=Attr>qualified name</a> is <var>qualifiedName</var>,
7338+
and null otherwise.
72987339

72997340
<li><p>If <var>attribute</var> is null, create an <a>attribute</a> whose
73007341
<a for=Attr>local name</a> is <var>qualifiedName</var>, <a for=Attr>value</a> is
7301-
<var>value</var>, and <a for=Node>node document</a> is <a>this</a>'s <a for=Node>node document</a>,
7302-
then <a lt="append an attribute">append</a> this <a>attribute</a> to <a>this</a>, and then return.
7342+
<var>verifiedValue</var>, and <a for=Node>node document</a> is <a>this</a>'s
7343+
<a for=Node>node document</a>, then <a lt="append an attribute">append</a> this <a>attribute</a>
7344+
to <a>this</a>, and then return.
73037345

7304-
<li><p><a lt="change an attribute">Change</a> <var>attribute</var> to <var>value</var>.
7346+
<li><p><a lt="change an attribute">Change</a> <var>attribute</var> to <var>verifiedValue</var>.
73057347
</ol>
73067348

73077349
<p>The
@@ -7313,7 +7355,7 @@ method steps are:
73137355
passing <var>namespace</var> and <var>qualifiedName</var> to <a>validate and extract</a>.
73147356

73157357
<li><p><a>Set an attribute value</a> for <a>this</a> using <var>localName</var>, <var>value</var>,
7316-
and also <var>prefix</var> and <var>namespace</var>.
7358+
<var>prefix</var>, <var>namespace</var> and true.
73177359
</ol>
73187360

73197361
<p>The
@@ -7891,7 +7933,24 @@ string <var>value</var>, run these steps:
78917933
<li><p>If <var>attribute</var>'s <a for=Attr>element</a> is null, then set <var>attribute</var>'s
78927934
<a for=Attr>value</a> to <var>value</var>.
78937935

7894-
<li><p>Otherwise, <a lt="change an attribute">change</a> <var>attribute</var> to <var>value</var>.
7936+
<li>
7937+
<p>Otherwise:
7938+
7939+
<ol>
7940+
<li><p>Let <var>originalElement</var> be <var>attribute</var>'s <a for=Attr>element</a>.
7941+
7942+
<li><p>Let <var>verifiedValue</var> be the result of
7943+
<a lt="verify attribute value">verifying an attribute value</a> given <var>value</var>,
7944+
<var>attribute</var>, and <a>this</a>.
7945+
7946+
<li><p>If <var>attribute</var>'s <a for=Attr>element</a> is null, then set <var>attribute</var>'s
7947+
<a for=Attr>value</a> to <var>verifiedValue</var>, and return.
7948+
7949+
<li><p>If <var>attribute</var>'s <a for=Attr>element</a> is not <var>originalElement</var>, then
7950+
return.
7951+
7952+
<li><p><a lt="change an attribute">Change</a> <var>attribute</var> to <var>verifiedValue</var>.
7953+
</ol>
78957954
</ol>
78967955

78977956
<p>The {{Attr/value}} setter steps are to <a>set an existing attribute value</a> with <a>this</a>

0 commit comments

Comments
 (0)