[html5] r7009 - [giow] (0) Add support for MutationObservers. (Also, add a minor internal note i [...]

whatwg at whatwg.org whatwg at whatwg.org
Wed Feb 29 13:24:44 PST 2012


Author: ianh
Date: 2012-02-29 13:24:40 -0800 (Wed, 29 Feb 2012)
New Revision: 7009

Modified:
   complete.html
   index
   source
Log:
[giow] (0) Add support for MutationObservers. (Also, add a minor internal 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

Modified: complete.html
===================================================================
--- complete.html	2012-02-22 20:11:43 UTC (rev 7008)
+++ complete.html	2012-02-29 21:24:40 UTC (rev 7009)
@@ -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 — Last Updated 22 February 2012</h2>
+    <h2 class="no-num no-toc">Living Standard — 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 @@
      <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 @@
    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,9 +61418,21 @@
   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 @@
    <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 @@
 
    <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 @@
    <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 @@
 :root:lang(ebu),      :not(:lang(ebu)) > :lang(ebu)           { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
 :root:lang(ee),       :not(:lang(ee)) > :lang(ee)             { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
 :root:lang(el),       :not(:lang(el)) > :lang(el)             { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
-:root:lang(el-POLYTON), :not(:lang(el-POLYTON)) > :lang(el-POLYTON) { quotes: '\00ab' '\00bb' '\201b' '\201d' } /* « » ‛ ” */
 :root:lang(en),       :not(:lang(en)) > :lang(en)             { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
 :root:lang(en-GB),    :not(:lang(en-GB)) > :lang(en-GB)       { quotes: '\2018' '\2019' '\201c' '\201d' } /* ‘ ’ “ ” */
 :root:lang(es),       :not(:lang(es)) > :lang(es)             { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* “ ” « » */

Modified: index
===================================================================
--- index	2012-02-22 20:11:43 UTC (rev 7008)
+++ index	2012-02-29 21:24:40 UTC (rev 7009)
@@ -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 — Last Updated 22 February 2012</h2>
+    <h2 class="no-num no-toc">Living Standard — 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 @@
      <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 @@
    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,9 +61418,21 @@
   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 @@
    <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 @@
 
    <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 @@
    <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 @@
 :root:lang(ebu),      :not(:lang(ebu)) > :lang(ebu)           { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
 :root:lang(ee),       :not(:lang(ee)) > :lang(ee)             { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
 :root:lang(el),       :not(:lang(el)) > :lang(el)             { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */
-:root:lang(el-POLYTON), :not(:lang(el-POLYTON)) > :lang(el-POLYTON) { quotes: '\00ab' '\00bb' '\201b' '\201d' } /* « » ‛ ” */
 :root:lang(en),       :not(:lang(en)) > :lang(en)             { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */
 :root:lang(en-GB),    :not(:lang(en-GB)) > :lang(en-GB)       { quotes: '\2018' '\2019' '\201c' '\201d' } /* ‘ ’ “ ” */
 :root:lang(es),       :not(:lang(es)) > :lang(es)             { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* “ ” « » */

Modified: source
===================================================================
--- source	2012-02-22 20:11:43 UTC (rev 7008)
+++ source	2012-02-29 21:24:40 UTC (rev 7009)
@@ -2804,11 +2804,15 @@
      <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 @@
    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,9 +71890,22 @@
   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 @@
    <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 @@
 
    <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 @@
 
   <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




More information about the Commit-Watchers mailing list