hixie: 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. (whatwg r5964)

hixie: 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. (whatwg
r5964)

http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.4792&r2=1.4793&f=h
http://html5.org/tools/web-apps-tracker?from=5963&to=5964

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.4792
retrieving revision 1.4793
diff -u -d -r1.4792 -r1.4793
--- Overview.html 21 Mar 2011 10:50:34 -0000 1.4792
+++ Overview.html 25 Mar 2011 00:55:13 -0000 1.4793
@@ -343,7 +343,7 @@
 
    <h1>HTML5</h1>
    <h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2>
-   <h2 class="no-num no-toc" id="editor-s-draft-21-march-2011">Editor's Draft 21 March 2011</h2>
+   <h2 class="no-num no-toc" id="editor-s-draft-25-march-2011">Editor's Draft 25 March 2011</h2>
    <dl><dt>Latest Published Version:</dt>
     <dd><a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a></dd>
     <dt>Latest Editor's Draft:</dt>
@@ -485,7 +485,7 @@
   Group</a> is the W3C working group responsible for this
   specification's progress along the W3C Recommendation
   track.
-  This specification is the 21 March 2011 Editor's Draft.
+  This specification is the 25 March 2011 Editor's Draft.
   </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>Work on this specification is also done at the <a href="http://www.whatwg.org/">WHATWG</a>. The W3C HTML working group
   actively pursues convergence with the WHATWG, as required by the <a href="http://www.w3.org/2007/03/HTML-WG-charter">W3C HTML working
   group charter</a>.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- required patent boilerplate --><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5
@@ -5995,7 +5995,7 @@
   </div>
 
 
-  <h4 id="content-type-sniffing"><span class="secno">2.7.3 </span>Determining the type of a resource</h4><p class="XXX annotation"><span><a href="http://www.w3.org/html/wg/tracker/issues/125">ISSUE-125</a> (charset-vs-quotes), <a href="http://www.w3.org/html/wg/tracker/issues/126">ISSUE-126</a> (charset-vs-backslashes) and <a href="http://www.w3.org/html/wg/tracker/issues/148">ISSUE-148</a> (charset-detect) block progress to Last Call</span></p>
+  <h4 id="content-type-sniffing"><span class="secno">2.7.3 </span>Determining the type of a resource</h4><p class="XXX annotation"><span><a href="http://www.w3.org/html/wg/tracker/issues/125">ISSUE-125</a> (charset-vs-quotes) and <a href="http://www.w3.org/html/wg/tracker/issues/148">ISSUE-148</a> (charset-detect) block progress to Last Call</span></p>
 
   <p>The <dfn id="content-type" title="Content-Type">Content-Type metadata</dfn> of a
   resource must be obtained and interpreted in a manner consistent
@@ -43783,6 +43783,7 @@
 
   </div><h4 id="the-history-interface"><span class="secno">5.4.2 </span>The <code><a href="#history-0">History</a></code> interface</h4><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>();
@@ -43796,6 +43797,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>
@@ -43872,6 +43881,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
@@ -44040,16 +44054,8 @@
 
    <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 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>
+     <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>
 
    </li>
 
@@ -44151,7 +44157,7 @@
    document.forms.F.I.value = newI;
  }
 &lt;/SCRIPT&gt;
-&lt;BODY ONPOPSTATE="recover(event.state)"&gt;
+&lt;BODY ONPOPSTATE="set(event.state)"&gt;
 &lt;FORM NAME=F&gt;
 State: &lt;OUTPUT NAME=I&gt;1&lt;/OUTPUT&gt; &lt;INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()"&gt;
 &lt;/FORM&gt;</pre>
@@ -45418,33 +45424,16 @@
    state object. Otherwise, let <var title="">state</var> be
    null.</li>
 
-   <li>
-
-    <p>Run the appropriate steps according to the conditions
-    described:</p>
-
-    <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>
+   <li><p>Set <code title="dom-history-state"><a href="#dom-history-state">history.state</a></code> to <var title="">state</var>.</li>
 
-    </dl></li>
+   <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>
 
-   <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
@@ -45454,12 +45443,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>
 
 
@@ -62170,14 +62154,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

Received on Friday, 25 March 2011 00:56:30 UTC