@@ -8798,77 +8798,80 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
87988798
87998799 <h4>Using reflect via IDL extended attributes</h4>
88008800
8801- <p>To enable improved usage of <span data-x="reflect">reflection</span>, we introduce the <dfn
8802- extended-attribute data-lt="Reflect" data-x="xattr-Reflect"><code>[Reflect]</code></dfn>, <dfn
8803- extended-attribute data-lt="ReflectSetter"
8804- data-x="xattr-ReflectSetter"><code>[ReflectSetter]</code></dfn>, <dfn extended-attribute
8805- data-lt="ReflectURL" data-x="xattr-ReflectURL"><code>[ReflectURL]</code></dfn>, <dfn
8806- extended-attribute data-lt="ReflectNonNegative"
8801+ <p>To enable improved usage of <span data-x="reflect">reflection</span>, we introduce multiple new
8802+ IDL <span data-x="extended attribute">extended attributes</span>. <dfn extended-attribute
8803+ data-lt="Reflect" data-x="xattr-Reflect"><code>[Reflect]</code></dfn>, <dfn extended-attribute
8804+ data-lt="ReflectSetter" data- x="xattr-ReflectSetter"><code>[ReflectSetter]</code></dfn>, <dfn
8805+ extended-attribute data-lt="ReflectURL" data-x="xattr-ReflectURL"><code>[ReflectURL]</code></dfn>,
8806+ <dfn extended-attribute data-lt="ReflectNonNegative"
88078807 data-x="xattr-ReflectNonNegative"><code>[ReflectNonNegative]</code></dfn>, <dfn extended-attribute
8808- data-lt="ReflectPositive" data-x="xattr-ReflectPositive"><code>[ReflectPositive]</code></dfn>,
8808+ data-lt="ReflectPositive" data-x="xattr-ReflectPositive"><code>[ReflectPositive]</code></dfn>, and
88098809 <dfn extended-attribute data-lt="ReflectPositiveWithFallback"
8810- data-x="xattr-ReflectPositiveWithFallback"><code>[ReflectPositiveWithFallback]</code></dfn>, <dfn
8811- extended-attribute data-lt="ReflectRange"
8812- data-x="xattr-ReflectRange"><code>[ReflectRange]</code></dfn>, and <dfn extended-attribute
8813- data-lt="ReflectDefault" data-x="xattr-ReflectDefault"><code>[ReflectDefault]</code></dfn> IDL
8814- <span data-x="extended attribute">extended attributes</span>.</p>
8810+ data-x="xattr-ReflectPositiveWithFallback"><code>[ReflectPositiveWithFallback]</code></dfn> all
8811+ trigger <span data-x="reflect">reflection</span>. These must either take no arguments, or take a
8812+ string; they must not appear on anything other than an interface member attribute; and only one of
8813+ these can be used at a time.</p>
88158814
8816- <p>The <code data-x="xattr-Reflect">[Reflect]</code>, <code
8817- data-x="xattr-ReflectSetter">[ReflectSetter]</code>, <code
8818- data-x="xattr-ReflectURL">[ReflectURL]</code>, <code
8819- data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code>, <code
8820- data-x="xattr-ReflectPositive">[ReflectPositive]</code>, <code
8821- data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code> <span>extended
8822- attribute</span>s must either take no arguments, or take a string. They must not appear on
8823- anything other than an interface member attribute.</p>
8815+ <p>For one of these primary reflection <span data-x="extended attribute">extended
8816+ attributes</span>, its <span>reflected content attribute name</span> is the string value it takes,
8817+ if one is provided, or the IDL attribute name otherwise.</p>
88248818
88258819 <p>IDL attributes with the <code data-x="xattr-Reflect">[Reflect]</code> <span>extended
8826- attribute</span> must <span>reflect</span> the content attribute of the name provided by < code
8827- data-x="xattr-Reflect">[Reflect]</code> or the IDL attribute name if none is provided .</p>
8820+ attribute</span> must <span>reflect</span> <code data-x="xattr-Reflect">[Reflect]</ code>'s
8821+ <span>reflected content attribute name</span> .</p>
88288822
88298823 <p>IDL attributes with the <code data-x="xattr-ReflectSetter">[ReflectSetter]</code>
8830- <span>extended attribute</span> on setting must <span>reflect</span> the content attribute of the
8831- name provided by <code data-x="xattr-ReflectSetter">[ReflectSetter]</code> or the IDL attribute
8832- name if none is provided.</p>
8824+ <span>extended attribute</span> on setting must <span>reflect</span> <code
8825+ data-x="xattr-ReflectSetter">[ReflectSetter]</code>'s <span>reflected content attribute
8826+ name</span>.</p>
8827+
8828+ <p>The <code data-x="xattr-ReflectURL">[ReflectURL]</code> <span>extended attribute</span> must
8829+ only appear on attributes with a type of <code data-x="idl-USVString">USVString</code>.</p>
88338830
88348831 <p>IDL attributes with the <code data-x="xattr-ReflectURL">[ReflectURL]</code> <span>extended
8835- attribute</span> must <span>reflect</span>, <span data-x="treated as a URL">as a URL</span>, the
8836- content attribute of the name provided by <code data-x="xattr-ReflectURL">[ReflectURL]</code> or
8837- the IDL attribute name if none is provided.</p>
8832+ attribute</span> must <span>reflect</span>, <span data-x="treated as a URL">as a URL</span>, <code
8833+ data-x="xattr-ReflectURL">[ReflectURL]</code>'s <span>reflected content attribute name</span>.</p>
88388834
88398835 <p>The <code data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code> <span>extended
8840- attribute</span> must only appear on interface member attributes with a type of <code
8836+ attribute</span> must only appear on attributes with a type of <code
88418837 data-x="idl-long">long</code>.</p>
88428838
88438839 <p>IDL attributes with the <code data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code>
88448840 <span>extended attribute</span> must <span>reflect</span>, <span>limited to only non-negative
8845- numbers</span>, the content attribute of the name provided by <code
8846- data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code> or the IDL attribute name if none is
8847- provided.</p>
8841+ numbers</span>, <code data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code>'s
8842+ <span>reflected content attribute name</span>.</p>
88488843
88498844 <p>The <code data-x="xattr-ReflectPositive">[ReflectPositive]</code> and <code
8850- data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code> <span>extended
8851- attribute</span>s must only appear on interface member attributes with a type of <code
8852- data-x="idl-double">double</code> or <code data-x="idl-unsigned-long">unsigned long</code>.</p>
8845+ data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code> <span
8846+ data-x="extended attribute">extended attributes</span> must only appear on attributes with a type
8847+ of <code data-x="idl-double">double</code> or <code data-x="idl-unsigned-long">unsigned
8848+ long</code>.</p>
88538849
88548850 <p>IDL attributes with the <code data-x="xattr-ReflectPositive">[ReflectPositive]</code>
88558851 <span>extended attribute</span> must <span>reflect</span>, <span>limited to only positive
8856- numbers</span>, the content attribute of the name provided by <code
8857- data-x="xattr-ReflectPositive">[ReflectPositive]</code> or the IDL attribute name if none is
8858- provided.</p>
8852+ numbers</span>, <code data-x="xattr-ReflectPositive">[ReflectPositive]</code>'s <span>reflected
8853+ content attribute name</span>.</p>
88598854
88608855 <p>IDL attributes with the <code
88618856 data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code> <span>extended
88628857 attribute</span> must <span>reflect</span>, <span>limited to only positive numbers with
8863- fallback</span>, the content attribute of the name provided by <code
8864- data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code> or the IDL
8865- attribute name if none is provided.</p>
8858+ fallback</span>, <code
8859+ data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code>'s <span>reflected
8860+ content attribute name</span>.</p>
8861+
8862+ <hr>
8863+
8864+ <p>To supplement the above <span data-x="extended attribute">extended attributes</span> we also
8865+ introduce <dfn extended-attribute data-lt="ReflectRange"
8866+ data-x="xattr-ReflectRange"><code>[ReflectRange]</code></dfn>, and <dfn extended-attribute
8867+ data-lt="ReflectDefault" data-x="xattr-ReflectDefault"><code>[ReflectDefault]</code></dfn>. These
8868+ augment how <span data-x="reflect">reflection</span> works and also must only appear on interface
8869+ member attributes.</p>
88668870
88678871 <p>The <code data-x="xattr-ReflectRange">[ReflectRange]</code> <span>extended attribute</span>
8868- must take an integer list limited to two values. It must not appear on anything other than an
8869- interface member attribute with a type of <code data-x="idl-unsigned-long">unsigned long</code>.
8870- Additionally, it must also only appear alongside <code
8871- data-x="xattr-Reflect">[Reflect]</code>.</p>
8872+ must take an integer list limited to two values. It must only be used on attributes with a type of
8873+ <code data-x="idl-unsigned-long">unsigned long</code>. Additionally, it must also only appear
8874+ alongside <code data-x="xattr-Reflect">[Reflect]</code>.</p>
88728875
88738876 <p>IDL attributes with the <code data-x="xattr-ReflectRange">[ReflectRange]</code> <span>extended
88748877 attribute</span> are <span>clamped to the range</span> [<var>clampedMin</var>,
@@ -8877,18 +8880,18 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
88778880 data-x="xattr-ReflectRange">[ReflectRange]</code>.</p>
88788881
88798882 <p>The <code data-x="xattr-ReflectDefault">[ReflectDefault]</code> <span>extended attribute</span>
8880- must not appear on anything other than an interface member attribute with a type of <code
8881- data-x="idl-double">double </code>, <code data-x="idl-long">long</code>, or <code
8882- data-x="idl-unsigned-long">unsigned long </code>. When used on an attribute of type <code
8883- data-x="idl-double">double</code>, it must take a decimal, otherwise it must take an integer.
8884- Additionally, it must also only appear alongside <code data-x="xattr-Reflect">[Reflect]</code>,
8885- <code data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code>, <code
8883+ must only be used on attributes with a type of <code data-x="idl-double">double</code>, <code
8884+ data-x="idl-long">long </code>, or <code data-x="idl-unsigned- long">unsigned long</code>. When used
8885+ on an attribute of type <code data-x="idl-double">double </code>, it must take a decimal; otherwise
8886+ it must take an integer. Additionally, it must also only appear alongside <code
8887+ data-x="xattr-Reflect">[Reflect]</code>, <code
8888+ data-x="xattr-ReflectNonNegative">[ReflectNonNegative]</code>, <code
88868889 data-x="xattr-ReflectPositive">[ReflectPositive]</code>, or <code
88878890 data-x="xattr-ReflectPositiveWithFallback">[ReflectPositiveWithFallback]</code>.</p>
88888891
88898892 <p>IDL attributes with the <code data-x="xattr-ReflectDefault">[ReflectDefault]</code>
8890- <span>extended attribute</span> have a <span>default value</span> provided by <code
8891- data-x="xattr-ReflectDefault">[ReflectDefault]</code>.</p>
8893+ <span>extended attribute</span> have a <span>default value</span> provided by the argument
8894+ provided to <code data-x="xattr-ReflectDefault">[ReflectDefault]</code>.</p>
88928895
88938896 <h4>Using reflect in specifications</h4>
88948897
@@ -20308,8 +20311,9 @@ interface <dfn interface>HTMLQuoteElement</dfn> : <span>HTMLElement</span> {
2030820311 [<span>HTMLConstructor</span>] constructor();
2030920312
2031020313 [<span>CEReactions</span>, <span data-x="xattr-ReflectURL">ReflectURL</span>] attribute USVString <dfn attribute for="HTMLQuoteElement" data-x="dom-quote-cite">cite</dfn>;
20311- };</code></pre> <p class="note">The <code>HTMLQuoteElement</code> interface is also used by the
20312- <code>q</code> element.</p>
20314+ };</code></pre>
20315+ <p class="note">The <code>HTMLQuoteElement</code> interface is also used by the <code>q</code>
20316+ element.</p>
2031320317 </dd>
2031420318 <dd w-dev>Uses <code>HTMLQuoteElement</code>.</dd>
2031520319 </dl>
@@ -20620,7 +20624,7 @@ interface <dfn interface>HTMLOListElement</dfn> : <span>HTMLElement</span> {
2062020624
2062120625 <div w-nodev>
2062220626
20623- <p class="note">The <span data-x="xattr-ReflectDefault">[ReflectDefault]</span> means that the
20627+ <p class="note">Due to <span data-x="xattr-ReflectDefault">[ReflectDefault]</span> the
2062420628 <code data-x="dom-ol-start">start</code> IDL attribute does not necessarily match the list's <span
2062520629 data-x="concept-ol-start">starting value</span>, in cases where the <code
2062620630 data-x="attr-ol-start">start</code> content attribute is omitted and the <code
@@ -29056,8 +29060,8 @@ interface <dfn interface>HTMLSourceElement</dfn> : <span>HTMLElement</span> {
2905629060 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute USVString <dfn attribute for="HTMLSourceElement" data-x="dom-source-srcset">srcset</dfn>;
2905729061 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLSourceElement" data-x="dom-source-sizes">sizes</dfn>;
2905829062 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLSourceElement" data-x="dom-source-media">media</dfn>;
29059- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <dfn attribute for="HTMLIFrameElement,HTMLEmbedElement,HTMLObjectElement, HTMLSourceElement,HTMLVideoElement " data-x="dom-dim -width">width</dfn>;
29060- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <dfn attribute for="HTMLIFrameElement,HTMLEmbedElement,HTMLObjectElement, HTMLSourceElement,HTMLVideoElement " data-x="dom-dim -height">height</dfn>;
29063+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <dfn attribute for="HTMLSourceElement" data-x="dom-source -width">width</dfn>;
29064+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <dfn attribute for="HTMLSourceElement" data-x="dom-source -height">height</dfn>;
2906129065};</code></pre>
2906229066 </dd>
2906329067 <dd w-dev>Uses <code>HTMLSourceElement</code>.</dd>
@@ -33383,8 +33387,8 @@ interface <dfn interface>HTMLIFrameElement</dfn> : <span>HTMLElement</span> {
3338333387 [SameObject, PutForwards=<span data-x="dom-DOMTokenList-value">value</span>, <span data-x="xattr-Reflect">Reflect</span>] readonly attribute <span>DOMTokenList</span> <dfn attribute for="HTMLIFrameElement" data-x="dom-iframe-sandbox">sandbox</dfn>;
3338433388 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLIFrameElement" data-x="dom-iframe-allow">allow</dfn>;
3338533389 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>="<span data-x="attr-iframe-allowfullscreen">allowfullscreen</span>"] attribute boolean <dfn attribute for="HTMLIFrameElement" data-x="dom-iframe-allowFullscreen">allowFullscreen</dfn>;
33386- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <span data-x="dom-dim-width">width</span >;
33387- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <span data-x="dom-dim-height">height</span >;
33390+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLIFrameElement" data-x="dom-dim-width">width</dfn >;
33391+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLIFrameElement" data-x="dom-dim-height">height</dfn >;
3338833392 [<span>CEReactions</span>] attribute DOMString <span data-x="dom-iframe-referrerPolicy">referrerPolicy</span>;
3338933393 [<span>CEReactions</span>] attribute DOMString <span data-x="dom-iframe-loading">loading</span>;
3339033394 readonly attribute <span>Document</span>? <span data-x="dom-iframe-contentDocument">contentDocument</span>;
@@ -34269,8 +34273,8 @@ interface <dfn interface>HTMLEmbedElement</dfn> : <span>HTMLElement</span> {
3426934273
3427034274 [<span>CEReactions</span>, <span data-x="xattr-ReflectURL">ReflectURL</span>] attribute USVString <dfn attribute for="HTMLEmbedElement" data-x="dom-embed-src">src</dfn>;
3427134275 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLEmbedElement" data-x="dom-embed-type">type</dfn>;
34272- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <span data-x="dom-dim -width">width</span >;
34273- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <span data-x="dom-dim -height">height</span >;
34276+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLEmbedElement" data-x="dom-embed -width">width</dfn >;
34277+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLEmbedElement" data-x="dom-embed -height">height</dfn >;
3427434278 <span>Document</span>? <span data-x="dom-media-getSVGDocument">getSVGDocument</span>();
3427534279
3427634280 // <a href="#HTMLEmbedElement-partial">also has obsolete members</a>
@@ -34539,8 +34543,8 @@ interface <dfn interface>HTMLObjectElement</dfn> : <span>HTMLElement</span> {
3453934543 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLObjectElement" data-x="dom-object-type">type</dfn>;
3454034544 [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLObjectElement" data-x="dom-object-name">name</dfn>;
3454134545 readonly attribute <span>HTMLFormElement</span>? <span data-x="dom-fae-form">form</span>;
34542- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <span data-x="dom-dim -width">width</span >;
34543- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <span data-x="dom-dim -height">height</span >;
34546+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLObjectElement" data-x="dom-object -width">width</dfn >;
34547+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute DOMString <dfn attribute for="HTMLObjectElement" data-x="dom-object -height">height</dfn >;
3454434548 readonly attribute <span>Document</span>? <span data-x="dom-object-contentDocument">contentDocument</span>;
3454534549 readonly attribute <span>WindowProxy</span>? <span data-x="dom-object-contentWindow">contentWindow</span>;
3454634550 <span>Document</span>? <span data-x="dom-media-getSVGDocument">getSVGDocument</span>();
@@ -35060,8 +35064,8 @@ interface <dfn interface>HTMLObjectElement</dfn> : <span>HTMLElement</span> {
3506035064interface <dfn interface>HTMLVideoElement</dfn> : <span>HTMLMediaElement</span> {
3506135065 [<span>HTMLConstructor</span>] constructor();
3506235066
35063- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <span data-x="dom-dim -width">width</span >;
35064- [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <span data-x="dom-dim -height">height</span >;
35067+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <dfn attribute for="HTMLVideoElement" data-x="dom-video -width">width</dfn >;
35068+ [<span>CEReactions</span>, <span data-x="xattr-Reflect">Reflect</span>] attribute unsigned long <dfn attribute for="HTMLVideoElement" data-x="dom-video -height">height</dfn >;
3506535069 readonly attribute unsigned long <span data-x="dom-video-videoWidth">videoWidth</span>;
3506635070 readonly attribute unsigned long <span data-x="dom-video-videoHeight">videoHeight</span>;
3506735071 [<span>CEReactions</span>, <span data-x="xattr-ReflectURL">ReflectURL</span>] attribute USVString <dfn attribute for="HTMLVideoElement" data-x="dom-video-poster">poster</dfn>;
0 commit comments