Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a validation step when a new DOMTokenList is created #107

Merged
merged 1 commit into from Nov 13, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
18 changes: 13 additions & 5 deletions dom.bs
Expand Up @@ -8582,7 +8582,7 @@ interface DOMTokenList {
readonly attribute unsigned long length;
getter DOMString? item(unsigned long index);
boolean contains(DOMString token);
void add(DOMString... tokens);
boolean add(DOMString... tokens);
void remove(DOMString... tokens);
boolean toggle(DOMString token, optional boolean force);
void replace(DOMString token, DOMString newToken);
Expand All @@ -8606,8 +8606,8 @@ associated <a>attribute</a>'s <a for=Attr>local name</a>.
<var>token</var> are:

<ol>
<li><p>If the associated attribute's <a for=Attr>local name</a> does not define <a>supported
tokens</a>, return true.
<li><p>If the associated <a>attribute</a>'s <a for=Attr>local name</a> does not define
<a>supported tokens</a>, return true.

<li><p>Let <var>lowercase token</var> be a copy of <var>token</var>,
<a>converted to ASCII lowercase</a>.
Expand Down Expand Up @@ -8642,8 +8642,16 @@ are to:
<a lt="named attribute"><var>associated attribute's local name</var> attribute</a> or
associated <a for="/">element</a>'s
<a lt="named attribute"><var>associated attribute's local name</var> attribute</a> is
<a lt="attribute is set">set</a>, set <a>tokens</a> to the new <a for=Attr>value</a>,
<a lt="ordered set parser">parsed</a>.
<a lt="attribute is set">set</a>, run these substeps:

<ol>
<li><p>Let <var>temporary tokens</var> be the new <a for=Attr>value</a>,
<a lt="ordered set parser">parsed</a>.

<li><p>For each <var>token</var> in <var>temporary tokens</var>, run
<a>validation steps</a> with <var>token</var>. If the return value is true, append <var>token</var>
to <a>tokens</a>.
</ol>

<p>When an associated <a for="/">element</a>'s
<a lt="named attribute"><var>associated attribute's local name</var> attribute</a> is
Expand Down
19 changes: 12 additions & 7 deletions dom.html
Expand Up @@ -69,7 +69,7 @@
<div class="head">
<p data-fill-with="logo"><a class="logo" href="https://whatwg.org/"> <img alt="WHATWG" height="100" src="https://resources.whatwg.org/logo-dom.svg"> </a> </p>
<h1 class="p-name no-ref allcaps" id="title">DOM</h1>
<h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Living Standard — Last Updated <time class="dt-updated" datetime="2015-11-12">12 November 2015</time></span></h2>
<h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Living Standard — Last Updated <time class="dt-updated" datetime="2015-11-13">13 November 2015</time></span></h2>
<div data-fill-with="spec-metadata">
<dl>
<dt>Participate:
Expand Down Expand Up @@ -4037,7 +4037,7 @@ <h3 class="heading settled" data-level="7.1" id="interface-domtokenlist"><span c
readonly attribute unsigned long <a class="idl-code" data-link-type="attribute" data-readonly="" data-type="unsigned long " href="#dom-domtokenlist-length">length</a>;
getter DOMString? <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-item">item</a>(unsigned long <dfn class="idl-code" data-dfn-for="DOMTokenList/item(index)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-item-index-index">index<a class="self-link" href="#dom-domtokenlist-item-index-index"></a></dfn>);
boolean <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-contains">contains</a>(DOMString <dfn class="idl-code" data-dfn-for="DOMTokenList/contains(token)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-contains-token-token">token<a class="self-link" href="#dom-domtokenlist-contains-token-token"></a></dfn>);
void <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-add">add</a>(DOMString... <dfn class="idl-code" data-dfn-for="DOMTokenList/add(tokens...), DOMTokenList/add(tokens)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-add-tokens-tokens">tokens<a class="self-link" href="#dom-domtokenlist-add-tokens-tokens"></a></dfn>);
boolean <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-add">add</a>(DOMString... <dfn class="idl-code" data-dfn-for="DOMTokenList/add(tokens...), DOMTokenList/add(tokens)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-add-tokens-tokens">tokens<a class="self-link" href="#dom-domtokenlist-add-tokens-tokens"></a></dfn>);
void <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-remove">remove</a>(DOMString... <dfn class="idl-code" data-dfn-for="DOMTokenList/remove(tokens...), DOMTokenList/remove(tokens)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-remove-tokens-tokens">tokens<a class="self-link" href="#dom-domtokenlist-remove-tokens-tokens"></a></dfn>);
boolean <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-toggle">toggle</a>(DOMString <dfn class="idl-code" data-dfn-for="DOMTokenList/toggle(token, force), DOMTokenList/toggle(token)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-toggle-token-force-token">token<a class="self-link" href="#dom-domtokenlist-toggle-token-force-token"></a></dfn>, optional boolean <dfn class="idl-code" data-dfn-for="DOMTokenList/toggle(token, force), DOMTokenList/toggle(token)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-toggle-token-force-force">force<a class="self-link" href="#dom-domtokenlist-toggle-token-force-force"></a></dfn>);
void <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-replace">replace</a>(DOMString <dfn class="idl-code" data-dfn-for="DOMTokenList/replace(token, newToken)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-replace-token-newtoken-token">token<a class="self-link" href="#dom-domtokenlist-replace-token-newtoken-token"></a></dfn>, DOMString <dfn class="idl-code" data-dfn-for="DOMTokenList/replace(token, newToken)" data-dfn-type="argument" data-export="" id="dom-domtokenlist-replace-token-newtoken-newtoken">newToken<a class="self-link" href="#dom-domtokenlist-replace-token-newtoken-newtoken"></a></dfn>);
Expand All @@ -4052,8 +4052,7 @@ <h3 class="heading settled" data-level="7.1" id="interface-domtokenlist"><span c
<p>A <code class="idl"><a data-link-type="idl" href="#domtokenlist">DOMTokenList</a></code> object’s <dfn data-dfn-for="DOMString" data-dfn-type="dfn" data-export="" id="concept-domtokenlist-validation">validation steps<a class="self-link" href="#concept-domtokenlist-validation"></a></dfn> for a given <var>token</var> are: </p>
<ol>
<li>
<p>If the associated attribute’s <a data-link-type="dfn" href="#concept-attribute-local-name">local name</a> does not define <a data-link-type="dfn" href="#concept-supported-tokens">supported
tokens</a>, return true. </p>
<p>If the associated <a data-link-type="dfn" href="#concept-attribute">attribute</a>’s <a data-link-type="dfn" href="#concept-attribute-local-name">local name</a> does not define <a data-link-type="dfn" href="#concept-supported-tokens">supported tokens</a>, return true. </p>
<li>
<p>Let <var>lowercase token</var> be a copy of <var>token</var>, <a data-link-type="dfn" href="#converted-to-ascii-lowercase">converted to ASCII lowercase</a>. </p>
<li>
Expand All @@ -4074,7 +4073,13 @@ <h3 class="heading settled" data-level="7.1" id="interface-domtokenlist"><span c
</ol>
<hr>
<p>When a <code class="idl"><a data-link-type="idl" href="#domtokenlist">DOMTokenList</a></code> object is created and its associated <a data-link-type="dfn" href="#concept-element">element</a> <a data-link-type="dfn" href="#concept-element-attribute-has">has</a> an <a data-link-type="dfn" href="#concept-named-attribute"><var>associated attribute’s local name</var> attribute</a> or
associated <a data-link-type="dfn" href="#concept-element">element</a>’s <a data-link-type="dfn" href="#concept-named-attribute"><var>associated attribute’s local name</var> attribute</a> is <a data-link-type="dfn" href="#attribute-is-set">set</a>, set <a data-link-type="dfn" href="#concept-dtl-tokens">tokens</a> to the new <a data-link-type="dfn" href="#concept-attribute-value">value</a>, <a data-link-type="dfn" href="#concept-ordered-set-parser">parsed</a>. </p>
associated <a data-link-type="dfn" href="#concept-element">element</a>’s <a data-link-type="dfn" href="#concept-named-attribute"><var>associated attribute’s local name</var> attribute</a> is <a data-link-type="dfn" href="#attribute-is-set">set</a>, run these substeps: </p>
<ol>
<li>
<p>Let <var>temporary tokens</var> be the new <a data-link-type="dfn" href="#concept-attribute-value">value</a>, <a data-link-type="dfn" href="#concept-ordered-set-parser">parsed</a>. </p>
<li>
<p>For each <var>token</var> in <var>temporary tokens</var>, run <a data-link-type="dfn" href="#concept-domtokenlist-validation">validation steps</a> with <var>token</var>. If the return value is true, append <var>token</var> to <a data-link-type="dfn" href="#concept-dtl-tokens">tokens</a>. </p>
</ol>
<p>When an associated <a data-link-type="dfn" href="#concept-element">element</a>’s <a data-link-type="dfn" href="#concept-named-attribute"><var>associated attribute’s local name</var> attribute</a> is <a data-link-type="dfn" href="#attribute-is-removed">removed</a>, set <a data-link-type="dfn" href="#concept-dtl-tokens">tokens</a> to the empty set. </p>
<dl class="domintro">
<dt><code><var>tokenlist</var> . <code class="idl"><a data-link-type="idl" href="#dom-domtokenlist-length">length</a></code></code>
Expand Down Expand Up @@ -5507,7 +5512,7 @@ <h3 class="no-num heading settled" id="normative"><span class="content">Normativ
<dt id="biblio-cssom-view"><a class="self-link" href="#biblio-cssom-view"></a>[CSSOM-VIEW]
<dd>Simon Pieters; Glenn Adams. <a href="http://dev.w3.org/csswg/cssom-view/">CSSOM View Module</a>. 17 December 2013. WD. URL: <a href="http://dev.w3.org/csswg/cssom-view/">http://dev.w3.org/csswg/cssom-view/</a>
<dt id="biblio-encoding"><a class="self-link" href="#biblio-encoding"></a>[ENCODING]
<dd>Anne van Kesteren; Joshua Bell; Addison Phillips. <a href="https://encoding.spec.whatwg.org/">Encoding</a>. 16 September 2014. CR. URL: <a href="https://encoding.spec.whatwg.org/">https://encoding.spec.whatwg.org/</a>
<dd>Anne van Kesteren; Joshua Bell; Addison Phillips. <a href="https://encoding.spec.whatwg.org/">Encoding</a>. 20 October 2015. CR. URL: <a href="https://encoding.spec.whatwg.org/">https://encoding.spec.whatwg.org/</a>
<dt id="biblio-rfc2119"><a class="self-link" href="#biblio-rfc2119"></a>[RFC2119]
<dd>S. Bradner. <a href="https://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate Requirement Levels</a>. March 1997. Best Current Practice. URL: <a href="https://tools.ietf.org/html/rfc2119">https://tools.ietf.org/html/rfc2119</a>
<dt id="biblio-selectors-4"><a class="self-link" href="#biblio-selectors-4"></a>[SELECTORS-4]
Expand Down Expand Up @@ -6003,7 +6008,7 @@ <h2 class="no-num heading settled" id="idl-index"><span class="content">IDL Inde
readonly attribute unsigned long <a class="idl-code" data-link-type="attribute" data-readonly="" data-type="unsigned long " href="#dom-domtokenlist-length">length</a>;
getter DOMString? <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-item">item</a>(unsigned long <a href="#dom-domtokenlist-item-index-index">index</a>);
boolean <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-contains">contains</a>(DOMString <a href="#dom-domtokenlist-contains-token-token">token</a>);
void <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-add">add</a>(DOMString... <a href="#dom-domtokenlist-add-tokens-tokens">tokens</a>);
boolean <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-add">add</a>(DOMString... <a href="#dom-domtokenlist-add-tokens-tokens">tokens</a>);
void <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-remove">remove</a>(DOMString... <a href="#dom-domtokenlist-remove-tokens-tokens">tokens</a>);
boolean <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-toggle">toggle</a>(DOMString <a href="#dom-domtokenlist-toggle-token-force-token">token</a>, optional boolean <a href="#dom-domtokenlist-toggle-token-force-force">force</a>);
void <a class="idl-code" data-link-type="method" href="#dom-domtokenlist-replace">replace</a>(DOMString <a href="#dom-domtokenlist-replace-token-newtoken-token">token</a>, DOMString <a href="#dom-domtokenlist-replace-token-newtoken-newtoken">newToken</a>);
Expand Down