[html5] r5964 - [agiow] (1) Revamp pushState() to work like Firefox 4, since that actually makes [...]

whatwg at whatwg.org whatwg at whatwg.org
Thu Mar 24 17:55:07 PDT 2011


Author: ianh
Date: 2011-03-24 17:55:06 -0700 (Thu, 24 Mar 2011)
New Revision: 5964

Modified:
   complete.html
   index
   source
Log:
[agiow] (1) Revamp pushState() to work like Firefox 4, since that actually makes the API useful. See also http://hacks.mozilla.org/2011/03/history-api-changes-in-firefox-4/, WHATWG mail, and the bug below.
Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=12277

Modified: complete.html
===================================================================
--- complete.html	2011-03-24 23:59:36 UTC (rev 5963)
+++ complete.html	2011-03-25 00:55:06 UTC (rev 5964)
@@ -239,7 +239,7 @@
 
   <header class=head id=head><p><a class=logo href=http://www.whatwg.org/ rel=home><img alt=WHATWG height=101 src=/images/logo width=101></a></p>
    <hgroup><h1>Web Applications 1.0</h1>
-    <h2 class="no-num no-toc">Living Standard — Last Updated 24 March 2011</h2>
+    <h2 class="no-num no-toc">Living Standard — Last Updated 25 March 2011</h2>
    </hgroup><p>You can take part in this work. <a href=http://www.whatwg.org/mailing-list>Join the working group's discussion list.</a></p>
    <p><strong>Web designers!</strong> We have a <a href=http://blog.whatwg.org/faq/>FAQ</a>, a <a href=http://forums.whatwg.org/>forum</a>, and a <a href=http://www.whatwg.org/mailing-list#help>help mailing list</a> for you!</p>
    <!--<p class="impl"><strong>Implementors!</strong> We have a <a href="http://www.whatwg.org/mailing-list#implementors">mailing list</a> for you too!</p>-->
@@ -60418,6 +60418,7 @@
 
   <pre class=idl>interface <dfn id=history-0>History</dfn> {
   readonly attribute long <a href=#dom-history-length title=dom-history-length>length</a>;
+  readonly attribute any <a href=#dom-history-state title=dom-history-state>state</a>;
   void <a href=#dom-history-go title=dom-history-go>go</a>(in optional long delta);
   void <a href=#dom-history-back title=dom-history-back>back</a>();
   void <a href=#dom-history-forward title=dom-history-forward>forward</a>();
@@ -60433,6 +60434,14 @@
 
    </dd>
 
+   <dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-state><a href=#dom-history-state>state</a></code></dt>
+
+   <dd>
+
+    <p>Returns the current <a href=#state-object>state object</a>.</p>
+
+   </dd>
+
    <dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-go><a href=#dom-history-go>go</a></code>( [ <var title="">delta</var> ] )</dt>
 
    <dd>
@@ -60515,6 +60524,11 @@
 
   <p>The actual entries are not accessible from script.</p>
 
+  <p>The <dfn id=dom-history-state title=dom-history-state><code>state</code></dfn>
+  attribute of the <code><a href=#history-0>History</a></code> interface must return the last
+  value it was set to by the user agent. Initially, its value must be
+  null.</p>
+
   <p>When the <dfn id=dom-history-go title=dom-history-go><code>go(<var title="">delta</var>)</code></dfn> method is invoked, if the
   argument to the method was omitted or has the value zero, the user
   agent must act as if the <code title=dom-location-reload><a href=#dom-location-reload>location.reload()</a></code> method was
@@ -60683,17 +60697,9 @@
 
    <li>
 
-     <p>If the <a href=#current-document-readiness>current document readiness</a> is not yet set
-     to the string "complete", let the <code><a href=#document>Document</a></code>'s
-     <a href=#pending-state-object>pending state object</a> be another <a href=#structured-clone>structured
-     clone</a> of the specified <var title="">data</var>. (If there
-     was already a <a href=#pending-state-object>pending state object</a>, the previous one
-     is discarded.)</p>
+     <p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to
+     another <a href=#structured-clone>structured clone</a> of the specified <var title="">data</var>.</p>
 
-     <p class=note>This ensures that the <code title=event-popstate><a href=#event-popstate>popstate</a></code> event that will be fired
-     when the document finally loads will accurately reflect the
-     pushed or replaced state object.</p>
-
    </li>
 
   </ol><p class=note>The <var title="">title</var> is purely
@@ -60798,7 +60804,7 @@
    document.forms.F.I.value = newI;
  }
 </SCRIPT>
-<BODY ONPOPSTATE="recover(event.state)">
+<BODY ONPOPSTATE="set(event.state)">
 <FORM NAME=F>
 State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
 </FORM></pre>
@@ -62100,33 +62106,16 @@
    state object. Otherwise, let <var title="">state</var> be
    null.</li>
 
-   <li>
+   <li><p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to <var title="">state</var>.</li>
 
-    <p>Run the appropriate steps according to the conditions
-    described:</p>
+   <li><p>Fire a <code title=event-popstate><a href=#event-popstate>popstate</a></code> event at
+   the <code><a href=#window>Window</a></code> object of the <code><a href=#document>Document</a></code>, using
+   the <code><a href=#popstateevent>PopStateEvent</a></code> interface, with the <code title=dom-PopStateEvent-state><a href=#dom-popstateevent-state>state</a></code> attribute set to the
+   value of <var title="">state</var>. This event must bubble but not
+   be cancelable and has no default action.</li>
 
-    <dl class=switch><dt>If the <a href=#current-document-readiness>current document readiness</a> is set to the
-     string "complete"</dt>
-
-     <dd><p><a href=#queue-a-task>Queue a task</a> to fire a <code title=event-popstate><a href=#event-popstate>popstate</a></code> event at the
-     <code><a href=#window>Window</a></code> object of the <code><a href=#document>Document</a></code>, using
-     the <code><a href=#popstateevent>PopStateEvent</a></code> interface, with the <code title=dom-PopStateEvent-state><a href=#dom-popstateevent-state>state</a></code> attribute set to the
-     value of <var title="">state</var>. This event must bubble but
-     not be cancelable and has no default action.</dd>
-
-     <dt>Otherwise</dt>
-
-     <dd><p>Let the <code><a href=#document>Document</a></code>'s <a href=#pending-state-object>pending state
-     object</a> be <var title="">state</var>. (If there was already
-     a <a href=#pending-state-object>pending state object</a>, the previous one is
-     discarded.)</p>
-
-     <p class=note>The event will then be fired just after the <code title=event-load>load</code> event.</dd>
-
-    </dl></li>
-
-   <li><p>If <var title="">hash changed</var> is true, then
-   <a href=#queue-a-task>queue a task</a> to fire a <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code> event at the
+   <li><p>If <var title="">hash changed</var> is true, then fire a
+   <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code> event at the
    <a href=#browsing-context>browsing context</a>'s <code><a href=#window>Window</a></code> object, using
    the <code><a href=#hashchangeevent>HashChangeEvent</a></code> interface, with the <code title=dom-HashChangeEvent-oldURL><a href=#dom-hashchangeevent-oldurl>oldURL</a></code> attribute set to
    <var title="">old URL</var> and the <code title=dom-HashChangeEvent-newURL><a href=#dom-hashchangeevent-newurl>newURL</a></code> attribute set to
@@ -62136,12 +62125,7 @@
    <li><p>The <a href=#current-entry>current entry</a> is now the <i>specified
    entry</i>.</li>
 
-  </ol><p>The <dfn id=pending-state-object>pending state object</dfn> is used to keep track of what
-  state object to use in the inital <code title=event-popstate><a href=#event-popstate>popstate</a></code> event fired by the parser
-  once it <a href=#stop-parsing title="stop parsing">stops parsing</a>. The
-  <a href=#pending-state-object>pending state object</a> must be initially null.</p>
-
-  <p>The <a href=#task-source>task source</a> for the tasks mentioned above is the
+  </ol><p>The <a href=#task-source>task source</a> for the tasks mentioned above is the
   <a href=#dom-manipulation-task-source>DOM manipulation task source</a>.</p>
 
 
@@ -86588,14 +86572,6 @@
    attribute set to false. This event must not bubble, must not be
    cancelable, and has no default action.</li>
 
-   <li><p>If the <code><a href=#document>Document</a></code> is in a <a href=#browsing-context>browsing
-   context</a>, then <a href=#queue-a-task>queue a task</a> to fire a <code title=event-popstate><a href=#event-popstate>popstate</a></code> event at the
-   <code><a href=#document>Document</a></code>'s <code><a href=#window>Window</a></code> object using the
-   <code><a href=#popstateevent>PopStateEvent</a></code> interface, with the <code title=dom-PopStateEvent-state><a href=#dom-popstateevent-state>state</a></code> attribute set to the
-   current value of the <a href=#pending-state-object>pending state object</a>. This event
-   must bubble but not be cancelable and has no default
-   action.</li>
-
    <li><p>If the <code><a href=#document>Document</a></code> has any <a href=#pending-application-cache-download-process-tasks>pending
    application cache download process tasks</a>, then <a href=#queue-a-task title="queue a task">queue</a> each such <a href=#concept-task title=concept-task>task</a> in the order they were added to
    the list of <a href=#pending-application-cache-download-process-tasks>pending application cache download process

Modified: index
===================================================================
--- index	2011-03-24 23:59:36 UTC (rev 5963)
+++ index	2011-03-25 00:55:06 UTC (rev 5964)
@@ -243,7 +243,7 @@
 
   <header class=head id=head><p><a class=logo href=http://www.whatwg.org/ rel=home><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 24 March 2011</h2>
+    <h2 class="no-num no-toc">Living Standard — Last Updated 25 March 2011</h2>
    </hgroup><p>You can take part in this work. <a href=http://www.whatwg.org/mailing-list>Join the working group's discussion list.</a></p>
    <p><strong>Web designers!</strong> We have a <a href=http://blog.whatwg.org/faq/>FAQ</a>, a <a href=http://forums.whatwg.org/>forum</a>, and a <a href=http://www.whatwg.org/mailing-list#help>help mailing list</a> for you!</p>
    <!--<p class="impl"><strong>Implementors!</strong> We have a <a href="http://www.whatwg.org/mailing-list#implementors">mailing list</a> for you too!</p>-->
@@ -60398,6 +60398,7 @@
 
   <pre class=idl>interface <dfn id=history-0>History</dfn> {
   readonly attribute long <a href=#dom-history-length title=dom-history-length>length</a>;
+  readonly attribute any <a href=#dom-history-state title=dom-history-state>state</a>;
   void <a href=#dom-history-go title=dom-history-go>go</a>(in optional long delta);
   void <a href=#dom-history-back title=dom-history-back>back</a>();
   void <a href=#dom-history-forward title=dom-history-forward>forward</a>();
@@ -60413,6 +60414,14 @@
 
    </dd>
 
+   <dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-state><a href=#dom-history-state>state</a></code></dt>
+
+   <dd>
+
+    <p>Returns the current <a href=#state-object>state object</a>.</p>
+
+   </dd>
+
    <dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-go><a href=#dom-history-go>go</a></code>( [ <var title="">delta</var> ] )</dt>
 
    <dd>
@@ -60495,6 +60504,11 @@
 
   <p>The actual entries are not accessible from script.</p>
 
+  <p>The <dfn id=dom-history-state title=dom-history-state><code>state</code></dfn>
+  attribute of the <code><a href=#history-0>History</a></code> interface must return the last
+  value it was set to by the user agent. Initially, its value must be
+  null.</p>
+
   <p>When the <dfn id=dom-history-go title=dom-history-go><code>go(<var title="">delta</var>)</code></dfn> method is invoked, if the
   argument to the method was omitted or has the value zero, the user
   agent must act as if the <code title=dom-location-reload><a href=#dom-location-reload>location.reload()</a></code> method was
@@ -60663,17 +60677,9 @@
 
    <li>
 
-     <p>If the <a href=#current-document-readiness>current document readiness</a> is not yet set
-     to the string "complete", let the <code><a href=#document>Document</a></code>'s
-     <a href=#pending-state-object>pending state object</a> be another <a href=#structured-clone>structured
-     clone</a> of the specified <var title="">data</var>. (If there
-     was already a <a href=#pending-state-object>pending state object</a>, the previous one
-     is discarded.)</p>
+     <p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to
+     another <a href=#structured-clone>structured clone</a> of the specified <var title="">data</var>.</p>
 
-     <p class=note>This ensures that the <code title=event-popstate><a href=#event-popstate>popstate</a></code> event that will be fired
-     when the document finally loads will accurately reflect the
-     pushed or replaced state object.</p>
-
    </li>
 
   </ol><p class=note>The <var title="">title</var> is purely
@@ -60778,7 +60784,7 @@
    document.forms.F.I.value = newI;
  }
 </SCRIPT>
-<BODY ONPOPSTATE="recover(event.state)">
+<BODY ONPOPSTATE="set(event.state)">
 <FORM NAME=F>
 State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
 </FORM></pre>
@@ -62080,33 +62086,16 @@
    state object. Otherwise, let <var title="">state</var> be
    null.</li>
 
-   <li>
+   <li><p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to <var title="">state</var>.</li>
 
-    <p>Run the appropriate steps according to the conditions
-    described:</p>
+   <li><p>Fire a <code title=event-popstate><a href=#event-popstate>popstate</a></code> event at
+   the <code><a href=#window>Window</a></code> object of the <code><a href=#document>Document</a></code>, using
+   the <code><a href=#popstateevent>PopStateEvent</a></code> interface, with the <code title=dom-PopStateEvent-state><a href=#dom-popstateevent-state>state</a></code> attribute set to the
+   value of <var title="">state</var>. This event must bubble but not
+   be cancelable and has no default action.</li>
 
-    <dl class=switch><dt>If the <a href=#current-document-readiness>current document readiness</a> is set to the
-     string "complete"</dt>
-
-     <dd><p><a href=#queue-a-task>Queue a task</a> to fire a <code title=event-popstate><a href=#event-popstate>popstate</a></code> event at the
-     <code><a href=#window>Window</a></code> object of the <code><a href=#document>Document</a></code>, using
-     the <code><a href=#popstateevent>PopStateEvent</a></code> interface, with the <code title=dom-PopStateEvent-state><a href=#dom-popstateevent-state>state</a></code> attribute set to the
-     value of <var title="">state</var>. This event must bubble but
-     not be cancelable and has no default action.</dd>
-
-     <dt>Otherwise</dt>
-
-     <dd><p>Let the <code><a href=#document>Document</a></code>'s <a href=#pending-state-object>pending state
-     object</a> be <var title="">state</var>. (If there was already
-     a <a href=#pending-state-object>pending state object</a>, the previous one is
-     discarded.)</p>
-
-     <p class=note>The event will then be fired just after the <code title=event-load>load</code> event.</dd>
-
-    </dl></li>
-
-   <li><p>If <var title="">hash changed</var> is true, then
-   <a href=#queue-a-task>queue a task</a> to fire a <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code> event at the
+   <li><p>If <var title="">hash changed</var> is true, then fire a
+   <code title=event-hashchange><a href=#event-hashchange>hashchange</a></code> event at the
    <a href=#browsing-context>browsing context</a>'s <code><a href=#window>Window</a></code> object, using
    the <code><a href=#hashchangeevent>HashChangeEvent</a></code> interface, with the <code title=dom-HashChangeEvent-oldURL><a href=#dom-hashchangeevent-oldurl>oldURL</a></code> attribute set to
    <var title="">old URL</var> and the <code title=dom-HashChangeEvent-newURL><a href=#dom-hashchangeevent-newurl>newURL</a></code> attribute set to
@@ -62116,12 +62105,7 @@
    <li><p>The <a href=#current-entry>current entry</a> is now the <i>specified
    entry</i>.</li>
 
-  </ol><p>The <dfn id=pending-state-object>pending state object</dfn> is used to keep track of what
-  state object to use in the inital <code title=event-popstate><a href=#event-popstate>popstate</a></code> event fired by the parser
-  once it <a href=#stop-parsing title="stop parsing">stops parsing</a>. The
-  <a href=#pending-state-object>pending state object</a> must be initially null.</p>
-
-  <p>The <a href=#task-source>task source</a> for the tasks mentioned above is the
+  </ol><p>The <a href=#task-source>task source</a> for the tasks mentioned above is the
   <a href=#dom-manipulation-task-source>DOM manipulation task source</a>.</p>
 
 
@@ -82524,14 +82508,6 @@
    attribute set to false. This event must not bubble, must not be
    cancelable, and has no default action.</li>
 
-   <li><p>If the <code><a href=#document>Document</a></code> is in a <a href=#browsing-context>browsing
-   context</a>, then <a href=#queue-a-task>queue a task</a> to fire a <code title=event-popstate><a href=#event-popstate>popstate</a></code> event at the
-   <code><a href=#document>Document</a></code>'s <code><a href=#window>Window</a></code> object using the
-   <code><a href=#popstateevent>PopStateEvent</a></code> interface, with the <code title=dom-PopStateEvent-state><a href=#dom-popstateevent-state>state</a></code> attribute set to the
-   current value of the <a href=#pending-state-object>pending state object</a>. This event
-   must bubble but not be cancelable and has no default
-   action.</li>
-
    <li><p>If the <code><a href=#document>Document</a></code> has any <a href=#pending-application-cache-download-process-tasks>pending
    application cache download process tasks</a>, then <a href=#queue-a-task title="queue a task">queue</a> each such <a href=#concept-task title=concept-task>task</a> in the order they were added to
    the list of <a href=#pending-application-cache-download-process-tasks>pending application cache download process

Modified: source
===================================================================
--- source	2011-03-24 23:59:36 UTC (rev 5963)
+++ source	2011-03-25 00:55:06 UTC (rev 5964)
@@ -68578,6 +68578,7 @@
 
   <pre class="idl">interface <dfn>History</dfn> {
   readonly attribute long <span title="dom-history-length">length</span>;
+  readonly attribute any <span title="dom-history-state">state</span>;
   void <span title="dom-history-go">go</span>(in optional long delta);
   void <span title="dom-history-back">back</span>();
   void <span title="dom-history-forward">forward</span>();
@@ -68595,6 +68596,14 @@
 
    </dd>
 
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-state">state</code></dt>
+
+   <dd>
+
+    <p>Returns the current <span>state object</span>.</p>
+
+   </dd>
+
    <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-go">go</code>( [ <var title="">delta</var> ] )</dt>
 
    <dd>
@@ -68679,6 +68688,11 @@
 
   <p>The actual entries are not accessible from script.</p>
 
+  <p>The <dfn title="dom-history-state"><code>state</code></dfn>
+  attribute of the <code>History</code> interface must return the last
+  value it was set to by the user agent. Initially, its value must be
+  null.</p>
+
   <p>When the <dfn title="dom-history-go"><code>go(<var
   title="">delta</var>)</code></dfn> method is invoked, if the
   argument to the method was omitted or has the value zero, the user
@@ -68895,18 +68909,10 @@
 
    <li>
 
-     <p>If the <span>current document readiness</span> is not yet set
-     to the string "complete", let the <code>Document</code>'s
-     <span>pending state object</span> be another <span>structured
-     clone</span> of the specified <var title="">data</var>. (If there
-     was already a <span>pending state object</span>, the previous one
-     is discarded.)</p>
+     <p>Set <code title="dom-history-state">history.state</code> to
+     another <span>structured clone</span> of the specified <var
+     title="">data</var>.</p>
 
-     <p class="note">This ensures that the <code
-     title="event-popstate">popstate</code> event that will be fired
-     when the document finally loads will accurately reflect the
-     pushed or replaced state object.</p>
-
    </li>
 
   </ol>
@@ -69013,7 +69019,7 @@
    document.forms.F.I.value = newI;
  }
 </SCRIPT>
-<BODY ONPOPSTATE="recover(event.state)">
+<BODY ONPOPSTATE="set(event.state)">
 <FORM NAME=F>
 State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
 </FORM></pre>
@@ -70488,41 +70494,18 @@
    state object. Otherwise, let <var title="">state</var> be
    null.</p></li>
 
-   <li>
+   <li><p>Set <code title="dom-history-state">history.state</code> to <var
+   title="">state</var>.</p></li>
 
-    <p>Run the appropriate steps according to the conditions
-    described:</p>
+   <li><p>Fire a <code title="event-popstate">popstate</code> event at
+   the <code>Window</code> object of the <code>Document</code>, using
+   the <code>PopStateEvent</code> interface, with the <code
+   title="dom-PopStateEvent-state">state</code> attribute set to the
+   value of <var title="">state</var>. This event must bubble but not
+   be cancelable and has no default action.</p></li>
 
-    <dl class="switch">
-
-     <dt>If the <span>current document readiness</span> is set to the
-     string "complete"</dt>
-
-     <dd><p><span>Queue a task</span> to fire a <code
-     title="event-popstate">popstate</code> event at the
-     <code>Window</code> object of the <code>Document</code>, using
-     the <code>PopStateEvent</code> interface, with the <code
-     title="dom-PopStateEvent-state">state</code> attribute set to the
-     value of <var title="">state</var>. This event must bubble but
-     not be cancelable and has no default action.</p></dd>
-
-     <dt>Otherwise</dt>
-
-     <dd><p>Let the <code>Document</code>'s <span>pending state
-     object</span> be <var title="">state</var>. (If there was already
-     a <span>pending state object</span>, the previous one is
-     discarded.)</p>
-
-     <p class="note">The event will then be fired just after the <code
-     title="event-load">load</code> event.</p></dd>
-
-    </dl>
-
-   </li>
-
-   <li><p>If <var title="">hash changed</var> is true, then
-   <span>queue a task</span> to fire a <code
-   title="event-hashchange">hashchange</code> event at the
+   <li><p>If <var title="">hash changed</var> is true, then fire a
+   <code title="event-hashchange">hashchange</code> event at the
    <span>browsing context</span>'s <code>Window</code> object, using
    the <code>HashChangeEvent</code> interface, with the <code
    title="dom-HashChangeEvent-oldURL">oldURL</code> attribute set to
@@ -70536,12 +70519,6 @@
 
   </ol>
 
-  <p>The <dfn>pending state object</dfn> is used to keep track of what
-  state object to use in the inital <code
-  title="event-popstate">popstate</code> event fired by the parser
-  once it <span title="stop parsing">stops parsing</span>. The
-  <span>pending state object</span> must be initially null.</p>
-
   <p>The <span>task source</span> for the tasks mentioned above is the
   <span>DOM manipulation task source</span>.</p>
 
@@ -98038,16 +98015,6 @@
    attribute set to false. This event must not bubble, must not be
    cancelable, and has no default action.</p></li>
 
-   <li><p>If the <code>Document</code> is in a <span>browsing
-   context</span>, then <span>queue a task</span> to fire a <code
-   title="event-popstate">popstate</code> event at the
-   <code>Document</code>'s <code>Window</code> object using the
-   <code>PopStateEvent</code> interface, with the <code
-   title="dom-PopStateEvent-state">state</code> attribute set to the
-   current value of the <span>pending state object</span>. This event
-   must bubble but not be cancelable and has no default
-   action.</p></li>
-
    <li><p>If the <code>Document</code> has any <span>pending
    application cache download process tasks</span>, then <span
    title="queue a task">queue</span> each such <span




More information about the Commit-Watchers mailing list