hixie: Make about:blank loading async, but make <iframe> and <object> not navigate to it if that's their starting point. (whatwg r4628)

hixie: Make about:blank loading async, but make <iframe> and <object>
not navigate to it if that's their starting point. (whatwg r4628)

http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.3688&r2=1.3689&f=h
http://html5.org/tools/web-apps-tracker?from=4627&to=4628

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.3688
retrieving revision 1.3689
diff -u -d -r1.3688 -r1.3689
--- Overview.html 27 Jan 2010 01:49:19 -0000 1.3688
+++ Overview.html 27 Jan 2010 08:32:03 -0000 1.3689
@@ -4449,11 +4449,7 @@
   the following steps must be run. (When a <em>URL</em> is to be
   fetched, the URL identifies a resource to be obtained.)</p>
 
-  <ol><li><p>If the resource is identified by the <a href="#url">URL</a>
-   <dfn id="about:blank"><code>about:blank</code></dfn>, then return the empty string
-   and abort these steps.</li>
-
-   <li>
+  <ol><li>
 
     <p>Generate the <i>address of the resource from which Request-URIs
     are obtained</i> as required by HTTP for the <code title="http-referer">Referer</code> (sic) header from <a href="#the-document-s-current-address">the
@@ -4512,6 +4508,11 @@
     explicitly initiated from an <i title="">origin</i>, then <i title="">the origin that initiated the HTTP request</i> is <i title="">origin</i>. Otherwise, this is <i title="">a request from
     a "privacy-sensitive" context</i>. <a href="#refsORIGIN">[ORIGIN]</a></p>
 
+    <p>If the resource is identified by the <a href="#url">URL</a>
+    <dfn id="about:blank"><code>about:blank</code></dfn>, then the resource is
+    immediately available and consists of the empty string, with no
+    metadata.</p>
+
    </li>
 
    <li>
@@ -16806,7 +16807,8 @@
   <p>When an <code><a href="#the-iframe-element">iframe</a></code> element is first <a href="#insert-an-element-into-a-document" title="insert
   an element into a document">inserted into a document</a>, the
   user agent must create a <a href="#nested-browsing-context">nested browsing context</a>, and
-  then <a href="#process-the-iframe-attributes">process the <code>iframe</code> attributes</a>.</p>
+  then <a href="#process-the-iframe-attributes">process the <code>iframe</code> attributes</a> for the
+  first time.</p>
 
   <p>Whenever an <code><a href="#the-iframe-element">iframe</a></code> element with a <a href="#nested-browsing-context">nested
   browsing context</a> has its <code title="attr-iframe-srcdoc"><a href="#attr-iframe-srcdoc">srcdoc</a></code> attribute set or changed,
@@ -16838,12 +16840,25 @@
 
    <dd>
 
-    <ol><li><p><a href="#resolve-a-url" title="resolve a url">Resolve</a> the value of
+    <ol><!--
+     <li><p>If the value of the <code
+     title="attr-iframe-src">src</code> attribute is the empty string,
+     and the user agent is processing this <code>iframe</code>'s
+     attributes for the first time, then abort these steps.</p></li>
+--><li><p><a href="#resolve-a-url" title="resolve a url">Resolve</a> the value of
      the <code title="attr-iframe-src"><a href="#attr-iframe-src">src</a></code> attribute, relative
      to the <code><a href="#the-iframe-element">iframe</a></code> element.</li>
 
-     <li><p>If that is successful, <a href="#navigate">navigate</a> the element's
-     <a href="#browsing-context">browsing context</a> to the resulting <a href="#absolute-url">absolute
+     <li><p>If that is not successful, abort these steps.</li>
+
+     <li><p>If the resulting <a href="#absolute-url">absolute URL</a> is an
+     <a href="#ascii-case-insensitive">ASCII case-insensitive</a> match for the string
+     "<code><a href="#about:blank">about:blank</a></code>", and the user agent is processing this
+     <code><a href="#the-iframe-element">iframe</a></code>'s attributes for the first time, then abort
+     these steps.</li>
+
+     <li><p><a href="#navigate">Navigate</a> the element's <a href="#browsing-context">browsing
+     context</a> to the resulting <a href="#absolute-url">absolute
      URL</a>.</li>
 
     </ol></dd>
@@ -16855,11 +16870,12 @@
   browsing context</a>.</p>
 
   <p>Furthermore, if the <a href="#process-the-iframe-attributes">process the <code>iframe</code>
-  attributes</a> algorithm was invoked as a result of the element
-  being <a href="#insert-an-element-into-a-document" title="insert an element into a document">inserted into
-  a document</a>, then any <a href="#navigate" title="navigate">navigation</a>
-  required of the user agent in that algorithm must be completed with
-  <a href="#replacement-enabled">replacement enabled</a>.</p>
+  attributes</a> algorithm was invoked for the first time for this
+  element (i.e. as a result of the element being <a href="#insert-an-element-into-a-document" title="insert
+  an element into a document">inserted into a document</a>), then
+  any <a href="#navigate" title="navigate">navigation</a> required of the user
+  agent in that algorithm must be completed with <a href="#replacement-enabled">replacement
+  enabled</a>.</p>
 
   </div><p class="note">If, when the element is created, the <code title="attr-iframe-srcdoc"><a href="#attr-iframe-srcdoc">srcdoc</a></code> attribute is not set, and
   the <code title="attr-iframe-src"><a href="#attr-iframe-src">src</a></code> attribute is either
@@ -17710,6 +17726,9 @@
 
    <li>
 
+    <!-- what if it's not in the document? if that should prevent
+    plugin instantiation, then here just skip to the last step -->
+
     <p>If the <code title="attr-object-classid"><a href="#attr-object-classid">classid</a></code>
     attribute is present, and has a value that isn't the empty string,
     then: if the user agent can find a <a href="#plugin">plugin</a> suitable
@@ -17750,7 +17769,7 @@
    -->
 
    <li><p>If the <code title="attr-object-data"><a href="#attr-object-data">data</a></code> attribute
-   is present, then:</p>
+   is present and its value is not the empty string, then:</p>
 
     <ol><li><p>If the <code title="attr-object-type"><a href="#attr-object-type">type</a></code>
      attribute is present and its value is not a type that the user
@@ -17759,23 +17778,25 @@
      step in the overall set of steps (fallback) without fetching the
      content to examine its real type.</li>
 
-     <li>
+     <li><p><a href="#resolve-a-url" title="resolve a url">Resolve</a> the
+     <a href="#url">URL</a> specified by the <code title="attr-object-data"><a href="#attr-object-data">data</a></code> attribute, relative to the
+     element.</li>
 
-      <p><a href="#resolve-a-url" title="resolve a url">Resolve</a> the
-      <a href="#url">URL</a> specified by the <code title="attr-object-data"><a href="#attr-object-data">data</a></code> attribute, relative to the
-      element.</p>
+     <li><p>If that failed, <a href="#fire-a-simple-event">fire a simple event</a> named
+     <code title="event-error">error</code> at the element, then jump
+     to the last step in the overall set of steps (fallback).</li>
 
-      <p>If that is successful, <a href="#fetch">fetch</a> the resulting
-      <a href="#absolute-url">absolute URL</a>, from the element's <a href="#browsing-context-scope-origin">browsing
-      context scope origin</a> if it has one<!-- potentially
-      http-origin privacy sensitive -->.</p>
+     <li>
 
-      <!-- similar text in various places -->
-      <p>Fetching the resource must <a href="#delay-the-load-event">delay the load event</a>
-      of the element's document until the <a href="#concept-task" title="concept-task">task</a> that is <a href="#queue-a-task" title="queue a
-      task">queued</a> by the <a href="#networking-task-source">networking task source</a>
-      once the resource has been <a href="#fetch" title="fetch">fetched</a>
-      (defined next) has been run.</p>
+      <p><a href="#fetch">Fetch</a> the resulting <a href="#absolute-url">absolute URL</a>,
+      from the element's <a href="#browsing-context-scope-origin">browsing context scope origin</a> if
+      it has one<!-- potentially http-origin privacy sensitive
+      -->.</p>
+
+      <!-- similar text in various places --> <p>Fetching the resource
+      must <a href="#delay-the-load-event">delay the load event</a> of the element's document
+      until the <a href="#concept-task" title="concept-task">task</a> that is <a href="#queue-a-task" title="queue a task">queued</a> by the <a href="#networking-task-source">networking task
+      source</a> once the resource has been <a href="#fetch" title="fetch">fetched</a> (defined next) has been run.</p>
 
      </li>
 
@@ -17790,12 +17811,10 @@
      to consider a resource "available" whenever enough data has been
      obtained to begin processing the resource.</li>
 
-     <li><p>If the load failed (e.g. the <a href="#url">URL</a> could not be
-     <a href="#resolve-a-url" title="resolve a url">resolved</a>, there was an HTTP
-     404 error, there was a DNS error), <a href="#fire-a-simple-event">fire a simple
-     event</a> named <code title="event-error">error</code> at the
-     element, then jump to the last step in the overall set of steps
-     (fallback).</li>
+     <li><p>If the load failed (e.g. there was an HTTP 404 error,
+     there was a DNS error), <a href="#fire-a-simple-event">fire a simple event</a> named
+     <code title="event-error">error</code> at the element, then jump
+     to the last step in the overall set of steps (fallback).</li>
 
      <li><p>Determine the <var title="">resource type</var>, as follows:</p>
 
@@ -17935,11 +17954,12 @@
 
         <p>The <code><a href="#the-object-element">object</a></code> element must be associated with a
         <a href="#nested-browsing-context">nested browsing context</a>, if it does not already
-        have one. The element's <a href="#nested-browsing-context">nested browsing context</a>
-        must then be <a href="#navigate" title="navigate">navigated</a> to the
-        given resource, with <a href="#replacement-enabled">replacement enabled</a>, and
-        with the <code><a href="#the-object-element">object</a></code> element's document's
-        <a href="#browsing-context">browsing context</a> as the <a href="#source-browsing-context">source browsing
+        have one. If the <a href="#url">URL</a> of the given resource is not
+        <code><a href="#about:blank">about:blank</a></code>, the element's <a href="#nested-browsing-context">nested browsing
+        context</a> must then be <a href="#navigate" title="navigate">navigated</a> to that resource, with
+        <a href="#replacement-enabled">replacement enabled</a>, and with the
+        <code><a href="#the-object-element">object</a></code> element's document's <a href="#browsing-context">browsing
+        context</a> as the <a href="#source-browsing-context">source browsing
         context</a>. (The <code title="attr-object-data"><a href="#attr-object-data">data</a></code> attribute of the
         <code><a href="#the-object-element">object</a></code> element doesn't get updated if the
         browsing context gets further navigated to other
@@ -44076,11 +44096,7 @@
 
    <li>
 
-    <p>If fetching the resource is synchronous (i.e. for
-    <code><a href="#about:blank">about:blank</a></code>), then this must be synchronous, but if
-    fetching the resource depends on external resources, as it usually
-    does for URLs that use HTTP or other networking protocols, then at
-    this point the user agents must return to whatever algorithm
+    <p>At this point the user agents must return to whatever algorithm
     invoked the navigation steps and must continue these steps
     asynchronously.</p>

Received on Wednesday, 27 January 2010 08:32:50 UTC