hixie: Define how history.back() works in a manner compatible with what IE does. (whatwg r3359)

hixie: Define how history.back() works in a manner compatible with what
IE does. (whatwg r3359)

http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.2496&r2=1.2497&f=h
http://html5.org/tools/web-apps-tracker?from=3358&to=3359

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.2496
retrieving revision 1.2497
diff -u -d -r1.2496 -r1.2497
--- Overview.html 6 Jul 2009 10:22:22 -0000 1.2496
+++ Overview.html 7 Jul 2009 00:32:49 -0000 1.2497
@@ -174,7 +174,7 @@
    <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>
    <!--ZZZ:-->
    <!--<h2 class="no-num no-toc">W3C Working Draft 23 April 2009</h2>-->
-   <h2 class="no-num no-toc" id="editor-s-draft-date-1-january-1970">Editor's Draft 6 July 2009</h2>
+   <h2 class="no-num no-toc" id="editor-s-draft-date-1-january-1970">Editor's Draft 7 July 2009</h2>
    <!--:ZZZ-->
    <dl><!-- ZZZ: update the month/day (twice), (un)comment out
     <dt>This Version:</dt>
@@ -267,7 +267,7 @@
   track.
   <!--ZZZ:-->
   <!--This specification is the 23 April 2009 Working Draft.-->
-  This specification is the 6 July 2009 Editor's Draft.
+  This specification is the 7 July 2009 Editor's Draft.
   <!--:ZZZ-->
   </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>This specification is also being produced by the <a href="http://www.whatwg.org/">WHATWG</a>. The two specifications are
   identical from the table of contents onwards.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- context and rationale (required) --><p>This specification is intended to replace (be a new version of)
@@ -46138,7 +46138,7 @@
 
    <dd>
 
-    <p>Returns the number of entries in the session history.</p>
+    <p>Returns the number of entries in the <a href="#joint-session-history">joint session history</a>.</p>
 
    </dd>
 
@@ -46146,7 +46146,7 @@
 
    <dd>
 
-    <p>Goes back or forward the specified number of steps in the history.</p>
+    <p>Goes back or forward the specified number of steps in the <a href="#joint-session-history">joint session history</a>.</p>
 
     <p>A zero delta will reload the current page.</p>
 
@@ -46158,7 +46158,7 @@
 
    <dd>
 
-    <p>Goes back one step in the history.</p>
+    <p>Goes back one step in the <a href="#joint-session-history">joint session history</a>.</p>
 
     <p>If there is no previous page, does nothing.</p>
 
@@ -46168,7 +46168,7 @@
 
    <dd>
 
-    <p>Goes forward one step in the history.</p>
+    <p>Goes forward one step in the <a href="#joint-session-history">joint session history</a>.</p>
 
     <p>If there is no next page, does nothing.</p>
 
@@ -46190,33 +46190,56 @@
 
    </dd>
 
-  </dl><div class="impl">
+  </dl><p>The <dfn id="joint-session-history">joint session history</dfn> of a <code><a href="#history-1">History</a></code>
+  object is the union of all the <a href="#session-history" title="session history">session
+  histories</a> of all <a href="#browsing-context" title="browsing context">browsing
+  contexts</a> of all the <a href="#fully-active">fully active</a>
+  <code>Document</code> objects that share the <code><a href="#history-1">History</a></code>
+  object's <a href="#top-level-browsing-context">top-level browsing context</a>.<p>Entries in the <a href="#joint-session-history">joint session history</a> are ordered
+  chronologically by the time they were added to their respective
+  <a href="#session-history" title="session history">session histories</a>. (Since all
+  these <a href="#browsing-context" title="browsing context">browsing contexts</a> by
+  definition share an <a href="#event-loop">event loop</a>, there is always a
+  well-defined sequential order in which their <a href="#session-history" title="session
+  history">session histories</a> had their entries added.) Each
+  entry has an index; the earliest entry has index 0, and the
+  subsequent entries are numbered with consecutively increasing
+  integers (1, 2, 3, etc).<p>The <dfn id="current-entry-of-the-joint-session-history">current entry of the joint session history</dfn> is the
+  entry that was the most recently became a <a href="#current-entry">current entry</a>
+  in its <a href="#session-history">session history</a>.<div class="impl">
 
   <p>The <dfn id="dom-history-length" title="dom-history-length"><code>length</code></dfn>
   attribute of the <code><a href="#history-1">History</a></code> interface must return the
-  number of entries in this <a href="#session-history">session history</a>.</p>
+  number of entries in the <a href="#joint-session-history">joint session history</a>.</p>
 
   <p>The actual entries are not accessible from script.</p>
 
-  <p>The <dfn id="dom-history-go" title="dom-history-go"><code>go(<var title="">delta</var>)</code></dfn> method causes the UA to move the
-  number of steps specified by <var title="">delta</var> in the
-  session history.</p>
+  <p>The <dfn id="dom-history-go" title="dom-history-go"><code>go(<var title="">delta</var>)</code></dfn> method causes the UA to run the
+  following steps:</p>
 
-  <p>If the <var title="">delta</var> is zero, or if the argument is
-  omitted, then the user agent must act as if the <code title="dom-location-reload"><a href="#dom-location-reload">location.reload()</a></code> method was
-  called instead.</p>
+  <ol><li><p>If the argument to the method was omitted or has the value
+   zero, then act as if the <code title="dom-location-reload"><a href="#dom-location-reload">location.reload()</a></code> method was
+   called instead, and abort these steps.</p>
 
-  <p>Otherwise, if the index of the <a href="#current-entry">current entry</a> plus
-  <var title="">delta</var> is less than zero or greater than or equal
-  to the <a href="#dom-history-length" title="dom-history-length">number of items in the
-  session history</a>, then the user agent must do nothing.</p>
+   <li><p>Let <var title="">delta</var> be the argument to the
+   method.</li>
 
-  <p>Otherwise, the user agent must cause the current <a href="#browsing-context">browsing
-  context</a> to <a href="#traverse-the-history">traverse the history</a> to the specified
-  entry. The <i>specified entry</i> is the one whose index equals the
-  index of the <a href="#current-entry">current entry</a> plus <var title="">delta</var>.</p>
+   <li><p>If the index of the <a href="#current-entry-of-the-joint-session-history">current entry of the joint session
+   history</a> plus <var title="">delta</var> is less than zero or
+   greater than or equal to the number of items in the <a href="#joint-session-history">joint
+   session history</a>, then the user agent must do nothing.</p>
 
-  <p>When the user navigates through a <a href="#browsing-context">browsing context</a>,
+   <li><p>Let <var title="">specified entry</var> be the entry in the
+   <a href="#joint-session-history">joint session history</a> whose index is the sum of <var title="">delta</var> and the index of the <a href="#current-entry-of-the-joint-session-history">current entry of
+   the joint session history</a>.</li>
+
+   <li><p>Let <var title="">specified browsing context</var> be the
+   <a href="#browsing-context">browsing context</a> of the <var title="">specified
+   entry</var>.</li>
+
+   <li><p><a href="#traverse-the-history">Traverse the history</a> of the <var title="">specified browsing context</var> to the <var title="">specified entry</var>.</p>
+
+  </ol><p>When the user navigates through a <a href="#browsing-context">browsing context</a>,
   e.g. using a browser's back and forward buttons, the user agent must
   translate this action into the equivalent invocations of the <code title="dom-history-go"><a href="#dom-history-go">history.go(<var title="">delta</var>)</a></code>
   method on the various affected <code title="dom-window"><a href="#dom-window">window</a></code> objects.</p>
@@ -46231,7 +46254,7 @@
     <td>Must do the same as <code title="dom-history-go"><a href="#dom-history-go">go(-1)</a></code></td>
    <tr><td><dfn id="dom-history-forward" title="dom-history-forward"><code>forward()</code></dfn></td>
     <td>Must do the same as <code title="dom-history-go"><a href="#dom-history-go">go(1)</a></code></td>
-   </table><p>The <dfn id="dom-history-pushstate" title="dom-history-pushState"><code>pushState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method adds a state object to the
+   </table><hr><p>The <dfn id="dom-history-pushstate" title="dom-history-pushState"><code>pushState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method adds a state object to the
   history.</p>
 
   <p>When this method is invoked, the user agent must run the following steps:</p>

Received on Tuesday, 7 July 2009 00:33:53 UTC