[html5] r1812 - [] (0) URLification of offline application cache and of session history.

whatwg at whatwg.org whatwg at whatwg.org
Thu Jun 26 18:56:06 PDT 2008


Author: ianh
Date: 2008-06-26 18:56:06 -0700 (Thu, 26 Jun 2008)
New Revision: 1812

Modified:
   index
   source
Log:
[] (0) URLification of offline application cache and of session history.

Modified: index
===================================================================
--- index	2008-06-27 00:21:35 UTC (rev 1811)
+++ index	2008-06-27 01:56:06 UTC (rev 1812)
@@ -2856,6 +2856,14 @@
      script. (Such scripts would not be conforming, however, as <code
      title=attr-xml-base><a href="#xmlbase">xml:base</a></code> attributes
      are not allowed in <a href="#html-">HTML documents</a>.)</p>
+
+   <dt>If the URL to be resolved was found in an offline application cache
+    manifest
+
+   <dd>
+    <p>The base URL is the URL of the <a href="#application0">application
+     cache</a> <a href="#the-manifest"
+     title=concept-appcache-manifest>manifest</a>.
   </dl>
 
   <p>The <dfn id=document0>document base URL</dfn> of a <code>Document</code>
@@ -32219,8 +32227,7 @@
   <p>The <code title=dom-navigator-registerContentHandler><a
    href="#registercontenthandler">registerContentHandler()</a></code> method
    would work equivalently, but for unknown MIME types instead of unknown
-   protocols.</p>
-  <!-- XXXURL XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \(URI\|IRI\|URL\) -->
+   protocols.
 
   <h3 id=offline><span class=secno>5.7 </span>Offline Web applications</h3>
 
@@ -32231,20 +32238,18 @@
   <p class=big-issue>...
 
   <h4 id=appcache><span class=secno>5.7.2 </span>Application caches</h4>
-  <!-- XXXURL change to URL -->
 
   <p>An <dfn id=application0>application cache</dfn> is a collection of
-   resources. An application cache is identified by the URI of a resource
-   manifest which is used to populate the cache.</p>
-  <!-- XXXURL change to URL -->
+   resources. An application cache is identified by the <a
+   href="#absolute">absolute URL</a> of a resource manifest which is used to
+   populate the cache.
 
   <p>Application caches are versioned, and there can be different instances
-   of caches for the same manifest URI, each having a different version. A
+   of caches for the same manifest URL, each having a different version. A
    cache is newer than another if it was created after the other (in other
-   words, caches in a group have a chronological order).</p>
-  <!-- XXXURL change to URL -->
+   words, caches in a group have a chronological order).
 
-  <p>Each group of application caches for the same manifest URI have a common
+  <p>Each group of application caches for the same manifest URL have a common
    <dfn id=update0 title=concept-appcache-status>update status</dfn>, which
    is one of the following: <i>idle</i>, <i>checking</i>, <i>downloading</i>.
 
@@ -32267,9 +32272,9 @@
   <p>An application cache consists of:
 
   <ul>
-   <li> <!-- XXXURL change to URL -->
+   <li>
     <p>One of more resources (including their out-of-band metadata, such as
-     HTTP headers, if any), identified by URIs, each falling into one (or
+     HTTP headers, if any), identified by URLs, each falling into one (or
      more) of the following categories:</p>
 
     <dl>
@@ -32284,9 +32289,9 @@
       attribute.
 
      <dt><dfn id=the-manifest title=concept-appcache-manifest>The
-      manifest</dfn> <!-- XXXURL change to URL -->
+      manifest</dfn>
 
-     <dd>The resource corresponding to the URI that was given in an implicit
+     <dd>The resource corresponding to the URL that was given in an implicit
       entry's <code><a href="#html">html</a></code> element's <code
       title=attr-html-manifest><a href="#manifest">manifest</a></code>
       attribute. The manifest is downloaded and processed during the <a
@@ -32315,9 +32320,8 @@
 
      <dt><dfn id=opportunistically
       title=concept-appcache-oppcache>Opportunistically cached entries</dfn>
-      <!-- XXXURL change to URL -->
 
-     <dd>Resources whose URIs <a href="#matches"
+     <dd>Resources whose URLs <a href="#matches"
       title=concept-appcache-matches-oppcache>matched</a> an <a
       href="#opportunistic" title=concept-appcache-oppcache-ns>opportunistic
       caching namespace</a> when they were fetched, and were therefore cached
@@ -32329,26 +32333,23 @@
      <dd>Resources that were added to the cache by the <code
       title=dom-appcache-add><a href="#addurl">add()</a></code> method.
     </dl>
-    <!-- XXXURL change to URL -->
-    <p class=note>A URI in the list can be flagged with multiple different
+
+    <p class=note>A URL in the list can be flagged with multiple different
      types, and thus an entry can end up being categorized as multiple
      entries. For example, an entry can be an explicit entry and a dynamic
      entry at the same time.</p>
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>Zero or more <dfn id=opportunistic
     title=concept-appcache-oppcache-ns>opportunistic caching
-    namespaces</dfn>: URIs, used as <a href="#matches"
+    namespaces</dfn>: URLs, used as <a href="#matches"
     title=concept-appcache-matches-oppcache>prefix match patterns</a>, each
     of which is mapped to a <a href="#fallback0"
-    title=concept-appcache-fallback>fallback entry</a>. Each namespace URI
-    prefix, when parsed as a URI, has the <a href="#same-origin">same
+    title=concept-appcache-fallback>fallback entry</a>. Each namespace URL
+    prefix, when parsed as a URL, has the <a href="#same-origin">same
     origin</a> as <a href="#the-manifest" title=concept-appcache-manifest>the
-    manifest</a>.</li>
-   <!-- XXXURL change to URL -->
+    manifest</a>.
 
-   <li>Zero or more URIs that form the <dfn id=online
+   <li>Zero or more URLs that form the <dfn id=online
     title=concept-appcache-onlinewhitelist>online whitelist</dfn>.
   </ul>
 
@@ -32409,9 +32410,9 @@
      CHARACTER TABULATION (tab) characters, followed by a single U+0023
      NUMBER SIGN (#) character, followed by zero or more characters other
      than U+000A LINE FEED (LF) and U+000D CARRIAGE RETURN (CR) characters.</p>
-    <!-- XXXURL change to URL -->
+
     <p class=note>Comments must be on a line on their own. If they were to be
-     included on a line with a URI, the "#" would be mistaken for part of a
+     included on a line with a URL, the "#" would be mistaken for part of a
      fragment identifier.</p>
 
    <dt>A section header
@@ -32448,35 +32449,32 @@
 
     <p>When the current section is the explicit section or the online
      whitelist section, data lines must consist of zero or more U+0020 SPACE
-     and U+0009 CHARACTER TABULATION (tab) characters, a valid URI reference
-     or IRI reference to a resource other than the manifest itself, and then
-     zero or more U+0020 SPACE and U+0009 CHARACTER TABULATION (tab)
-     characters. <a href="#refsRFC3986">[RFC3986]</a> <a
-     href="#refsRFC3987">[RFC3987]</a></p>
+     and U+0009 CHARACTER TABULATION (tab) characters, a <a
+     href="#valid">valid URL</a> identifying a resource other than the
+     manifest itself, and then zero or more U+0020 SPACE and U+0009 CHARACTER
+     TABULATION (tab) characters.</p>
 
     <p>When the current section is the fallback section, data lines must
      consist of zero or more U+0020 SPACE and U+0009 CHARACTER TABULATION
-     (tab) characters, a valid URI reference or IRI reference to a resource
-     other than the manifest itself, one or more U+0020 SPACE and U+0009
-     CHARACTER TABULATION (tab) characters, another valid URI reference or
-     IRI reference to a resource other than the manifest itself, and then
-     zero or more U+0020 SPACE and U+0009 CHARACTER TABULATION (tab)
-     characters. <a href="#refsRFC3986">[RFC3986]</a> <a
-     href="#refsRFC3987">[RFC3987]</a></p>
-    <!-- XXXURL change to URL -->
-    <p class=note>The URI or IRI references in data lines can't be empty
-     strings, since those would be relative URIs to the manifest itself. Such
-     lines would be confused with blank or invalid lines, anyway.</p>
+     (tab) characters, a <a href="#valid">valid URL</a> identifying a
+     resource other than the manifest itself, one or more U+0020 SPACE and
+     U+0009 CHARACTER TABULATION (tab) characters, another <a
+     href="#valid">valid URL</a> identifying a resource other than the
+     manifest itself, and then zero or more U+0020 SPACE and U+0009 CHARACTER
+     TABULATION (tab) characters.</p>
+
+    <p class=note>The URLs in data lines can't be empty strings, since those
+     would be relative URLs to the manifest itself. Such lines would be
+     confused with blank or invalid lines, anyway.</p>
   </dl>
 
-  <p>Manifests may contain sections more than once. Sections may be empty.</p>
-  <!-- XXXURL change to URL -->
+  <p>Manifests may contain sections more than once. Sections may be empty.
 
-  <p>URIs that are to be fallback pages associated with <a
+  <p>URLs that are to be fallback pages associated with <a
    href="#opportunistic" title=concept-appcache-oppcache-ns>opportunistic
    caching namespaces</a>, and those namespaces themselves, must be given in
-   fallback sections, with the namespace being the first URI of the data
-   line, and the corresponding fallback page being the second URI. All the
+   fallback sections, with the namespace being the first URL of the data
+   line, and the corresponding fallback page being the second URL. All the
    other pages to be cached must be listed in explicit sections.
 
   <p><a href="#opportunistic"
@@ -32484,25 +32482,22 @@
    must have the <a href="#same-origin">same origin</a> as the manifest
    itself.
 
-  <p>An opportunistic caching namespace must not be listed more than once.</p>
-  <!-- XXXURL change to URL -->
+  <p>An opportunistic caching namespace must not be listed more than once.
 
-  <p>URIs that the user agent is to put into the <a href="#online"
+  <p>URLs that the user agent is to put into the <a href="#online"
    title=concept-appcache-onlinewhitelist>online whitelist</a> must all be
-   specified in online whitelist sections. (This is needed for any URI that
-   the page is intending to use to communicate back to the server.)</p>
-  <!-- XXXURL change to URL -->
+   specified in online whitelist sections. (This is needed for any URL that
+   the page is intending to use to communicate back to the server.)
 
-  <p>URIs in the online whitelist section must not also be listed in explicit
+  <p>URLs in the online whitelist section must not also be listed in explicit
    section, and must not be listed as fallback entries in the fallback
-   section. (URIs in the online whitelist section may match opportunistic
-   caching namespaces, however.)</p>
-  <!-- XXXURL change to URL -->
+   section. (URLs in the online whitelist section may match opportunistic
+   caching namespaces, however.)
 
-  <p>Relative URIs must be given relative to the manifest's own URI.</p>
-  <!-- XXXURL change to URL; maybe have explicit support for this in the URL section? -->
+  <p>Relative URLs must be given relative to the manifest's own URL.
 
-  <p>URIs in manifests must not have fragment identifiers.
+  <p>URLs in manifests must not have fragment identifiers (i.e. the U+0023
+   NUMBER SIGN character isn't allowed in URLs in manifests).
 
   <h5 id=parsing1><span class=secno>5.7.3.2. </span>Parsing cache manifests</h5>
 
@@ -32518,27 +32513,21 @@
    be replaced by U+FFFD REPLACEMENT CHARACTERs. (this isn't black-box
    testable since neither U+0000 nor U+FFFD are valid anywhere in the
    syntax and thus both will be treated the same anyway)-->
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Let <var title="">explicit URIs</var> be an initially empty list of <a
+    <p>Let <var title="">explicit URLs</var> be an initially empty list of <a
      href="#explicit" title=concept-appcache-explicit>explicit entries</a>.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Let <var title="">fallback URIs</var> be an initially empty mapping of
+    <p>Let <var title="">fallback URLs</var> be an initially empty mapping of
      <a href="#opportunistic"
      title=concept-appcache-oppcache-ns>opportunistic caching namespaces</a>
      to <a href="#fallback0" title=concept-appcache-fallback>fallback
      entries</a>.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Let <var title="">online whitelist URIs</var> be an initially empty
-     list of URIs for a <a href="#online"
+    <p>Let <var title="">online whitelist URLs</var> be an initially empty
+     list of URLs for a <a href="#online"
      title=concept-appcache-onlinewhitelist>online whitelist</a>.
 
    <li>
@@ -32626,21 +32615,26 @@
     <dl class=switch>
      <dt>If <var title="">mode</var> is "explicit"
 
-     <dd> <!-- XXXURL change to URL -->
-      <p>If <var title="">line</var> is not a syntactically correct URI
-       reference or IRI reference, then jump back to the step labeled "start
-       of line".</p>
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, resolve the URI reference or IRI reference to an absolute
-       URI or IRI, and drop the fragment identifier, if any.</p>
-      <!-- XXXURL change to URL -->
-      <p>Now, if the resource's URI has a different <scheme> component
-       than the manifest's URI (compared
-       case-insensitively<!-- XXX ASCII -->), then jump back to the step
-       labeled "start of line".</p>
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, add this URI to the <var title="">explicit URIs</var>.</p>
+     <dd>
+      <p><a href="#resolve" title="resolve a url">Resolve</a> <var
+       title="">line</var>.</p>
 
+      <p>If this fails, then jump back to the step labeled "start of line".</p>
+
+      <p>If the resulting <a href="#absolute">absolute URL</a> has a
+       different <a href="#ltschemegt" title=url-scheme><scheme></a>
+       component than the manifest's URL (compared
+       case-insensitively<!-- XXX ASCII
+      -->), then jump back to the
+       step labeled "start of line".</p>
+
+      <p>Drop the <a href="#ltfragmentgt"
+       title=url-fragment><fragment></a> component of the resulting <a
+       href="#absolute">absolute URL</a>, if it has one.</p>
+
+      <p>Add the resulting <a href="#absolute">absolute URL</a> to the <var
+       title="">explicit URLs</var>.</p>
+
      <dt>If <var title="">mode</var> is "fallback"
 
      <dd>
@@ -32654,79 +32648,73 @@
        U+0020 SPACE or U+0009 CHARACTER TABULATION (tab) character in <var
        title="">line</var> be <var title="">part two</var>.</p>
 
-      <p>Strip any leading U+0020 SPACE or U+0009 CHARACTER TABULATION (tab)
-       characters in <var title="">part two</var>.</p>
-      <!-- XXXURL change to URL -->
-      <p>If <var title="">part one</var> and <var title="">part two</var> are
-       not both syntactically correct URI or IRI references, then jump back
-       to the step labeled "start of line".</p>
-      <!-- XXXURL use algorithms -->
-      <p>Resolve the URI or IRI references in <var title="">part one</var>
-       and <var title="">part two</var> to absolute URIs or IRIs, and drop
-       the fragment identifiers, if any.</p>
-      <!-- XXXURL change to URL -->
-      <p>If the absolute URI or IRI corresponding to <var title="">part
-       one</var> is already in the <var title="">fallback URIs</var> mapping
-       as an <a href="#opportunistic"
+      <p><a href="#resolve" title="resolve a url">Resolve</a> <var
+       title="">part one</var> and <var title="">part two</var>.</p>
+
+      <p>If either fails, then jump back to the step labeled "start of line".</p>
+
+      <p>If the <a href="#absolute">absolute URL</a> corresponding to <var
+       title="">part one</var> does not have the <a href="#same-origin">same
+       origin</a> as the manifest's URL, then jump back to the step labeled
+       "start of line".</p>
+      <!-- SECURITY -->
+      <p>If the resulting <a href="#absolute">absolute URL</a> for <var
+       title="">part two has a different <a href="#ltschemegt"
+       title=url-scheme><scheme></a> component than the manifest's URL
+       (compared case-insensitively<!-- XXX ASCII -->), then jump back to the
+       step labeled "start of line".</var></p>
+
+      <p>Drop any the <a href="#ltfragmentgt"
+       title=url-fragment><fragment></a> components of the resulting <a
+       href="#absolute" title="absolute URL">absolute URLs</a>.</p>
+
+      <p>If the <a href="#absolute">absolute URL</a> corresponding to <var
+       title="">part one</var> is already in the <var title="">fallback
+       URIs</var> mapping as an <a href="#opportunistic"
        title=concept-appcache-oppcache-ns>opportunistic caching
        namespace</a>, then jump back to the step labeled "start of line".</p>
-      <!-- XXXURL change to URL -->
-      <p>If the absolute URI or IRI corresponding to <var title="">part
-       one</var> does not have the <a href="#same-origin">same origin</a> as
-       the manifest's URI, then jump back to the step labeled "start of
-       line".</p>
-      <!-- SECURITY --> <!-- XXXURL change to URL -->
-      <p>If the absolute URI or IRI corresponding to <var title="">part
-       two</var> has a different <scheme> component than the manifest's
-       URI (compared case-insensitively<!-- XXX
-      ASCII -->), then jump
-       back to the step labeled "start of line".</p>
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, add the absolute URI or IRI corresponding to <var
-       title="">part one</var> to the <var title="">fallback URIs</var>
-       mapping as an <a href="#opportunistic"
+
+      <p>Otherwise, add the <a href="#absolute">absolute URL</a>
+       corresponding to <var title="">part one</var> to the <var
+       title="">fallback URIs</var> mapping as an <a href="#opportunistic"
        title=concept-appcache-oppcache-ns>opportunistic caching
-       namespace</a>, mapped to the absolute URI corresponding to <var
-       title="">part two</var> as the <a href="#fallback0"
-       title=concept-appcache-fallback>fallback entry</a>.</p>
+       namespace</a>, mapped to the <a href="#absolute">absolute URL</a>
+       corresponding to <var title="">part two</var> as the <a
+       href="#fallback0" title=concept-appcache-fallback>fallback entry</a>.</p>
 
      <dt>If <var title="">mode</var> is "online whitelist"
 
-     <dd> <!-- XXXURL change to URL -->
-      <p>If <var title="">line</var> is not a syntactically correct URI
-       reference or IRI reference, then jump back to the step labeled "start
-       of line".</p>
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, resolve the URI reference or IRI reference to an absolute
-       URI or IRI, and drop the fragment identifier, if any.</p>
-      <!-- XXXURL change to URL -->
-      <p>Now, if the resource's URI has a different <scheme> component
-       than the manifest's URI, then jump back to the step labeled "start of
-       line".</p>
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, add this URI to the <var title="">online whitelist
-       URIs</var>.</p>
+     <dd>
+      <p><a href="#resolve" title="resolve a url">Resolve</a> <var
+       title="">line</var>.</p>
+
+      <p>If this fails, then jump back to the step labeled "start of line".</p>
+
+      <p>If the resulting <a href="#absolute">absolute URL</a> has a
+       different <a href="#ltschemegt" title=url-scheme><scheme></a>
+       component than the manifest's URL (compared
+       case-insensitively<!-- XXX ASCII
+      -->), then jump back to the
+       step labeled "start of line".</p>
+
+      <p>Drop the <a href="#ltfragmentgt"
+       title=url-fragment><fragment></a> component of the resulting <a
+       href="#absolute">absolute URL</a>, if it has one.</p>
+
+      <p>Add the resulting <a href="#absolute">absolute URL</a> to the <var
+       title="">online whitelist URLs</var>.</p>
     </dl>
 
    <li>
     <p>Jump back to the step labeled "start of line". (That step jumps to the
      next, and last, step when the end of the file is reached.)
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Return the <var title="">explicit URIs</var> list, the <var
-     title="">fallback URIs</var> mapping, and the <var title="">online
-     whitelist URIs</var>.
+    <p>Return the <var title="">explicit URLs</var> list, the <var
+     title="">fallback URLs</var> mapping, and the <var title="">online
+     whitelist URLs</var>.
   </ol>
-  <!-- XXXURL change to URL -->
 
-  <p>Relative URI references and IRI references resolved to absolute URIs or
-   IRIs in the above algorithm must be resolved according to section 5.1 of
-   RFC3986 (i.e. relative to the base URI from the encapsulating entity or
-   the URI used to retrieve the entity, since there is no way to embed a base
-   URI in the manifest itself). <a href="#refsRFC3986">[RFC3986]</a>
-
   <p class=note>If a resource is listed in both the online whitelist and in
    the explicit section, then that resource will be downloaded and cached,
    but when the page tries to use this resource, the user agent will ignore
@@ -32748,26 +32736,21 @@
    ui the first time they cache themselves (right now the original cache is
    done without notifications to the browsing contexts)
 
-  <ol><!-- XXXURL change to URL -->
-
+  <ol>
    <li>
-    <p>Let <var title="">manifest URI</var> be the URI of the <a
+    <p>Let <var title="">manifest URL</var> be the URL of the <a
      href="#the-manifest" title=concept-appcache-manifest>manifest</a> of the
      cache to be updated.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
     <p>Let <var title="">cache group</var> be the group of <a
      href="#application0" title="application cache">application caches</a>
-     identified by <var title="">manifest URI</var>.
-   </li>
-   <!-- XXXURL change to URL -->
+     identified by <var title="">manifest URL</var>.
 
    <li>
     <p>Let <var title="">cache</var> be the most recently updated <a
      href="#application0">application cache</a> identified by <var
-     title="">manifest URI</var> (that is, the newest version found in <var
+     title="">manifest URL</var> (that is, the newest version found in <var
      title="">cache group</var>).
 
    <li>
@@ -32779,9 +32762,9 @@
      <i>checking</i>. This entire step must be performed as one atomic
      operation so as to avoid race conditions.
 
-   <li> <!-- XXXURL change to URL -->
-    <p>If there is already a resource with the URI of <var title="">manifest
-     URI</var> in <var title="">cache</var>, and that resource is categorized
+   <li>
+    <p>If there is already a resource with the URL of <var title="">manifest
+     URL</var> in <var title="">cache</var>, and that resource is categorized
      as a <a href="#the-manifest"
      title=concept-appcache-manifest>manifest</a>, then this is an <dfn
      id=upgrade title=concept-appcache-upgrade>upgrade attempt</dfn>.
@@ -32806,8 +32789,8 @@
      indicating to the user that the user agent is checking for the
      availability of updates.</p>
 
-   <li> <!-- XXXURL change to URL -->
-    <p>Fetch the resource from <var title="">manifest URI</var>, and let <var
+   <li>
+    <p>Fetch the resource from <var title="">manifest URL</var>, and let <var
      title="">manifest</var> be that resource.</p>
 
     <p>If the resource is labeled with the MIME type <code
@@ -32877,45 +32860,35 @@
      with a cache in <var title="">cache group</var>. The default action of
      this event should be the display of some sort of user interface
      indicating to the user that a new version is being downloaded.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
     <p>If this is an <a href="#upgrade"
      title=concept-appcache-upgrade>upgrade attempt</a>, then let <var
      title="">new cache</var> be a newly created <a
      href="#application0">application cache</a> identified by <span
-     title="">manifest URI</span>, being a new version in <var title="">cache
+     title="">manifest URL</span>, being a new version in <var title="">cache
      group</var>. Otherwise, let <var title="">new cache</var> and <var
      title="">cache</var> be the same version of the application cache.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Let <var title="">file list</var> be an empty list of URIs with flags.
-   </li>
-   <!-- XXXURL change to URL -->
+    <p>Let <var title="">file list</var> be an empty list of URLs with flags.
 
    <li>
-    <p>Add all the URIs in the list of <a href="#explicit"
+    <p>Add all the URLs in the list of <a href="#explicit"
      title=concept-appcache-explicit>explicit entries</a> obtained by parsing
      <var title="">manifest</var> to <var title="">file list</var>, each
      flagged with "explicit entry".
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Add all the URIs in the list of <a href="#fallback0"
+    <p>Add all the URLs in the list of <a href="#fallback0"
      title=concept-appcache-fallback>fallback entries</a> obtained by parsing
      <var title="">manifest</var> to <var title="">file list</var>, each
      flagged with "fallback entry".
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
     <p>If this is an <a href="#upgrade"
      title=concept-appcache-upgrade>upgrade attempt</a>, then add all the
-     URIs of <a href="#opportunistically"
+     URLs of <a href="#opportunistically"
      title=concept-appcache-oppcache>opportunistically cached entries</a> in
      <var title="">cache</var> that <a href="#matches"
      title=concept-appcache-matches-oppcache>match</a> the <a
@@ -32923,35 +32896,29 @@
      caching namespaces</a> obtained by parsing <var title="">manifest</var>
      to <var title="">file list</var>, each flagged with "opportunistic
      entry".
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
     <p>If this is an <a href="#upgrade"
      title=concept-appcache-upgrade>upgrade attempt</a>, then add all the
-     URIs of <a href="#implicit" title=concept-appcache-implicit>implicit
+     URLs of <a href="#implicit" title=concept-appcache-implicit>implicit
      entries</a> in <var title="">cache</var> to <var title="">file
      list</var>, each flagged with "implicit entry".
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
     <p>If this is an <a href="#upgrade"
      title=concept-appcache-upgrade>upgrade attempt</a>, then add all the
-     URIs of <a href="#dynamic3" title=concept-appcache-dynamic>dynamic
+     URLs of <a href="#dynamic3" title=concept-appcache-dynamic>dynamic
      entries</a> in <var title="">cache</var> to <var title="">file
      list</var>, each flagged with "dynamic entry".
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>If any URI is in <var title="">file list</var> more than once, then
-     merge the entries into one entry for that URI, that entry having all the
+    <p>If any URL is in <var title="">file list</var> more than once, then
+     merge the entries into one entry for that URL, that entry having all the
      flags that the original entries had.
 
-   <li> <!-- XXXURL change to URL -->
-    <p>For each URI in <var title="">file list</var>, run the following
-     steps. These steps may be run in parallel for two or more of the URIs at
+   <li>
+    <p>For each URL in <var title="">file list</var>, run the following
+     steps. These steps may be run in parallel for two or more of the URLs at
      a time.</p>
 
     <ol>
@@ -32995,40 +32962,30 @@
      <li>
       <p>Otherwise, the fetching succeeded. Store the resource in the <var
        title="">new cache</var>.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
-      <p>If the URI being processed was flagged as an "explicit entry" in
+      <p>If the URL being processed was flagged as an "explicit entry" in
        <var title="">file list</var>, then categorize the entry as an <a
        href="#explicit" title=concept-appcache-explicit>explicit entry</a>.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
-      <p>If the URI being processed was flagged as a "fallback entry" in <var
+      <p>If the URL being processed was flagged as a "fallback entry" in <var
        title="">file list</var>, then categorize the entry as a <a
        href="#fallback0" title=concept-appcache-fallback>fallback entry</a>.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
-      <p>If the URI being processed was flagged as a "opportunistic entry" in
+      <p>If the URL being processed was flagged as a "opportunistic entry" in
        <var title="">file list</var>, then categorize the entry as an <a
        href="#opportunistically"
        title=concept-appcache-oppcache>opportunistically cached entry</a>.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
-      <p>If the URI being processed was flagged as an "implicit entry" in
+      <p>If the URL being processed was flagged as an "implicit entry" in
        <var title="">file list</var>, then categorize the entry as a <a
        href="#implicit" title=concept-appcache-implicit>implicit entry</a>.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
-      <p>If the URI being processed was flagged as an "dynamic entry" in <var
+      <p>If the URL being processed was flagged as an "dynamic entry" in <var
        title="">file list</var>, then categorize the entry as a <a
        href="#dynamic3" title=concept-appcache-dynamic>dynamic entry</a>.
     </ol>
@@ -33038,20 +32995,16 @@
      if it's not there already, and categorize this entry (whether newly
      added or not) as <a href="#the-manifest"
      title=concept-appcache-manifest>the manifest</a>.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
     <p>Store the list of <a href="#opportunistic"
      title=concept-appcache-oppcache-ns>opportunistic caching namespaces</a>,
-     and the URIs of the <a href="#fallback0"
+     and the URLs of the <a href="#fallback0"
      title=concept-appcache-fallback>fallback entries</a> that they map to,
      in the new cache.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>Store the URIs that form the new <a href="#online"
+    <p>Store the URLs that form the new <a href="#online"
      title=concept-appcache-onlinewhitelist>online whitelist</a> in the new
      cache.
 
@@ -33073,10 +33026,10 @@
    <li>
     <p>If this is a <a href="#cache" title=concept-appcache-cache>cache
      attempt</a>, then:</p>
-    <!-- XXXURL change to URL -->
+
     <p id=flagAsCandidateForCache-result>Associate any <code>Document</code>
      objects that were <a href="#flagAsCandidateForCache">flagged as
-     candidates</a> for this manifest URI's caches with <var
+     candidates</a> for this manifest URL's caches with <var
      title="">cache</var>.</p>
 
     <p><a href="#firing2">Fire a simple event</a> called <code
@@ -33139,47 +33092,46 @@
   <p>The processing model of application caches for offline support in Web
    applications is part of the <a href="#navigate"
    title=navigate>navigation</a> model, but references the algorithms defined
-   in this section.</p>
-  <!-- XXXURL change to URL -->
+   in this section.
 
-  <p>A URI <dfn id=matches title=concept-appcache-matches-oppcache>matches an
+  <p>A URL <dfn id=matches title=concept-appcache-matches-oppcache>matches an
    opportunistic caching namespace</dfn> if there exists an <a
    href="#application0">application cache</a> whose <a href="#the-manifest"
-   title=concept-appcache-manifest>manifest</a>'s URI has the <a
-   href="#same-origin">same origin</a> as the URI in question, and if that
+   title=concept-appcache-manifest>manifest</a>'s URL has the <a
+   href="#same-origin">same origin</a> as the URL in question, and if that
    application cache has an <a href="#opportunistic"
    title=concept-appcache-oppcache-ns>opportunistic caching namespace</a>
-   with a <path> component that exactly matches the start of the
-   <path> component of the URI being examined. If multiple
-   opportunistic caching namespaces match the same URI, the one with the
-   longest <path> component is the one that matches. A URI looking for
-   an opportunistic caching namespace can match more than one application
+   with a <a href="#ltpathgt" title=url-path><path></a> component that
+   exactly matches the start of the <a href="#ltpathgt"
+   title=url-path><path></a> component of the URL being examined. If
+   multiple opportunistic caching namespaces match the same URL, the one with
+   the longest <path> component is the one that matches. A URL looking
+   for an opportunistic caching namespace can match more than one application
    cache at a time, but only matches one namespace in each cache.
 
-  <div class=example> <!-- XXXURL change to URL -->
+  <div class=example>
    <p>If a manifest <code title="">http://example.com/app1/manifest</code>
     declares that <code title="">http://example.com/resources/images</code>
     should be opportunistically cached, and the user navigates to <code
     title="">http://example.com/resources/images/cat.png</code>, then the
     user agent will decide that the application cache identified by <code
     title="">http://example.com/app1/manifest</code> contains a namespace
-    with a match for that URI.</p>
+    with a match for that URL.</p>
   </div>
-  <!-- XXXURL change to URL -->
 
   <p>When the <dfn id=application2
    title=concept-appcache-init-with-attribute>application cache selection
-   algorithm</dfn> algorithm is invoked with a manifest URI, the user agent
+   algorithm</dfn> algorithm is invoked with a manifest URL, the user agent
    must run the first applicable set of steps from the following list:
 
   <dl class=switch>
    <dt>If the resource is not being loaded as part of navigation of a <a
     href="#top-level">top-level browsing context</a>
 
-   <dd> <!-- XXXURL change to URL -->
+   <dd>
     <p>As an optimization, if the resource was loaded from an <a
-     href="#application0">application cache</a>, and the manifest URI of that
-     cache doesn't match the manifest URI with which the algorithm was
+     href="#application0">application cache</a>, and the manifest URL of that
+     cache doesn't match the manifest URL with which the algorithm was
      invoked, then the user agent should mark the entry in that application
      cache corresponding to the resource that was just loaded as being <a
      href="#foreign" title=concept-appcache-foreign>foreign</a>.</p>
@@ -33188,22 +33140,19 @@
      caches.</p>
    </dd>
    <!-- otherwise, we're talking top-level browsing contexts only: -->
-   <!-- XXXURL change to URL -->
 
    <dt>If the resource being loaded was loaded from an application cache and
-    the URI of that application cache's manifest is the same as the manifest
-    URI with which the algorithm was invoked
+    the URL of that application cache's manifest is the same as the manifest
+    URL with which the algorithm was invoked
 
    <dd>
     <p>Associate the <code>Document</code> with the cache from which it was
      loaded. Invoke the <a href="#application1">application cache update
      process</a>.</p>
-   </dd>
-   <!-- XXXURL change to URL -->
 
    <dt>If the resource being loaded was loaded from an application cache and
-    the URI of that application cache's manifest is <em>not</em> the same as
-    the manifest URI with which the algorithm was invoked
+    the URL of that application cache's manifest is <em>not</em> the same as
+    the manifest URL with which the algorithm was invoked
 
    <dd>
     <p>Mark the entry for this resource in the application cache from which
@@ -33228,45 +33177,38 @@
     but it was loaded using HTTP GET or equivalent
 
    <dd>
-    <ol><!-- XXXURL change to URL -->
-
+    <ol>
      <li>
-      <p>If the manifest URI does not have the <a href="#same-origin">same
-       origin</a> as the resource's own URI, then invoke the <a
+      <p>If the manifest URL does not have the <a href="#same-origin">same
+       origin</a> as the resource's own URL, then invoke the <a
        href="#application3"
        title=concept-appcache-init-no-attribute>application cache selection
        algorithm</a> again, but without a manifest, and abort these steps.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
       <p>If there is already an <a href="#application0">application cache</a>
-       identified by this manifest URI, and the most up to date version of
+       identified by this manifest URL, and the most up to date version of
        that <a href="#application0">application cache</a> contains a resource
-       with the URI of the manifest, and that resource is categorized as a <a
+       with the URL of the manifest, and that resource is categorized as a <a
        href="#the-manifest" title=concept-appcache-manifest>manifest</a>,
        then: store the resource in the matching cache, categorized as an <a
        href="#implicit" title=concept-appcache-implicit>implicit entry</a>,
        associate the <code>Document</code> with that cache, invoke the <a
        href="#application1">application cache update process</a>, and abort
        these steps.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li id=flagAsCandidateForCache>
       <p>Flag the resource's <code>Document</code> as a candidate for this
-       manifest URI's caches, so that it will be <a
+       manifest URL's caches, so that it will be <a
        href="#flagAsCandidateForCache-result">associated with an application
-       cache identified by this manifest URI</a> later, when such an <a
+       cache identified by this manifest URL</a> later, when such an <a
        href="#application0">application cache</a> is ready.
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
       <p>If there is already an <a href="#application0">application cache</a>
-       identified by this manifest URI, then the most up to date version of
+       identified by this manifest URL, then the most up to date version of
        that <a href="#application0">application cache</a> does not yet
-       contain a resource with the URI of the manifest, or it does but that
+       contain a resource with the URL of the manifest, or it does but that
        resource is not yet categorized as a <a href="#the-manifest"
        title=concept-appcache-manifest>manifest</a>: store the resource in
        that cache, categorized as an <a href="#implicit"
@@ -33275,13 +33217,11 @@
        removing any other categories it might have), and abort these steps.
        (An <a href="#application1">application cache update process</a> is
        already in progress.)
-     </li>
-     <!-- XXXURL change to URL -->
 
      <li>
       <p>Otherwise, there is no matching <a href="#application0">application
        cache</a>: create a new application cache identified by this manifest
-       URI, store the resource in that cache, categorized as an <a
+       URL, store the resource in that cache, categorized as an <a
        href="#implicit" title=concept-appcache-implicit>implicit entry</a>,
        and then invoke the <a href="#application1">application cache update
        process</a>.
@@ -33318,19 +33258,15 @@
    <li>
     <p>If the resource is not to be fetched using the HTTP GET mechanism or
      equivalent, then fetch the resource normally and abort these steps.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>If the resource's URI, ignoring its fragment identifier if any, is
+    <p>If the resource's URL, ignoring its fragment identifier if any, is
      listed in the <a href="#application0">application cache</a>'s <a
      href="#online" title=concept-appcache-onlinewhitelist>online
      whitelist</a>, then fetch the resource normally and abort these steps.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>If the resource's URI is <a href="#implicit"
+    <p>If the resource's URL is <a href="#implicit"
      title=concept-appcache-implicit>an implicit entry</a>, <a
      href="#the-manifest" title=concept-appcache-manifest>the manifest</a>,
      <a href="#explicit" title=concept-appcache-explicit>an explicit
@@ -33341,11 +33277,11 @@
      entry</a> in the <a href="#application0">application cache</a>, then
      fetch the resource from the cache and abort these steps.
 
-   <li> <!-- XXXURL change to URL -->
-    <p>If the resource's URI has the <a href="#same-origin">same origin</a>
-     as the manifest's URI, and the start of the resource's URI's
-     <path> component is exactly matched by the <path> component
-     of an <a href="#opportunistic"
+   <li>
+    <p>If the resource's URL has the <a href="#same-origin">same origin</a>
+     as the manifest's URL, and the start of the resource's URL's <a
+     href="#ltpathgt" title=url-path><path></a> component is exactly
+     matched by the <path> component of an <a href="#opportunistic"
      title=concept-appcache-oppcache-ns>opportunistic caching namespace</a>
      in the <a href="#application0">application cache</a>, then:
 
@@ -33498,11 +33434,10 @@
    title=dom-appcache-add><a href="#addurl">add()</a></code> method, with the
    oldest entry being the zeroth entry, and the most recently added entry
    having the index <span><code title=dom-appcache-length><a
-   href="#length8">length</a></code>-1</span>.</p>
-  <!-- XXXURL change to URL -->
+   href="#length8">length</a></code>-1</span>.
 
   <p>The <dfn id=itemindex4 title=dom-appcache-item><code>item(<var
-   title="">index</var>)</code></dfn> method must return the absolute URI of
+   title="">index</var>)</code></dfn> method must return the absolute URL of
    the <a href="#dynamic3" title=concept-appcache-dynamic>dynamic entry</a>
    with index <var title="">index</var> from the <a
    href="#application0">application cache</a>, if one is associated with the
@@ -33521,23 +33456,13 @@
     <p>If the <code><a href="#applicationcache">ApplicationCache</a></code>
      object is not associated with any application cache, then raise an
      <code>INVALID_STATE_ERR</code> exception and abort these steps.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>If <var title="">url</var> is not a valid URI reference, then raise a
-     <code>SYNTAX_ERR</code> exception and abort these steps. <a
-     href="#refsRFC3986">[RFC3986]</a> <a href="#refsRFC3987">[RFC3987]</a>
-   </li>
-   <!-- XXXURL change to URL -->
+    <p><a href="#resolve" title="resolve a URL">Resolve</a> the <var
+     title="">url</var> argument. If this fails, raise a
+     <code>SYNTAX_ERR</code> exception and abort these steps.
 
    <li>
-    <p class=big-issue>resolve relative URIs; on failure, raise a
-     <code>SYNTAX_ERR</code> exception
-   </li>
-   <!-- XXXURL change to URL -->
-
-   <li>
     <p>If there is already a resource in in the <a
      href="#application0">application cache</a> with which the <code><a
      href="#applicationcache">ApplicationCache</a></code> object is
@@ -33545,18 +33470,14 @@
      that entry is categorized as a <a href="#dynamic3"
      title=concept-appcache-dynamic>dynamic entry</a> and return and abort
      these steps.
-   </li>
-   <!-- XXXURL change to URL -->
 
    <li>
-    <p>If <var title="">url</var> has a different <scheme> component than
-     the manifest's URI, then raise a <a href="#security9">security
-     exception</a>.
+    <p>If <var title="">url</var> has a different <a href="#ltschemegt"
+     title=url-scheme><scheme></a> component than the manifest's URL,
+     then raise a <a href="#security9">security exception</a>.
 
    <li>
     <p>Return, but do not abort these steps.
-   </li>
-   <!-- XXXURL change to URL, maybe xref "fetch"? -->
 
    <li>
     <p>Fetch the resource referenced by <var title="">url</var>.
@@ -33586,17 +33507,17 @@
    target of Progress Events, much like the <a
    href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/XMLHttpRequest-2/Overview.html?content-type=text/html;%20charset=utf-8#xmlhttprequesteventtarget-interface">XMLHttpRequestEventTarget</a>
    interface. This would also make this far more complex to spec and
-   implement.</p>
-  <!-- XXXURL algorithms -->
+   implement.
 
   <p>The <dfn id=remove2 title=dom-appcache-remove><code>remove(<var
-   title="">url</var>)</code></dfn> method must remove the <a
-   href="#dynamic3" title=concept-appcache-dynamic>dynamic entry</a>
-   categorization of any entry with the address <var title="">url</var> in
-   the <a href="#application0">application cache</a> with which the <code><a
-   href="#applicationcache">ApplicationCache</a></code> object is associated.
-   <span class=big-issue>Resolve relative URIs... (ignore syntax
-   errors)</span> If this removes the last categorization of an entry in that
+   title="">url</var>)</code></dfn> method must <a href="#resolve"
+   title="resolve a url">resolve</a> the <var title="">url</var> argument
+   and, if that is successful, remove the <a href="#dynamic3"
+   title=concept-appcache-dynamic>dynamic entry</a> categorization of any
+   entry whose address is the resulting <a href="#absolute">absolute URL</a>
+   in the <a href="#application0">application cache</a> with which the
+   <code><a href="#applicationcache">ApplicationCache</a></code> object is
+   associated. If this removes the last categorization of an entry in that
    cache, then the entry must be removed entirely (such that if it is
    re-added, it will be loaded from the network again). If the <code><a
    href="#applicationcache">ApplicationCache</a></code> object is not
@@ -33776,22 +33697,20 @@
    return the object implementing the <code><a
    href="#history2">History</a></code> interface for that <code><a
    href="#window">Window</a></code> object's <a href="#active">active
-   document</a>.</p>
-  <!-- XXXURL change to URL -->
+   document</a>.
 
   <p><code><a href="#history2">History</a></code> objects represent their <a
    href="#browsing1">browsing context</a>'s session history as a flat list of
    <a href="#session0" title="session history entry">session history
    entries</a>. Each <dfn id=session0>session history entry</dfn> consists of
-   either a URI or a <a href="#state">state object</a>, or both, and may in
-   addition have a title, a <code>Document</code> object, form data, a scroll
-   position, and other information associated with it.
+   either a <a href="#url">URL</a> or a <a href="#state">state object</a>, or
+   both, and may in addition have a title, a <code>Document</code> object,
+   form data, a scroll position, and other information associated with it.
 
   <p class=note>This does not imply that the user interface need be linear.
-   See the <a href="#history-notes">notes below</a>.</p>
-  <!-- XXXURL change to URL -->
+   See the <a href="#history-notes">notes below</a>.
 
-  <p>URIs without associated <a href="#state" title="state object">state
+  <p>URLs without associated <a href="#state" title="state object">state
    objects</a> are added to the session history as the user (or script)
    navigates from page to page.
 
@@ -33848,20 +33767,18 @@
    algorithms given below, act as if they had not. When the user or script
    navigates back or forwards to a page which has no in-memory DOM objects,
    any other entries that shared the same <code>Document</code> object with
-   it must share the new object as well.</p>
-  <!-- XXXURL change to URL -->
+   it must share the new object as well.
 
-  <p>When state object entries are added, a URI can be provided. This URI is
+  <p>When state object entries are added, a URL can be provided. This URL is
    used to replace the state object entry if the <code>Document</code> is
-   evicted.</p>
-  <!-- XXXURL change to URL -->
+   evicted.
 
   <p>When a user agent discards the DOM from an entry in the session history,
    it must also discard all the entries that share that <code>Document</code>
-   but do not have an associated URI (i.e. entries that only have a <a
+   but do not have an associated URL (i.e. entries that only have a <a
    href="#state">state object</a>). Entries that shared that
    <code>Document</code> object but had a state object and have a different
-   URI must then have their <em>state objects</em> removed. Removed entries
+   URL must then have their <em>state objects</em> removed. Removed entries
    are not recreated if the user or script navigates back to the page. If
    there are no state object entries for that <code>Document</code> object
    then no entries are removed.
@@ -33952,48 +33869,67 @@
   <p>The <dfn id=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>
-  <!-- XXXURL algorithms XXXDOCURL -->
+   history.
 
-  <p>When this method is invoked, the user agent must first check the third
-   argument. If a third argument is specified, then the user agent must
-   verify that the third argument is a valid URI or IRI (as defined by RFC
-   3986 and 3987), and if so, that, after resolving it to an absolute URI, it
-   is either identical to <span>the document's address</span>, or that it
-   differs from that address only in the <query>, <abs_path>,
-   and/or <fragment> parts, as applicable (the <query> and
-   <abs_path> parts can only be the same if the document's URI uses a
-   hierarchical <scheme>). If the verification fails (either because
-   the argument is syntactically incorrect, or differs in a way not described
-   as acceptable in the previous sentence) then the user agent must raise a
-   <a href="#security9">security exception</a>. <a
-   href="#refsRFC3986">[RFC3986]</a> <a href="#refsRFC3987">[RFC3987]</a>
+  <p>When this method is invoked, the user agent must run the following
+   steps:
 
-  <p>If the third argument passes its verification step, or if the third
-   argument was omitted, then the user agent must remove from the <a
-   href="#session">session history</a> any entries for that
-   <code>Document</code> from the entry after the <a href="#current1">current
-   entry</a> up to the last entry in the session history that references the
-   same <code>Document</code> object, if any. If the <a
-   href="#current1">current entry</a> is the last entry in the session
-   history, or if there are no entries after the <a href="#current1">current
-   entry</a> that reference the same <code>Document</code> object, then no
-   entries are removed.</p>
-  <!-- XXXURL change to URL -->
+  <ol>
+   <li>
+    <p>If a third argument is specified, run these substeps:</p>
 
-  <p>Then, the user agent must add a state object entry to the session
-   history, after the <a href="#current1">current entry</a>, with the
-   specified <var title="">data</var> as the state object, the given <var
-   title="">title</var> as the title, and, if the third argument is present,
-   the given <var title="">url</var> as the URI of the entry.
+    <ol>
+     <li><a href="#resolve" title="resolve a url">Resolve</a> the value of
+      the third argument.
 
-  <p>Then, the user agent must set this new entry as being the <a
-   href="#last-activated">last activated entry</a> for the
-   <code>Document</code>.
+     <li>If that fails, raise a <a href="#security9">security exception</a>
+      and abort the <code title=dom-history-pushState><a
+      href="#pushstate">pushState()</a></code> steps.
 
-  <p>Finally, the user agent must update the <a href="#current1">current
-   entry</a> to be the this newly added entry.
+     <li>Compare the resulting <a href="#absolute">absolute URL</a> to
+      <span>the document's address</span><!-- XXXDOCURL -->. If any part of
+      these two <a href="#url" title=URL>URLs</a> differ other than the <a
+      href="#ltpathgt" title=url-path><path></a>, <a href="#ltquerygt"
+      title=url-query><query></a>, and <a href="#ltfragmentgt"
+      title=url-fragment><fragment></a> components, then raise a <a
+      href="#security9">security exception</a> and abort the <code
+      title=dom-history-pushState><a href="#pushstate">pushState()</a></code>
+      steps.
+    </ol>
 
+    <p>For the purposes of the comparison in the above substeps, the <a
+     href="#ltpathgt" title=url-path><path></a> and <a
+     href="#ltquerygt" title=url-query><query></a> components can only
+     be the same if the URLs use a hierarchical <a href="#ltschemegt"
+     title=url-scheme><scheme></a>.</p>
+
+   <li>
+    <p>Remove from the <a href="#session">session history</a> any entries for
+     the <code>Document</code> from the entry after the <a
+     href="#current1">current entry</a> up to the last entry in the session
+     history that references the same <code>Document</code> object, if any.
+     If the <a href="#current1">current entry</a> is the last entry in the
+     session history, or if there are no entries after the <a
+     href="#current1">current entry</a> that reference the same
+     <code>Document</code> object, then no entries are removed.
+
+   <li>
+    <p>Add a state object entry to the session history, after the <a
+     href="#current1">current entry</a>, with the specified <var
+     title="">data</var> as the state object, the given <var
+     title="">title</var> as the title, and, if the third argument is
+     present, the <a href="#absolute">absolute URL</a> that was found in the
+     first step as the URL of the entry.
+
+   <li>
+    <p>Set this new entry as being the <a href="#last-activated">last
+     activated entry</a> for the <code>Document</code>.
+
+   <li>
+    <p>Update the <a href="#current1">current entry</a> to be the this newly
+     added entry.
+  </ol>
+
   <p class=note>The <var title="">title</var> is purely advisory. User agents
    might use the title in the user interface.
 
@@ -34048,6 +33984,7 @@
      bubbles but is not cancelable and has no default action.
   </ol>
   <!-- XXX onpopstate should be defined somewhere -->
+  <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXURL \(url\|uri\|iri\) -->
   <!-- XXXURL check with DOM3 Events -->
 
   <pre

Modified: source
===================================================================
--- source	2008-06-27 00:21:35 UTC (rev 1811)
+++ source	2008-06-27 01:56:06 UTC (rev 1812)
@@ -1118,6 +1118,13 @@
 
    </dd>
 
+   <dt>If the URL to be resolved was found in an offline application
+   cache manifest</dt>
+
+   <dd><p>The base URL is the URL of the <span>application
+   cache</span> <span
+   title="concept-appcache-manifest">manifest</span>.</p></dd>
+
   </dl>
 
   <p>The <dfn>document base URL</dfn> of a <code>Document</code> is
@@ -29871,7 +29878,6 @@
   method would work equivalently, but for unknown MIME types instead
   of unknown protocols.</p>
 
-  <!-- XXXURL XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \(URI\|IRI\|URL\) -->
 
 
 
@@ -29886,20 +29892,17 @@
 
   <h4 id="appcache">Application caches</h4>
 
-  <!-- XXXURL change to URL -->
   <p>An <dfn>application cache</dfn> is a collection of resources. An
-  application cache is identified by the URI of a resource
-  manifest which is used to populate the cache.</p>
+  application cache is identified by the <span>absolute URL</span> of
+  a resource manifest which is used to populate the cache.</p>
 
-  <!-- XXXURL change to URL -->
   <p>Application caches are versioned, and there can be different
-  instances of caches for the same manifest URI, each having a
+  instances of caches for the same manifest URL, each having a
   different version. A cache is newer than another if it was created
   after the other (in other words, caches in a group have a
   chronological order).</p>
 
-  <!-- XXXURL change to URL -->
-  <p>Each group of application caches for the same manifest URI have a
+  <p>Each group of application caches for the same manifest URL have a
   common <dfn title="concept-appcache-status">update status</dfn>,
   which is one of the following: <i>idle</i>, <i>checking</i>,
   <i>downloading</i>.</p>
@@ -29926,9 +29929,8 @@
 
    <li>
 
-    <!-- XXXURL change to URL -->
     <p>One of more resources (including their out-of-band metadata,
-    such as HTTP headers, if any), identified by URIs, each falling
+    such as HTTP headers, if any), identified by URLs, each falling
     into one (or more) of the following categories:</p>
 
     <dl>
@@ -29944,8 +29946,7 @@
  
      <dt><dfn title="concept-appcache-manifest">The manifest</dfn>
 
-    <!-- XXXURL change to URL -->
-     <dd>The resource corresponding to the URI that was given in an
+     <dd>The resource corresponding to the URL that was given in an
      implicit entry's <code>html</code> element's <code
      title="attr-html-manifest">manifest</code> attribute. The
      manifest is downloaded and processed during the <span>application
@@ -29974,8 +29975,7 @@
  
      <dt><dfn title="concept-appcache-oppcache">Opportunistically cached entries</dfn>
 
-     <!-- XXXURL change to URL -->
-     <dd>Resources whose URIs <span
+     <dd>Resources whose URLs <span
      title="concept-appcache-matches-oppcache">matched</span> an <span
      title="concept-appcache-oppcache-ns">opportunistic caching
      namespace</span> when they were fetched, and were therefore
@@ -29989,27 +29989,24 @@
 
     </dl>
 
-    <!-- XXXURL change to URL -->
-    <p class="note">A URI in the list can be flagged with multiple
+    <p class="note">A URL in the list can be flagged with multiple
     different types, and thus an entry can end up being categorized as
     multiple entries. For example, an entry can be an explicit entry
     and a dynamic entry at the same time.</p>
 
    </li>
 
-   <!-- XXXURL change to URL -->
    <li>Zero or more <dfn
    title="concept-appcache-oppcache-ns">opportunistic caching
-   namespaces</dfn>: URIs, used as <span
+   namespaces</dfn>: URLs, used as <span
    title="concept-appcache-matches-oppcache">prefix match
    patterns</span>, each of which is mapped to a <span
    title="concept-appcache-fallback">fallback entry</span>. Each
-   namespace URI prefix, when parsed as a URI, has the <span>same
+   namespace URL prefix, when parsed as a URL, has the <span>same
    origin</span> as <span title="concept-appcache-manifest">the
    manifest</span>.</li>
 
-   <!-- XXXURL change to URL -->
-   <li>Zero or more URIs that form the <dfn
+   <li>Zero or more URLs that form the <dfn
    title="concept-appcache-onlinewhitelist">online whitelist</dfn>.
 
   </ul>
@@ -30078,9 +30075,8 @@
     characters other than U+000A LINE FEED (LF) and U+000D CARRIAGE
     RETURN (CR) characters.</p>
 
-    <!-- XXXURL change to URL -->
     <p class="note">Comments must be on a line on their own. If they
-    were to be included on a line with a URI, the "#" would be
+    were to be included on a line with a URL, the "#" would be
     mistaken for part of a fragment identifier.</p>
 
    <dt>A section header
@@ -30117,42 +30113,35 @@
 
     <p>When the current section is the explicit section or the online
     whitelist section, data lines must consist of zero or more U+0020
-    SPACE and U+0009 CHARACTER TABULATION (tab) characters, a valid
-    URI reference or IRI reference to a resource other than the
+    SPACE and U+0009 CHARACTER TABULATION (tab) characters, a
+    <span>valid URL</span> identifying a resource other than the
     manifest itself, and then zero or more U+0020 SPACE and U+0009
-    CHARACTER TABULATION (tab) characters. <a
-    href="#refsRFC3986">[RFC3986]</a> <a
-    href="#refsRFC3987">[RFC3987]</a></p>
+    CHARACTER TABULATION (tab) characters.</p>
 
     <p>When the current section is the fallback section, data lines
     must consist of zero or more U+0020 SPACE and U+0009 CHARACTER
-    TABULATION (tab) characters, a valid URI reference or IRI
-    reference to a resource other than the manifest itself, one or
-    more U+0020 SPACE and U+0009 CHARACTER TABULATION (tab)
-    characters, another valid URI reference or IRI reference to a
-    resource other than the manifest itself, and then zero or more
-    U+0020 SPACE and U+0009 CHARACTER TABULATION (tab) characters. <a
-    href="#refsRFC3986">[RFC3986]</a> <a
-    href="#refsRFC3987">[RFC3987]</a></p>
+    TABULATION (tab) characters, a <span>valid URL</span> identifying
+    a resource other than the manifest itself, one or more U+0020
+    SPACE and U+0009 CHARACTER TABULATION (tab) characters, another
+    <span>valid URL</span> identifying a resource other than the
+    manifest itself, and then zero or more U+0020 SPACE and U+0009
+    CHARACTER TABULATION (tab) characters.</p>
 
-    <!-- XXXURL change to URL -->
-    <p class="note">The URI or IRI references in data lines can't be
-    empty strings, since those would be relative URIs to the manifest
-    itself. Such lines would be confused with blank or invalid lines,
-    anyway.</p>
+    <p class="note">The URLs in data lines can't be empty strings,
+    since those would be relative URLs to the manifest itself. Such
+    lines would be confused with blank or invalid lines, anyway.</p>
 
   </dl>
 
   <p>Manifests may contain sections more than once. Sections may be
   empty.</p>
 
-  <!-- XXXURL change to URL -->
-  <p>URIs that are to be fallback pages associated with <span
+  <p>URLs that are to be fallback pages associated with <span
   title="concept-appcache-oppcache-ns">opportunistic caching
   namespaces</span>, and those namespaces themselves, must be given in
-  fallback sections, with the namespace being the first URI of the
+  fallback sections, with the namespace being the first URL of the
   data line, and the corresponding fallback page being the second
-  URI. All the other pages to be cached must be listed in explicit
+  URL. All the other pages to be cached must be listed in explicit
   sections.</p>
 
   <p><span title="concept-appcache-oppcache-ns">Opportunistic caching
@@ -30162,25 +30151,23 @@
   <p>An opportunistic caching namespace must not be listed more than
   once.</p>
 
-  <!-- XXXURL change to URL -->
-  <p>URIs that the user agent is to put into the <span
+  <p>URLs that the user agent is to put into the <span
   title="concept-appcache-onlinewhitelist">online whitelist</span>
   must all be specified in online whitelist sections. (This is needed
-  for any URI that the page is intending to use to communicate back to
+  for any URL that the page is intending to use to communicate back to
   the server.)</p>
 
-  <!-- XXXURL change to URL -->
-  <p>URIs in the online whitelist section must not also be listed in
+  <p>URLs in the online whitelist section must not also be listed in
   explicit section, and must not be listed as fallback entries in the
-  fallback section. (URIs in the online whitelist section may match
+  fallback section. (URLs in the online whitelist section may match
   opportunistic caching namespaces, however.)</p>
 
-  <!-- XXXURL change to URL -->
-  <p>Relative URIs must be given relative to the manifest's own
-  URI.</p>
+  <p>Relative URLs must be given relative to the manifest's own
+  URL.</p>
 
-  <!-- XXXURL change to URL; maybe have explicit support for this in the URL section? -->
-  <p>URIs in manifests must not have fragment identifiers.</p>
+  <p>URLs in manifests must not have fragment identifiers (i.e. the
+  U+0023 NUMBER SIGN character isn't allowed in URLs in
+  manifests).</p>
 
 
   <h5>Parsing cache manifests</h5>
@@ -30198,20 +30185,17 @@
    testable since neither U+0000 nor U+FFFD are valid anywhere in the
    syntax and thus both will be treated the same anyway)--></p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Let <var title="">explicit URIs</var> be an initially empty
+   <li><p>Let <var title="">explicit URLs</var> be an initially empty
    list of <span title="concept-appcache-explicit">explicit
    entries</span>.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Let <var title="">fallback URIs</var> be an initially empty
+   <li><p>Let <var title="">fallback URLs</var> be an initially empty
    mapping of <span title="concept-appcache-oppcache-ns">opportunistic
    caching namespaces</span> to <span
    title="concept-appcache-fallback">fallback entries</span>.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Let <var title="">online whitelist URIs</var> be an
-   initially empty list of URIs for a <span
+   <li><p>Let <var title="">online whitelist URLs</var> be an
+   initially empty list of URLs for a <span
    title="concept-appcache-onlinewhitelist">online
    whitelist</span>.</p></li>
 
@@ -30296,25 +30280,24 @@
 
      <dd>
 
-      <!-- XXXURL change to URL -->
-      <p>If <var title="">line</var> is not a syntactically correct
-      URI reference or IRI reference, then jump back to the step
-      labeled "start of line".</p>
+      <p><span title="resolve a url">Resolve</span> <var
+      title="">line</var>.</p>
 
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, resolve the URI reference or IRI reference to an
-      absolute URI or IRI, and drop the fragment identifier, if any.</p>
+      <p>If this fails, then jump back to the step labeled "start of
+      line".</p>
 
-      <!-- XXXURL change to URL -->
-      <p>Now, if the resource's URI has a different <scheme>
-      component than the manifest's URI (compared
-      case-insensitively<!-- XXX ASCII -->), then jump back to the
-      step labeled "start of line".</p>
+      <p>If the resulting <span>absolute URL</span> has a different
+      <span title="url-scheme"><scheme></span> component than
+      the manifest's URL (compared case-insensitively<!-- XXX ASCII
+      -->), then jump back to the step labeled "start of line".</p>
 
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, add this URI to the <var title="">explicit
-      URIs</var>.</p>
+      <p>Drop the <span title="url-fragment"><fragment></span>
+      component of the resulting <span>absolute URL</span>, if it has
+      one.</p>
 
+      <p>Add the resulting <span>absolute URL</span> to the <var
+      title="">explicit URLs</var>.</p>
+
      </dd>
 
      <dt>If <var title="">mode</var> is "fallback"</dt>
@@ -30332,48 +30315,40 @@
       TABULATION (tab) character in <var title="">line</var> be <var
       title="">part two</var>.</p>
 
-      <p>Strip any leading U+0020 SPACE or U+0009 CHARACTER TABULATION
-      (tab) characters in <var title="">part two</var>.</p>
+      <p><span title="resolve a url">Resolve</span> <var title="">part
+      one</var> and <var title="">part two</var>.</p>
 
-      <!-- XXXURL change to URL -->
-      <p>If <var title="">part one</var> and <var title="">part
-      two</var> are not both syntactically correct URI or IRI
-      references, then jump back to the step labeled "start of
+      <p>If either fails, then jump back to the step labeled "start of
       line".</p>
 
-      <!-- XXXURL use algorithms -->
-      <p>Resolve the URI or IRI references in <var title="">part
-      one</var> and <var title="">part two</var> to absolute URIs or
-      IRIs, and drop the fragment identifiers, if any.</p>
+      <p>If the <span>absolute URL</span> corresponding to <var
+      title="">part one</var> does not have the <span>same
+      origin</span> as the manifest's URL, then jump back to the step
+      labeled "start of line".</p> <!-- SECURITY -->
 
-      <!-- XXXURL change to URL -->
-      <p>If the absolute URI or IRI corresponding to <var
+      <p>If the resulting <span>absolute URL</span> for <var
+      title="">part two</span> has a different <span
+      title="url-scheme"><scheme></span> component than the
+      manifest's URL (compared case-insensitively<!-- XXX ASCII -->),
+      then jump back to the step labeled "start of line".</p>
+
+      <p>Drop any the <span
+      title="url-fragment"><fragment></span> components of the
+      resulting <span title="absolute URL">absolute URLs</span>.</p>
+
+      <p>If the <span>absolute URL</span> corresponding to <var
       title="">part one</var> is already in the <var title="">fallback
       URIs</var> mapping as an <span
       title="concept-appcache-oppcache-ns">opportunistic caching
       namespace</span>, then jump back to the step labeled "start of
       line".</p>
 
-      <!-- XXXURL change to URL -->
-      <p>If the absolute URI or IRI corresponding to <var
-      title="">part one</var> does not have the <span>same
-      origin</span> as the manifest's URI, then jump back to the step
-      labeled "start of line".</p> <!-- SECURITY -->
-
-      <!-- XXXURL change to URL -->
-      <p>If the absolute URI or IRI corresponding to <var
-      title="">part two</var> has a different <scheme> component
-      than the manifest's URI (compared case-insensitively<!-- XXX
-      ASCII -->), then jump back to the step labeled "start of
-      line".</p>
-
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, add the absolute URI or IRI corresponding to <var
-      title="">part one</var> to the <var title="">fallback URIs</var>
-      mapping as an <span
+      <p>Otherwise, add the <span>absolute URL</span> corresponding to
+      <var title="">part one</var> to the <var title="">fallback
+      URIs</var> mapping as an <span
       title="concept-appcache-oppcache-ns">opportunistic caching
-      namespace</span>, mapped to the absolute URI corresponding to
-      <var title="">part two</var> as the <span
+      namespace</span>, mapped to the <span>absolute URL</span>
+      corresponding to <var title="">part two</var> as the <span
       title="concept-appcache-fallback">fallback entry</span>.</p>
 
      </dd>
@@ -30382,24 +30357,24 @@
 
      <dd>
 
-      <!-- XXXURL change to URL -->
-      <p>If <var title="">line</var> is not a syntactically correct URI
-      reference or IRI reference, then jump back to the step labeled
-      "start of line".</p>
+      <p><span title="resolve a url">Resolve</span> <var
+      title="">line</var>.</p>
 
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, resolve the URI reference or IRI reference to an
-      absolute URI or IRI, and drop the fragment identifier, if any.</p>
+      <p>If this fails, then jump back to the step labeled "start of
+      line".</p>
 
-      <!-- XXXURL change to URL -->
-      <p>Now, if the resource's URI has a different <scheme>
-      component than the manifest's URI, then jump back to the step
-      labeled "start of line".</p>
+      <p>If the resulting <span>absolute URL</span> has a different
+      <span title="url-scheme"><scheme></span> component than
+      the manifest's URL (compared case-insensitively<!-- XXX ASCII
+      -->), then jump back to the step labeled "start of line".</p>
 
-      <!-- XXXURL change to URL -->
-      <p>Otherwise, add this URI to the <var title="">online whitelist
-      URIs</var>.</p>
+      <p>Drop the <span title="url-fragment"><fragment></span>
+      component of the resulting <span>absolute URL</span>, if it has
+      one.</p>
 
+      <p>Add the resulting <span>absolute URL</span> to the <var
+      title="">online whitelist URLs</var>.</p>
+
      </dd>
 
     </dl>
@@ -30410,21 +30385,12 @@
    jumps to the next, and last, step when the end of the file is
    reached.)</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Return the <var title="">explicit URIs</var> list, the <var
-   title="">fallback URIs</var> mapping, and the <var title="">online
-   whitelist URIs</var>.</p></li>
+   <li><p>Return the <var title="">explicit URLs</var> list, the <var
+   title="">fallback URLs</var> mapping, and the <var title="">online
+   whitelist URLs</var>.</p></li>
 
   </ol>
 
-  <!-- XXXURL change to URL -->
-  <p>Relative URI references and IRI references resolved to absolute
-  URIs or IRIs in the above algorithm must be resolved according to
-  section 5.1 of RFC3986 (i.e. relative to the base URI from the
-  encapsulating entity or the URI used to retrieve the entity, since
-  there is no way to embed a base URI in the manifest itself). <a
-  href="#refsRFC3986">[RFC3986]</a></p>
-
   <p class="note">If a resource is listed in both the online whitelist
   and in the explicit section, then that resource will be downloaded
   and cached, but when the page tries to use this resource, the user
@@ -30449,20 +30415,17 @@
 
   <ol>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Let <var title="">manifest URI</var> be the URI of the <span
+   <li><p>Let <var title="">manifest URL</var> be the URL of the <span
    title="concept-appcache-manifest">manifest</span> of the cache to
    be updated.</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>Let <var title="">cache group</var> be the group of <span
    title="application cache">application caches</span> identified by
-   <var title="">manifest URI</var>.</p></li>
+   <var title="">manifest URL</var>.</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>Let <var title="">cache</var> be the most recently updated
    <span>application cache</span> identified by <var title="">manifest
-   URI</var> (that is, the newest version found in <var title="">cache
+   URL</var> (that is, the newest version found in <var title="">cache
    group</var>).</p></li>
 
    <li><p>If the <span title="concept-appcache-status">status</span>
@@ -30475,9 +30438,8 @@
 
    <li>
 
-    <!-- XXXURL change to URL -->
-    <p>If there is already a resource with the URI of <var
-    title="">manifest URI</var> in <var title="">cache</var>, and
+    <p>If there is already a resource with the URL of <var
+    title="">manifest URL</var> in <var title="">cache</var>, and
     that resource is categorized as a <span
     title="concept-appcache-manifest">manifest</span>, then this is an
     <dfn title="concept-appcache-upgrade">upgrade
@@ -30509,8 +30471,7 @@
 
    <li>
 
-    <!-- XXXURL change to URL -->
-    <p>Fetch the resource from <var title="">manifest URI</var>, and
+    <p>Fetch the resource from <var title="">manifest URL</var>, and
     let <var title="">manifest</var> be that resource.</p>
 
     <p>If the resource is labeled with the MIME type <code
@@ -30588,34 +30549,29 @@
    be the display of some sort of user interface indicating to the
    user that a new version is being downloaded.</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>If this is an <span title="concept-appcache-upgrade">upgrade
    attempt</span>, then let <var title="">new cache</var> be a newly
    created <span>application cache</span> identified by <span
-   title="">manifest URI</span>, being a new version in <var
+   title="">manifest URL</span>, being a new version in <var
    title="">cache group</var>. Otherwise, let <var title="">new
    cache</var> and <var title="">cache</var> be the same version of
    the application cache.</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>Let <var title="">file list</var> be an empty list of
-   URIs with flags.</p></li>
+   URLs with flags.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Add all the URIs in the list of <span
+   <li><p>Add all the URLs in the list of <span
    title="concept-appcache-explicit">explicit entries</span> obtained
    by parsing <var title="">manifest</var> to <var title="">file
    list</var>, each flagged with "explicit entry".</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Add all the URIs in the list of <span
+   <li><p>Add all the URLs in the list of <span
    title="concept-appcache-fallback">fallback entries</span> obtained
    by parsing <var title="">manifest</var> to <var title="">file
    list</var>, each flagged with "fallback entry".</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>If this is an <span title="concept-appcache-upgrade">upgrade
-   attempt</span>, then add all the URIs of <span
+   attempt</span>, then add all the URLs of <span
    title="concept-appcache-oppcache">opportunistically cached
    entries</span> in <var title="">cache</var> that <span
    title="concept-appcache-matches-oppcache">match</span> the <span
@@ -30624,31 +30580,27 @@
    to <var title="">file list</var>, each flagged with "opportunistic
    entry".</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>If this is an <span title="concept-appcache-upgrade">upgrade
-   attempt</span>, then add all the URIs of <span
+   attempt</span>, then add all the URLs of <span
    title="concept-appcache-implicit">implicit entries</span> in <var
    title="">cache</var> to <var title="">file list</var>, each flagged
    with "implicit entry".</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>If this is an <span title="concept-appcache-upgrade">upgrade
-   attempt</span>, then add all the URIs of <span
+   attempt</span>, then add all the URLs of <span
    title="concept-appcache-dynamic">dynamic entries</span> in <var
    title="">cache</var> to <var title="">file list</var>, each flagged
    with "dynamic entry".</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>If any URI is in <var title="">file list</var> more than
-   once, then merge the entries into one entry for that URI, that
+   <li><p>If any URL is in <var title="">file list</var> more than
+   once, then merge the entries into one entry for that URL, that
    entry having all the flags that the original entries had.</p></li>
 
    <li>
 
-    <!-- XXXURL change to URL -->
-    <p>For each URI in <var title="">file list</var>, run the
+    <p>For each URL in <var title="">file list</var>, run the
     following steps. These steps may be run in parallel for two or
-    more of the URIs at a time.</p>
+    more of the URLs at a time.</p>
 
     <ol>
 
@@ -30691,33 +30643,28 @@
      <li><p>Otherwise, the fetching succeeded. Store the resource in
      the <var title="">new cache</var>.</p></li>
 
-     <!-- XXXURL change to URL -->
-     <li><p>If the URI being processed was flagged as an "explicit
+     <li><p>If the URL being processed was flagged as an "explicit
      entry" in <var title="">file list</var>, then categorize the
      entry as an <span title="concept-appcache-explicit">explicit
      entry</span>.</p></li>
 
-     <!-- XXXURL change to URL -->
-     <li><p>If the URI being processed was flagged as a "fallback
+     <li><p>If the URL being processed was flagged as a "fallback
      entry" in <var title="">file list</var>, then categorize the
      entry as a <span title="concept-appcache-fallback">fallback
      entry</span>.</p></li>
 
-     <!-- XXXURL change to URL -->
-     <li><p>If the URI being processed was flagged as a "opportunistic
+     <li><p>If the URL being processed was flagged as a "opportunistic
      entry" in <var title="">file list</var>, then categorize the
      entry as an <span
      title="concept-appcache-oppcache">opportunistically cached
      entry</span>.</p></li>
 
-     <!-- XXXURL change to URL -->
-     <li><p>If the URI being processed was flagged as an "implicit
+     <li><p>If the URL being processed was flagged as an "implicit
      entry" in <var title="">file list</var>, then categorize the
      entry as a <span title="concept-appcache-implicit">implicit
      entry</span>.</p></li>
 
-     <!-- XXXURL change to URL -->
-     <li><p>If the URI being processed was flagged as an "dynamic
+     <li><p>If the URL being processed was flagged as an "dynamic
      entry" in <var title="">file list</var>, then categorize the
      entry as a <span title="concept-appcache-dynamic">dynamic
      entry</span>.</p></li>
@@ -30731,15 +30678,13 @@
    (whether newly added or not) as <span
    title="concept-appcache-manifest">the manifest</span>.</p></li>
 
-   <!-- XXXURL change to URL -->
    <li><p>Store the list of <span
    title="concept-appcache-oppcache-ns">opportunistic caching
-   namespaces</span>, and the URIs of the <span
+   namespaces</span>, and the URLs of the <span
    title="concept-appcache-fallback">fallback entries</span> that they
    map to, in the new cache.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>Store the URIs that form the new <span
+   <li><p>Store the URLs that form the new <span
    title="concept-appcache-onlinewhitelist">online whitelist</span> in
    the new cache.</p></li>
 
@@ -30766,11 +30711,10 @@
     <p>If this is a <span title="concept-appcache-cache">cache
     attempt</span>, then:</p>
 
-    <!-- XXXURL change to URL -->
     <p id="flagAsCandidateForCache-result">Associate any
     <code>Document</code> objects that were <a
     href="#flagAsCandidateForCache">flagged as candidates</a> for this
-    manifest URI's caches with <var title="">cache</var>.</p>
+    manifest URL's caches with <var title="">cache</var>.</p>
 
     <p><span>Fire a simple event</span> called <code
     title="event-cached">cached</code> at the
@@ -30842,25 +30786,24 @@
   title="navigate">navigation</span> model, but references the
   algorithms defined in this section.</p>
 
-  <!-- XXXURL change to URL -->
-  <p>A URI <dfn title="concept-appcache-matches-oppcache">matches an
+  <p>A URL <dfn title="concept-appcache-matches-oppcache">matches an
   opportunistic caching namespace</dfn> if there exists an
   <span>application cache</span> whose <span
-  title="concept-appcache-manifest">manifest</span>'s URI has the
-  <span>same origin</span> as the URI in question, and if that
+  title="concept-appcache-manifest">manifest</span>'s URL has the
+  <span>same origin</span> as the URL in question, and if that
   application cache has an <span
   title="concept-appcache-oppcache-ns">opportunistic caching
-  namespace</span> with a <path> component that exactly matches
-  the start of the <path> component of the URI being
+  namespace</span> with a <span title="url-path"><path></span>
+  component that exactly matches the start of the <span
+  title="url-path"><path></span> component of the URL being
   examined. If multiple opportunistic caching namespaces match the
-  same URI, the one with the longest <path> component is the one
-  that matches. A URI looking for an opportunistic caching namespace
+  same URL, the one with the longest <path> component is the one
+  that matches. A URL looking for an opportunistic caching namespace
   can match more than one application cache at a time, but only
   matches one namespace in each cache.</p>
 
   <div class="example">
 
-   <!-- XXXURL change to URL -->
    <p>If a manifest <code
    title="">http://example.com/app1/manifest</code> declares that
    <code title="">http://example.com/resources/images</code> should be
@@ -30868,14 +30811,13 @@
    title="">http://example.com/resources/images/cat.png</code>, then
    the user agent will decide that the application cache identified by
    <code title="">http://example.com/app1/manifest</code> contains a
-   namespace with a match for that URI.</p>
+   namespace with a match for that URL.</p>
 
   </div>
 
-  <!-- XXXURL change to URL -->
   <p>When the <dfn
   title="concept-appcache-init-with-attribute">application cache
-  selection algorithm</dfn> algorithm is invoked with a manifest URI,
+  selection algorithm</dfn> algorithm is invoked with a manifest URL,
   the user agent must run the first applicable set of steps from the
   following list:</p>
 
@@ -30886,10 +30828,9 @@
 
    <dd>
 
-    <!-- XXXURL change to URL -->
     <p>As an optimization, if the resource was loaded from an
-    <span>application cache</span>, and the manifest URI of that cache
-    doesn't match the manifest URI with which the algorithm was
+    <span>application cache</span>, and the manifest URL of that cache
+    doesn't match the manifest URL with which the algorithm was
     invoked, then the user agent should mark the entry in that
     application cache corresponding to the resource that was just
     loaded as being <span
@@ -30902,10 +30843,9 @@
 
    <!-- otherwise, we're talking top-level browsing contexts only: -->
 
-   <!-- XXXURL change to URL -->
    <dt>If the resource being loaded was loaded from an application
-   cache and the URI of that application cache's manifest is the
-   same as the manifest URI with which the algorithm was invoked</dt>
+   cache and the URL of that application cache's manifest is the
+   same as the manifest URL with which the algorithm was invoked</dt>
    <dd>
     <p>Associate the <code>Document</code> with the cache from which
     it was loaded. Invoke the <span>application cache update
@@ -30913,10 +30853,9 @@
    </dd>
 
 
-   <!-- XXXURL change to URL -->
    <dt>If the resource being loaded was loaded from an application
-   cache and the URI of that application cache's manifest is
-   <em>not</em> the same as the manifest URI with which the algorithm
+   cache and the URL of that application cache's manifest is
+   <em>not</em> the same as the manifest URL with which the algorithm
    was invoked</dt>
 
    <dd>
@@ -30950,18 +30889,16 @@
 
     <ol>
 
-     <!-- XXXURL change to URL -->
-     <li><p>If the manifest URI does not have the <span>same
-     origin</span> as the resource's own URI, then invoke the <span
+     <li><p>If the manifest URL does not have the <span>same
+     origin</span> as the resource's own URL, then invoke the <span
      title="concept-appcache-init-no-attribute">application cache
      selection algorithm</span> again, but without a manifest, and
      abort these steps.</p></li>
 
-     <!-- XXXURL change to URL -->
      <li><p>If there is already an <span>application cache</span>
-     identified by this manifest URI, and the most up to date version
+     identified by this manifest URL, and the most up to date version
      of that <span>application cache</span> contains a resource with
-     the URI of the manifest, and that resource is categorized as a
+     the URL of the manifest, and that resource is categorized as a
      <span title="concept-appcache-manifest">manifest</span>, then:
      store the resource in the matching cache, categorized as an <span
      title="concept-appcache-implicit">implicit entry</span>,
@@ -30969,19 +30906,17 @@
      <span>application cache update process</span>, and abort these
      steps.</p></li>
 
-     <!-- XXXURL change to URL -->
      <li id="flagAsCandidateForCache"><p>Flag the resource's
-     <code>Document</code> as a candidate for this manifest URI's
+     <code>Document</code> as a candidate for this manifest URL's
      caches, so that it will be <a
      href="#flagAsCandidateForCache-result">associated with an
-     application cache identified by this manifest URI</a> later, when
+     application cache identified by this manifest URL</a> later, when
      such an <span>application cache</span> is ready.</p></li>
 
-     <!-- XXXURL change to URL -->
      <li><p>If there is already an <span>application cache</span>
-     identified by this manifest URI, then the most up to date version
+     identified by this manifest URL, then the most up to date version
      of that <span>application cache</span> does not yet contain a
-     resource with the URI of the manifest, or it does but that
+     resource with the URL of the manifest, or it does but that
      resource is not yet categorized as a <span
      title="concept-appcache-manifest">manifest</span>: store the
      resource in that cache, categorized as an <span
@@ -30991,10 +30926,9 @@
      abort these steps. (An <span>application cache update
      process</span> is already in progress.)</p></li>
 
-     <!-- XXXURL change to URL -->
      <li><p>Otherwise, there is no matching <span>application
      cache</span>: create a new application cache identified by this
-     manifest URI, store the resource in that cache, categorized as an
+     manifest URL, store the resource in that cache, categorized as an
      <span title="concept-appcache-implicit">implicit entry</span>,
      and then invoke the <span>application cache update
      process</span>.</p></li>
@@ -31038,14 +30972,12 @@
    mechanism or equivalent, then fetch the resource normally and abort
    these steps.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>If the resource's URI, ignoring its fragment identifier if
+   <li><p>If the resource's URL, ignoring its fragment identifier if
    any, is listed in the <span>application cache</span>'s <span
    title="concept-appcache-onlinewhitelist">online whitelist</span>,
    then fetch the resource normally and abort these steps.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>If the resource's URI is <span
+   <li><p>If the resource's URL is <span
    title="concept-appcache-implicit">an implicit entry</span>, <span
    title="concept-appcache-manifest">the manifest</span>, <span
    title="concept-appcache-explicit">an explicit entry</span>, <span
@@ -31057,11 +30989,11 @@
 
    <li>
 
-    <!-- XXXURL change to URL -->
-    <p>If the resource's URI has the <span>same origin</span> as the
-    manifest's URI, and the start of the resource's URI's <path>
-    component is exactly matched by the <path> component of an
-    <span title="concept-appcache-oppcache-ns">opportunistic caching
+    <p>If the resource's URL has the <span>same origin</span> as the
+    manifest's URL, and the start of the resource's URL's <span
+    title="url-path"><path></span> component is exactly matched
+    by the <path> component of an <span
+    title="concept-appcache-oppcache-ns">opportunistic caching
     namespace</span> in the <span>application cache</span>, then:
 
     <p>Fetch the resource normally. If this results 4xx or 5xx status
@@ -31205,10 +31137,9 @@
   index <span><code
   title="dom-appcache-length">length</code>-1</span>.</p>
 
-  <!-- XXXURL change to URL -->
   <p>The <dfn title="dom-appcache-item"><code>item(<var
   title="">index</var>)</code></dfn> method must return the absolute
-  URI of the <span title="concept-appcache-dynamic">dynamic
+  URL</span> of the <span title="concept-appcache-dynamic">dynamic
   entry</span> with index <var title="">index</var> from the
   <span>application cache</span>, if one is associated with the
   <code>ApplicationCache</code> object. If the object is not
@@ -31229,17 +31160,10 @@
    <code>INVALID_STATE_ERR</code> exception and abort these
    steps.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>If <var title="">url</var> is not a valid URI reference,
-   then raise a <code>SYNTAX_ERR</code> exception and abort these
-   steps. <a href="#refsRFC3986">[RFC3986]</a> <a
-   href="#refsRFC3987">[RFC3987]</a></p></li>
+   <li><p><span title="resolve a URL">Resolve</span> the <var
+   title="">url</var> argument. If this fails, raise a
+   <code>SYNTAX_ERR</code> exception and abort these steps.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p class="big-issue">resolve relative URIs; on failure, raise a
-   <code>SYNTAX_ERR</code> exception</p></li>
-
-   <!-- XXXURL change to URL -->
    <li><p>If there is already a resource in in the <span>application
    cache</span> with which the <code>ApplicationCache</code> object is
    associated that has the address <var title="">url</var>, then
@@ -31247,14 +31171,13 @@
    title="concept-appcache-dynamic">dynamic entry</span> and return
    and abort these steps.</p></li>
 
-   <!-- XXXURL change to URL -->
-   <li><p>If <var title="">url</var> has a different <scheme>
-   component than the manifest's URI, then raise a <span>security
+   <li><p>If <var title="">url</var> has a different <span
+   title="url-scheme"><scheme></span> component than the
+   manifest's URL, then raise a <span>security
    exception</span>.</p></li>
 
    <li><p>Return, but do not abort these steps.</p></li>
 
-   <!-- XXXURL change to URL, maybe xref "fetch"? -->
    <li><p>Fetch the resource referenced by <var
    title="">url</var>.</p></li>
 
@@ -31287,20 +31210,19 @@
   interface. This would also make this far more complex to spec and
   implement.</p>
 
-  <!-- XXXURL algorithms -->
   <p>The <dfn title="dom-appcache-remove"><code>remove(<var
-  title="">url</var>)</code></dfn> method must remove the <span
+  title="">url</var>)</code></dfn> method must <span title="resolve a
+  url">resolve</span> the <var title="">url</var> argument and, if
+  that is successful, remove the <span
   title="concept-appcache-dynamic">dynamic entry</span> categorization
-  of any entry with the address <var title="">url</var> in the
-  <span>application cache</span> with which the
-  <code>ApplicationCache</code> object is associated. <span
-  class="big-issue">Resolve relative URIs... (ignore syntax
-  errors)</span> If this removes the last categorization of an entry
-  in that cache, then the entry must be removed entirely (such that if
-  it is re-added, it will be loaded from the network again). If the
-  <code>ApplicationCache</code> object is not associated with any
-  application cache, then the method must raise an
-  <code>INVALID_STATE_ERR</code> exception instead.</p>
+  of any entry whose address is the resulting <span>absolute
+  URL</span> in the <span>application cache</span> with which the
+  <code>ApplicationCache</code> object is associated. If this removes
+  the last categorization of an entry in that cache, then the entry
+  must be removed entirely (such that if it is re-added, it will be
+  loaded from the network again). If the <code>ApplicationCache</code>
+  object is not associated with any application cache, then the method
+  must raise an <code>INVALID_STATE_ERR</code> exception instead.</p>
 
   <p>If the <dfn
   title="dom-appcache-update"><code>update()</code></dfn> method is
@@ -31468,20 +31390,18 @@
   implementing the <code>History</code> interface for that
   <code>Window</code> object's <span>active document</span>.</p>
 
-  <!-- XXXURL change to URL -->
   <p><code>History</code> objects represent their <span>browsing
   context</span>'s session history as a flat list of <span
   title="session history entry">session history entries</span>. Each
-  <dfn>session history entry</dfn> consists of either a URI or a
-  <span>state object</span>, or both, and may in addition have a
-  title, a <code>Document</code> object, form data, a scroll position,
-  and other information associated with it.</p>
+  <dfn>session history entry</dfn> consists of either a
+  <span>URL</span> or a <span>state object</span>, or both, and may in
+  addition have a title, a <code>Document</code> object, form data, a
+  scroll position, and other information associated with it.</p>
 
   <p class="note">This does not imply that the user interface need be
   linear. See the <a href="#history-notes">notes below</a>.</p>
 
-  <!-- XXXURL change to URL -->
-  <p>URIs without associated <span title="state object">state
+  <p>URLs without associated <span title="state object">state
   objects</span> are added to the session history as the user (or
   script) navigates from page to page.</p>
 
@@ -31539,18 +31459,16 @@
   <code>Document</code> object with it must share the new object as
   well.</p>
 
-  <!-- XXXURL change to URL -->
-  <p>When state object entries are added, a URI can be provided. This
-  URI is used to replace the state object entry if the
+  <p>When state object entries are added, a URL can be provided. This
+  URL is used to replace the state object entry if the
   <code>Document</code> is evicted.</p>
 
-  <!-- XXXURL change to URL -->
   <p>When a user agent discards the DOM from an entry in the session
   history, it must also discard all the entries that share that
-  <code>Document</code> but do not have an associated URI
+  <code>Document</code> but do not have an associated URL
   (i.e. entries that only have a <span>state object</span>). Entries
   that shared that <code>Document</code> object but had a state object
-  and have a different URI must then have their <em>state objects</em>
+  and have a different URL must then have their <em>state objects</em>
   removed. Removed entries are not recreated if the user or script
   navigates back to the page. If there are no state object entries for
   that <code>Document</code> object then no entries are removed.</p>
@@ -31634,48 +31552,66 @@
   title="">url</var>)</code></dfn> method adds a state object to the
   history.</p>
 
-  <!-- XXXURL algorithms XXXDOCURL -->
-  <p>When this method is invoked, the user agent must first check the
-  third argument. If a third argument is specified, then the user
-  agent must verify that the third argument is a valid URI or IRI (as
-  defined by RFC 3986 and 3987), and if so, that, after resolving it
-  to an absolute URI, it is either identical to <span>the document's
-  address</span>, or that it differs from that address only in the
-  <query>, <abs_path>, and/or <fragment> parts, as
-  applicable (the <query> and <abs_path> parts can only be
-  the same if the document's URI uses a hierarchical
-  <scheme>). If the verification fails (either because the
-  argument is syntactically incorrect, or differs in a way not
-  described as acceptable in the previous sentence) then the user
-  agent must raise a <span>security exception</span>. <a
-  href="#refsRFC3986">[RFC3986]</a> <a
-  href="#refsRFC3987">[RFC3987]</a></p>
+  <p>When this method is invoked, the user agent must run the following steps:</p>
 
-  <p>If the third argument passes its verification step, or if the
-  third argument was omitted, then the user agent must remove from the
-  <span>session history</span> any entries for that
-  <code>Document</code> from the entry after the <span>current
-  entry</span> up to the last entry in the session history that
-  references the same <code>Document</code> object, if any. If the
-  <span>current entry</span> is the last entry in the session history,
-  or if there are no entries after the <span>current entry</span> that
-  reference the same <code>Document</code> object, then no entries are
-  removed.</p>
+  <ol>
 
-  <!-- XXXURL change to URL -->
-  <p>Then, the user agent must add a state object entry to the session
-  history, after the <span>current entry</span>, with the specified
-  <var title="">data</var> as the state object, the given <var
-  title="">title</var> as the title, and, if the third argument is
-  present, the given <var title="">url</var> as the URI of the
-  entry.</p>
+   <li>
 
-  <p>Then, the user agent must set this new entry as being the
-  <span>last activated entry</span> for the <code>Document</code>.</p>
+    <p>If a third argument is specified, run these substeps:</p>
 
-  <p>Finally, the user agent must update the <span>current
-  entry</span> to be the this newly added entry.</p>
+    <ol>
 
+     <li><span title="resolve a url">Resolve</span> the value of the
+     third argument.</li>
+
+     <li>If that fails, raise a <span>security exception</span> and
+     abort the <code title="dom-history-pushState">pushState()</code>
+     steps.</li>
+
+     <li>Compare the resulting <span>absolute URL</span> to <span>the
+     document's address</span><!-- XXXDOCURL -->. If any part of these
+     two <span title="URL">URLs</span> differ other than the <span
+     title="url-path"><path></span>, <span
+     title="url-query"><query></span>, and <span
+     title="url-fragment"><fragment></span> components, then
+     raise a <span>security exception</span> and abort the <code
+     title="dom-history-pushState">pushState()</code> steps.</li>
+
+    </ol>
+
+    <p>For the purposes of the comparison in the above substeps, the
+    <span title="url-path"><path></span> and <span
+    title="url-query"><query></span> components can only be the
+    same if the URLs use a hierarchical <span
+    title="url-scheme"><scheme></span>.</p>
+
+   </li>
+
+   <li><p>Remove from the <span>session history</span> any entries for
+   the <code>Document</code> from the entry after the <span>current
+   entry</span> up to the last entry in the session history that
+   references the same <code>Document</code> object, if any. If the
+   <span>current entry</span> is the last entry in the session
+   history, or if there are no entries after the <span>current
+   entry</span> that reference the same <code>Document</code> object,
+   then no entries are removed.</p></li>
+
+   <li><p>Add a state object entry to the session history, after the
+   <span>current entry</span>, with the specified <var
+   title="">data</var> as the state object, the given <var
+   title="">title</var> as the title, and, if the third argument is
+   present, the <span>absolute URL</span> that was found in the first
+   step as the URL of the entry.</p></li>
+
+   <li><p>Set this new entry as being the <span>last activated
+   entry</span> for the <code>Document</code>.</p></li>
+
+   <li><p>Update the <span>current entry</span> to be the this newly
+   added entry.</p></li>
+
+  </ol>
+
   <p class="note">The <var title="">title</var> is purely
   advisory. User agents might use the title in the user interface.</p>
 
@@ -31732,6 +31668,8 @@
 
   <!-- XXX onpopstate should be defined somewhere -->
 
+  <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXURL \(url\|uri\|iri\) -->
+
   <!-- XXXURL check with DOM3 Events -->
   <pre class="idl">interface <dfn>PopStateEvent</dfn> : Event {
   readonly attribute DOMObject <span title="dom-PopStateEvent-state">state</span>;




More information about the Commit-Watchers mailing list