@@ -54,9 +54,11 @@ spec:html; type:element
54
54
<p> This specification depends on the Infra Standard. [[!INFRA]]
55
55
56
56
<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> .
58
59
[[!ENCODING]]
59
60
[[!SELECTORS4]]
61
+ [[!TRUSTED-TYPES]]
60
62
[[!WEBIDL]]
61
63
[[!XML]]
62
64
[[!XML-NAMES]]
@@ -6520,8 +6522,8 @@ interface Element : Node {
6520
6522
sequence<DOMString> getAttributeNames();
6521
6523
DOMString? getAttribute(DOMString qualifiedName);
6522
6524
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);
6525
6527
[CEReactions] undefined removeAttribute(DOMString qualifiedName);
6526
6528
[CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
6527
6529
[CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
@@ -6946,6 +6948,14 @@ steps:
6946
6948
<a for=Attr>value</a> .
6947
6949
</ol>
6948
6950
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
+
6949
6959
<hr>
6950
6960
6951
6961
<div algorithm>
@@ -6998,6 +7008,10 @@ string <var>namespace</var> (default null):</p>
6998
7008
<a for=/>attribute</a> <var> attr</var> and an <a for=/>element</a> <var> element</var> :
6999
7009
7000
7010
<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
+
7001
7015
<li><p> If <var> attr</var> 's <a for=Attr>element</a> is neither null nor <var> element</var> ,
7002
7016
<a>throw</a> an "{{InUseAttributeError!!exception}} " {{DOMException}} .
7003
7017
@@ -7013,6 +7027,8 @@ string <var>namespace</var> (default null):</p>
7013
7027
7014
7028
<li><p> Otherwise, <a lt="append an attribute">append</a> <var> attr</var> to <var> element</var> .
7015
7029
7030
+ <li><p> Set <var> attr</var> 's <a for=Attr>value</a> to <var> verifiedValue</var> .
7031
+
7016
7032
<li><p> Return <var> oldAttr</var> .
7017
7033
</ol>
7018
7034
</div>
@@ -7024,18 +7040,32 @@ an optional null or string <var>prefix</var> (default null), and an optional nul
7024
7040
<var> namespace</var> (default null):
7025
7041
7026
7042
<ol>
7027
- <li> Let <var> attribute</var> be the result of
7043
+ <li><p> Let <var> attribute</var> be the result of
7028
7044
<a lt="get an attribute by namespace and local name">getting an attribute</a> given
7029
7045
<var> namespace</var> , <var> localName</var> , and <var> element</var> .
7030
7046
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> .
7037
7056
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> .
7039
7069
</ol>
7040
7070
</div>
7041
7071
@@ -7294,14 +7324,26 @@ method steps are:
7294
7324
<li><p> Let <var> attribute</var> be the first <a>attribute</a> in <a>this</a> 's
7295
7325
<a for=Element>attribute list</a> whose <a for=Attr>qualified name</a> is <var> qualifiedName</var> ,
7296
7326
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.
7298
7339
7299
7340
<li><p> If <var> attribute</var> is null, create an <a>attribute</a> whose
7300
7341
<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.
7303
7345
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> .
7305
7347
</ol>
7306
7348
7307
7349
<p> The
@@ -7313,7 +7355,7 @@ method steps are:
7313
7355
passing <var> namespace</var> and <var> qualifiedName</var> to <a>validate and extract</a> .
7314
7356
7315
7357
<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 .
7317
7359
</ol>
7318
7360
7319
7361
<p> The
@@ -7891,7 +7933,24 @@ string <var>value</var>, run these steps:
7891
7933
<li><p> If <var> attribute</var> 's <a for=Attr>element</a> is null, then set <var>attribute</var>' s
7892
7934
<a for=Attr>value</a> to <var> value</var> .
7893
7935
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>
7895
7954
</ol>
7896
7955
7897
7956
<p> The {{Attr/value}} setter steps are to <a>set an existing attribute value</a> with <a>this</a>
0 commit comments