Browse files

[giow] (0) Add support for MutationObservers. (Also, add a minor inte…

…rnal note in the canvas section unrelated to this.) (Also, automated update of the CLDR which resulted in removing separate support for el-POLYTON.)

Affected topics: Canvas, DOM APIs, HTML

git-svn-id: http://svn.whatwg.org/webapps@7009 340c8d12-0b0e-0410-8428-c7bf67bfef74
  • Loading branch information...
1 parent ef639fa commit 01e1f33244a5462a820d573aa2254d68fbe98f69 @Hixie Hixie committed Feb 29, 2012
Showing with 162 additions and 16 deletions.
  1. +52 −6 complete.html
  2. +52 −6 index
  3. +58 −4 source
View
58 complete.html
@@ -240,7 +240,7 @@
<header class=head id=head><p><a class=logo href=http://www.whatwg.org/><img alt=WHATWG height=101 src=/images/logo width=101></a></p>
<hgroup><h1 class=allcaps>HTML</h1>
- <h2 class="no-num no-toc">Living Standard &mdash; Last Updated 22 February 2012</h2>
+ <h2 class="no-num no-toc">Living Standard &mdash; Last Updated 29 February 2012</h2>
</hgroup><dl><dt><strong>Web developer edition:</strong></dt>
<dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
<dt>Multiple-page version:</dt>
@@ -3858,11 +3858,15 @@ <h4 id=dependencies><span class=secno>2.2.2 </span>Dependencies</h4>
<li>The distinction between <dfn id=xml-documents>XML documents</dfn> and <dfn id=html-documents>HTML documents</dfn></li>
<li>The terms <dfn id=quirks-mode>quirks mode</dfn>, <dfn id=limited-quirks-mode>limited-quirks mode</dfn>, and <dfn id=no-quirks-mode>no-quirks mode</dfn></li>
<li>The algorithm to <dfn id=concept-node-clone title=concept-node-clone>clone</dfn> a <code><a href=#node>Node</a></code>, and the concept of <dfn id=concept-node-clone-ext title=concept-node-clone-ext>cloning steps</dfn> used by that algorithm</li>
- <li>The concept of <dfn id=base-url-change-steps>base URL change steps</dfn> and the definition of what happens when an element is <dfn id=affected-by-a-base-url-change>affected by a base URL change</dfn>.</li>
- <li>The concept of an element's <dfn id=concept-id title=concept-id>unique identifier (ID)</dfn>.</li>
+ <li>The concept of <dfn id=base-url-change-steps>base URL change steps</dfn> and the definition of what happens when an element is <dfn id=affected-by-a-base-url-change>affected by a base URL change</dfn></li>
+ <li>The concept of an element's <dfn id=concept-id title=concept-id>unique identifier (ID)</dfn></li>
<li>The concept of a DOM <dfn id=concept-range title=concept-range>range</dfn>.</li>
+ <li><dfn id=mutationobserver><code>MutationObserver</code></dfn> interface</li>
+ <li>The <dfn id=mutationobserver-scripting-environment><code>MutationObserver</code> <var title="">scripting environment</var></dfn> concept</li>
+ <li>The <dfn id=concept-mo-invoke title=concept-mo-invoke>invoke <code>MutationObserver</code> objects</dfn> algorith,</li>
+
</ul><p>The term <dfn id=throw>throw</dfn> in this specification is used as
defined in the DOM Core specification. The following
<code><a href=#domexception>DOMException</a></code> types are defined in the DOM Core
@@ -36608,6 +36612,7 @@ <h6 id=complex-shapes-(paths)><span class=secno>4.8.11.1.8 </span>Complex shapes
Jordan OSETE suggests:
* support ways of extending the clipping region (union instead of intersection)
- also "add", "subtract", "replace", "intersect" and "xor"
+ - maybe just support creating unions, intersections, and other -ions of paths
* support ways of resetting the clipping region without save/restore
-->
@@ -61413,8 +61418,20 @@ <h4 id=groupings-of-browsing-contexts><span class=secno>6.1.5 </span>Groupings o
is no <a href=#entry-script>entry script</a>. It is changed by the <a href=#jump-to-a-code-entry-point>jump to
a code entry-point</a> algorithm.</p>
- <p class=note>There is at most one <a href=#event-loop>event loop</a> per
- <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing contexts</a>.</p>
+ <p>Each <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing
+ contexts</a> also has a <dfn id=running-mutation-observers>running mutation observers</dfn>
+ flag, which must initially be false. It is used to prevent reentrant
+ invocation of the algorithm to <a href=#concept-mo-invoke title=concept-mo-invoke>invoke <code>MutationObserver</code>
+ objects</a>. For the purposes of <code><a href=#mutationobserver>MutationObserver</a></code>
+ objects, each <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing
+ contexts</a> is a distinct <var title="MutationObserver scripting
+ environment"><a href=#mutationobserver-scripting-environment>scripting environment</a></var>.</p>
+
+ <p class=note>There is also at most one <a href=#event-loop>event loop</a>
+ per <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing contexts</a>
+ (though several <a href=#unit-of-related-similar-origin-browsing-contexts title="unit of related similar-origin browsing
+ contexts">units of related similar-origin browsing contexts</a>
+ can have a shared <a href=#event-loop>event loop</a>).</p>
</div>
@@ -67798,6 +67815,8 @@ <h5 id=calling-scripts><span class=secno>7.1.3.2 </span>Calling scripts</h5>
<li><p>Set the <a href=#entry-script>entry script</a> back to whatever it was
when this algorithm started.</li>
+ <li><p><a href=#perform-a-microtask-checkpoint>Perform a microtask checkpoint</a>.</li>
+
</ol><p>This algorithm is not invoked by one script calling another.</p>
</div>
@@ -68156,6 +68175,8 @@ <h5 id=processing-model-2><span class=secno>7.1.4.2 </span>Processing model</h5>
<li><p>Remove that task from its <a href=#task-queue>task queue</a>.</li>
+ <li><p><a href=#perform-a-microtask-checkpoint>Perform a microtask checkpoint</a>.</li>
+
<li><p><a href=#provide-a-stable-state>Provide a stable state</a>.</li>
<li><p>If necessary, update the rendering or user interface of any
@@ -68165,6 +68186,32 @@ <h5 id=processing-model-2><span class=secno>7.1.4.2 </span>Processing model</h5>
<li><p>Return to the first step of the <a href=#event-loop>event
loop</a>.</li>
+ </ol><hr><p>When a user agent is to <dfn id=perform-a-microtask-checkpoint>perform a microtask
+ checkpoint</dfn>, if the <var title="">running mutation
+ observers</var> flag is false, then the user agent must run the
+ following steps:</p>
+
+ <ol><li><p>Let <var title="">running mutation observers</var> be
+ true.</li>
+
+ <li>
+
+ <p><a href=#concept-mo-invoke title=concept-mo-invoke>Invoke
+ <code>MutationObserver</code> objects</a> for the <a href=#unit-of-related-similar-origin-browsing-contexts>unit
+ of related similar-origin browsing contexts</a> to which the
+ <a href="#script's-browsing-context">script's browsing context</a> belongs.</p>
+
+ <p class=note>This will typically fire scripted callbacks, which
+ calls the <a href=#jump-to-a-code-entry-point>jump to a code entry-point</a> algorithm, which
+ calls this <a href=#perform-a-microtask-checkpoint>perform a microtask checkpoint</a> algorithm
+ again, which is why we use the <var><a href=#running-mutation-observers>running mutation
+ observers</a></var> flag to avoid reentrancy.</p>
+
+ </li>
+
+ <li><p>Let <var title="">running mutation observers</var> be
+ false.</li>
+
</ol><hr><p>When the user agent is to <dfn id=provide-a-stable-state>provide a stable state</dfn>, if
any asynchronously-running algorithms are <dfn id=await-a-stable-state title="await a stable
state">awaiting a stable state</dfn>, then the user agent must run
@@ -90393,7 +90440,6 @@ <h4 id=quotes><span class=secno>14.3.6 </span>Quotes</h4>
:root:lang(ebu), :not(:lang(ebu)) &gt; :lang(ebu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* &ldquo; &rdquo; &lsquo; &rsquo; */
:root:lang(ee), :not(:lang(ee)) &gt; :lang(ee) { quotes: '\201c' '\201d' '\2018' '\2019' } /* &ldquo; &rdquo; &lsquo; &rsquo; */
:root:lang(el), :not(:lang(el)) &gt; :lang(el) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* &laquo; &raquo; &ldquo; &rdquo; */
-:root:lang(el-POLYTON), :not(:lang(el-POLYTON)) &gt; :lang(el-POLYTON) { quotes: '\00ab' '\00bb' '\201b' '\201d' } /* &laquo; &raquo; &#8219; &rdquo; */
:root:lang(en), :not(:lang(en)) &gt; :lang(en) { quotes: '\201c' '\201d' '\2018' '\2019' } /* &ldquo; &rdquo; &lsquo; &rsquo; */
:root:lang(en-GB), :not(:lang(en-GB)) &gt; :lang(en-GB) { quotes: '\2018' '\2019' '\201c' '\201d' } /* &lsquo; &rsquo; &ldquo; &rdquo; */
:root:lang(es), :not(:lang(es)) &gt; :lang(es) { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* &ldquo; &rdquo; &laquo; &raquo; */
View
58 index
@@ -240,7 +240,7 @@
<header class=head id=head><p><a class=logo href=http://www.whatwg.org/><img alt=WHATWG height=101 src=/images/logo width=101></a></p>
<hgroup><h1 class=allcaps>HTML</h1>
- <h2 class="no-num no-toc">Living Standard &mdash; Last Updated 22 February 2012</h2>
+ <h2 class="no-num no-toc">Living Standard &mdash; Last Updated 29 February 2012</h2>
</hgroup><dl><dt><strong>Web developer edition:</strong></dt>
<dd><strong><a href=http://developers.whatwg.org/>http://developers.whatwg.org/</a></strong></dd>
<dt>Multiple-page version:</dt>
@@ -3858,11 +3858,15 @@ a.setAttribute('href', 'http://example.com/'); // change the content attribute d
<li>The distinction between <dfn id=xml-documents>XML documents</dfn> and <dfn id=html-documents>HTML documents</dfn></li>
<li>The terms <dfn id=quirks-mode>quirks mode</dfn>, <dfn id=limited-quirks-mode>limited-quirks mode</dfn>, and <dfn id=no-quirks-mode>no-quirks mode</dfn></li>
<li>The algorithm to <dfn id=concept-node-clone title=concept-node-clone>clone</dfn> a <code><a href=#node>Node</a></code>, and the concept of <dfn id=concept-node-clone-ext title=concept-node-clone-ext>cloning steps</dfn> used by that algorithm</li>
- <li>The concept of <dfn id=base-url-change-steps>base URL change steps</dfn> and the definition of what happens when an element is <dfn id=affected-by-a-base-url-change>affected by a base URL change</dfn>.</li>
- <li>The concept of an element's <dfn id=concept-id title=concept-id>unique identifier (ID)</dfn>.</li>
+ <li>The concept of <dfn id=base-url-change-steps>base URL change steps</dfn> and the definition of what happens when an element is <dfn id=affected-by-a-base-url-change>affected by a base URL change</dfn></li>
+ <li>The concept of an element's <dfn id=concept-id title=concept-id>unique identifier (ID)</dfn></li>
<li>The concept of a DOM <dfn id=concept-range title=concept-range>range</dfn>.</li>
+ <li><dfn id=mutationobserver><code>MutationObserver</code></dfn> interface</li>
+ <li>The <dfn id=mutationobserver-scripting-environment><code>MutationObserver</code> <var title="">scripting environment</var></dfn> concept</li>
+ <li>The <dfn id=concept-mo-invoke title=concept-mo-invoke>invoke <code>MutationObserver</code> objects</dfn> algorith,</li>
+
</ul><p>The term <dfn id=throw>throw</dfn> in this specification is used as
defined in the DOM Core specification. The following
<code><a href=#domexception>DOMException</a></code> types are defined in the DOM Core
@@ -36608,6 +36612,7 @@ hairline width with transform. ack Shaun Morris.
Jordan OSETE suggests:
* support ways of extending the clipping region (union instead of intersection)
- also "add", "subtract", "replace", "intersect" and "xor"
+ - maybe just support creating unions, intersections, and other -ions of paths
* support ways of resetting the clipping region without save/restore
-->
@@ -61413,8 +61418,20 @@ END:VCARD</pre>
is no <a href=#entry-script>entry script</a>. It is changed by the <a href=#jump-to-a-code-entry-point>jump to
a code entry-point</a> algorithm.</p>
- <p class=note>There is at most one <a href=#event-loop>event loop</a> per
- <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing contexts</a>.</p>
+ <p>Each <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing
+ contexts</a> also has a <dfn id=running-mutation-observers>running mutation observers</dfn>
+ flag, which must initially be false. It is used to prevent reentrant
+ invocation of the algorithm to <a href=#concept-mo-invoke title=concept-mo-invoke>invoke <code>MutationObserver</code>
+ objects</a>. For the purposes of <code><a href=#mutationobserver>MutationObserver</a></code>
+ objects, each <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing
+ contexts</a> is a distinct <var title="MutationObserver scripting
+ environment"><a href=#mutationobserver-scripting-environment>scripting environment</a></var>.</p>
+
+ <p class=note>There is also at most one <a href=#event-loop>event loop</a>
+ per <a href=#unit-of-related-similar-origin-browsing-contexts>unit of related similar-origin browsing contexts</a>
+ (though several <a href=#unit-of-related-similar-origin-browsing-contexts title="unit of related similar-origin browsing
+ contexts">units of related similar-origin browsing contexts</a>
+ can have a shared <a href=#event-loop>event loop</a>).</p>
</div>
@@ -67798,6 +67815,8 @@ interface <dfn id=navigatoronline>NavigatorOnLine</dfn> {
<li><p>Set the <a href=#entry-script>entry script</a> back to whatever it was
when this algorithm started.</li>
+ <li><p><a href=#perform-a-microtask-checkpoint>Perform a microtask checkpoint</a>.</li>
+
</ol><p>This algorithm is not invoked by one script calling another.</p>
</div>
@@ -68156,6 +68175,8 @@ interface <dfn id=navigatoronline>NavigatorOnLine</dfn> {
<li><p>Remove that task from its <a href=#task-queue>task queue</a>.</li>
+ <li><p><a href=#perform-a-microtask-checkpoint>Perform a microtask checkpoint</a>.</li>
+
<li><p><a href=#provide-a-stable-state>Provide a stable state</a>.</li>
<li><p>If necessary, update the rendering or user interface of any
@@ -68165,6 +68186,32 @@ interface <dfn id=navigatoronline>NavigatorOnLine</dfn> {
<li><p>Return to the first step of the <a href=#event-loop>event
loop</a>.</li>
+ </ol><hr><p>When a user agent is to <dfn id=perform-a-microtask-checkpoint>perform a microtask
+ checkpoint</dfn>, if the <var title="">running mutation
+ observers</var> flag is false, then the user agent must run the
+ following steps:</p>
+
+ <ol><li><p>Let <var title="">running mutation observers</var> be
+ true.</li>
+
+ <li>
+
+ <p><a href=#concept-mo-invoke title=concept-mo-invoke>Invoke
+ <code>MutationObserver</code> objects</a> for the <a href=#unit-of-related-similar-origin-browsing-contexts>unit
+ of related similar-origin browsing contexts</a> to which the
+ <a href="#script's-browsing-context">script's browsing context</a> belongs.</p>
+
+ <p class=note>This will typically fire scripted callbacks, which
+ calls the <a href=#jump-to-a-code-entry-point>jump to a code entry-point</a> algorithm, which
+ calls this <a href=#perform-a-microtask-checkpoint>perform a microtask checkpoint</a> algorithm
+ again, which is why we use the <var><a href=#running-mutation-observers>running mutation
+ observers</a></var> flag to avoid reentrancy.</p>
+
+ </li>
+
+ <li><p>Let <var title="">running mutation observers</var> be
+ false.</li>
+
</ol><hr><p>When the user agent is to <dfn id=provide-a-stable-state>provide a stable state</dfn>, if
any asynchronously-running algorithms are <dfn id=await-a-stable-state title="await a stable
state">awaiting a stable state</dfn>, then the user agent must run
@@ -90393,7 +90440,6 @@ textarea[dir=auto i], pre[dir=auto i] { unicode-bidi: plaintext; }</pre>
:root:lang(ebu), :not(:lang(ebu)) &gt; :lang(ebu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* &ldquo; &rdquo; &lsquo; &rsquo; */
:root:lang(ee), :not(:lang(ee)) &gt; :lang(ee) { quotes: '\201c' '\201d' '\2018' '\2019' } /* &ldquo; &rdquo; &lsquo; &rsquo; */
:root:lang(el), :not(:lang(el)) &gt; :lang(el) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* &laquo; &raquo; &ldquo; &rdquo; */
-:root:lang(el-POLYTON), :not(:lang(el-POLYTON)) &gt; :lang(el-POLYTON) { quotes: '\00ab' '\00bb' '\201b' '\201d' } /* &laquo; &raquo; &#8219; &rdquo; */
:root:lang(en), :not(:lang(en)) &gt; :lang(en) { quotes: '\201c' '\201d' '\2018' '\2019' } /* &ldquo; &rdquo; &lsquo; &rsquo; */
:root:lang(en-GB), :not(:lang(en-GB)) &gt; :lang(en-GB) { quotes: '\2018' '\2019' '\201c' '\201d' } /* &lsquo; &rsquo; &ldquo; &rdquo; */
:root:lang(es), :not(:lang(es)) &gt; :lang(es) { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* &ldquo; &rdquo; &laquo; &raquo; */
View
62 source
@@ -2804,11 +2804,15 @@ a.setAttribute('href', 'http://example.com/'); // change the content attribute d
<li>The distinction between <dfn>XML documents</dfn> and <dfn>HTML documents</dfn></li>
<li>The terms <dfn>quirks mode</dfn>, <dfn>limited-quirks mode</dfn>, and <dfn>no-quirks mode</dfn></li>
<li>The algorithm to <dfn title="concept-node-clone">clone</dfn> a <code>Node</code>, and the concept of <dfn title="concept-node-clone-ext">cloning steps</dfn> used by that algorithm</li>
- <li>The concept of <dfn>base URL change steps</dfn> and the definition of what happens when an element is <dfn>affected by a base URL change</dfn>.</li>
- <li>The concept of an element's <dfn title="concept-id">unique identifier (ID)</dfn>.</li>
+ <li>The concept of <dfn>base URL change steps</dfn> and the definition of what happens when an element is <dfn>affected by a base URL change</dfn></li>
+ <li>The concept of an element's <dfn title="concept-id">unique identifier (ID)</dfn></li>
<li>The concept of a DOM <dfn title="concept-range">range</dfn>.</li>
+ <li><dfn><code>MutationObserver</code></dfn> interface</li>
+ <li>The <dfn><code>MutationObserver</code> <var title="">scripting environment</var></dfn> concept</li>
+ <li>The <dfn title="concept-mo-invoke">invoke <code>MutationObserver</code> objects</dfn> algorith,</li>
+
</ul>
<p>The term <dfn>throw</dfn> in this specification is used as
@@ -42642,6 +42646,7 @@ hairline width with transform. ack Shaun Morris.
Jordan OSETE suggests:
* support ways of extending the clipping region (union instead of intersection)
- also "add", "subtract", "replace", "intersect" and "xor"
+ - maybe just support creating unions, intersections, and other -ions of paths
* support ways of resetting the clipping region without save/restore
-->
@@ -71885,8 +71890,21 @@ END:VCARD</pre>
is no <span>entry script</span>. It is changed by the <span>jump to
a code entry-point</span> algorithm.</p>
- <p class="note">There is at most one <span>event loop</span> per
- <span>unit of related similar-origin browsing contexts</span>.</p>
+ <p>Each <span>unit of related similar-origin browsing
+ contexts</span> also has a <dfn>running mutation observers</dfn>
+ flag, which must initially be false. It is used to prevent reentrant
+ invocation of the algorithm to <span
+ title="concept-mo-invoke">invoke <code>MutationObserver</code>
+ objects</span>. For the purposes of <code>MutationObserver</code>
+ objects, each <span>unit of related similar-origin browsing
+ contexts</span> is a distinct <var title="MutationObserver scripting
+ environment">scripting environment</var>.</p>
+
+ <p class="note">There is also at most one <span>event loop</span>
+ per <span>unit of related similar-origin browsing contexts</span>
+ (though several <span title="unit of related similar-origin browsing
+ contexts">units of related similar-origin browsing contexts</span>
+ can have a shared <span>event loop</span>).</p>
</div>
@@ -79247,6 +79265,8 @@ interface <dfn>NavigatorOnLine</dfn> {
<li><p>Set the <span>entry script</span> back to whatever it was
when this algorithm started.</p></li>
+ <li><p><span>Perform a microtask checkpoint</span>.</p></li>
+
</ol>
<p>This algorithm is not invoked by one script calling another.</p>
@@ -79668,6 +79688,8 @@ interface <dfn>NavigatorOnLine</dfn> {
<li><p>Remove that task from its <span>task queue</span>.</p></li>
+ <li><p><span>Perform a microtask checkpoint</span>.</p></li>
+
<li><p><span>Provide a stable state</span>.</p></li>
<li><p>If necessary, update the rendering or user interface of any
@@ -79681,6 +79703,38 @@ interface <dfn>NavigatorOnLine</dfn> {
<hr>
+ <p>When a user agent is to <dfn>perform a microtask
+ checkpoint</dfn>, if the <var title="">running mutation
+ observers</var> flag is false, then the user agent must run the
+ following steps:</p>
+
+ <ol>
+
+ <li><p>Let <var title="">running mutation observers</var> be
+ true.</p></li>
+
+ <li>
+
+ <p><span title="concept-mo-invoke">Invoke
+ <code>MutationObserver</code> objects</span> for the <span>unit
+ of related similar-origin browsing contexts</span> to which the
+ <span>script's browsing context</span> belongs.</p>
+
+ <p class="note">This will typically fire scripted callbacks, which
+ calls the <span>jump to a code entry-point</span> algorithm, which
+ calls this <span>perform a microtask checkpoint</span> algorithm
+ again, which is why we use the <var>running mutation
+ observers</var> flag to avoid reentrancy.</p>
+
+ </li>
+
+ <li><p>Let <var title="">running mutation observers</var> be
+ false.</p></li>
+
+ </ol>
+
+ <hr>
+
<p>When the user agent is to <dfn>provide a stable state</dfn>, if
any asynchronously-running algorithms are <dfn title="await a stable
state">awaiting a stable state</dfn>, then the user agent must run

0 comments on commit 01e1f33

Please sign in to comment.