[html5] r7379 - [giow] (3) Make <iframe> and <frame> more similar in processing model. (This is [...]

whatwg at whatwg.org whatwg at whatwg.org
Wed Sep 19 15:17:03 PDT 2012


Author: ianh
Date: 2012-09-19 15:17:02 -0700 (Wed, 19 Sep 2012)
New Revision: 7379

Modified:
   complete.html
   index
   source
Log:
[giow] (3) Make <iframe> and <frame> more similar in processing model. (This is largely untested, so let me know if <frame> has more crazy than this.)
Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=17075
Affected topics: HTML

Modified: complete.html
===================================================================
--- complete.html	2012-09-19 22:02:08 UTC (rev 7378)
+++ complete.html	2012-09-19 22:17:02 UTC (rev 7379)
@@ -26530,6 +26530,8 @@
   <p class=note>This happens without any <code title=event-unload>unload</code> events firing (the <a href=#nested-browsing-context>nested
   browsing context</a> and its <code><a href=#document>Document</a></code> are <em title="a browsing context is discarded">discarded</em>, not <em title="unload a document">unloaded</em>).</p>
 
+  <!-- START of section that's very similar to <frame> -->
+
   <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, changed, or
   removed, the user agent must <a href=#process-the-iframe-attributes>process the <code>iframe</code>
@@ -26550,7 +26552,7 @@
    is specified</dt>
 
    <dd><p><a href=#navigate>Navigate</a><!--DONAV iframe--> the element's
-   <a href=#browsing-context>browsing context</a> to a resource whose
+   <a href=#child-browsing-context>child browsing context</a> to a resource whose
    <a href=#content-type>Content-Type</a> is <code><a href=#text/html>text/html</a></code>, whose
    <a href=#url>URL</a> is <code><a href=#about:srcdoc>about:srcdoc</a></code>, and whose data
    consists of the value of the attribute. The resulting
@@ -26593,7 +26595,7 @@
      <li>
 
       <p><a href=#navigate>Navigate</a><!--DONAV iframe--> the element's
-      <a href=#browsing-context>browsing context</a> to <var title="">url</var>.</p>
+      <a href=#child-browsing-context>child browsing context</a> to <var title="">url</var>.</p>
       
      </li>
 
@@ -26607,22 +26609,24 @@
   browsing context</a>.</p>
 
   <p>Furthermore, if the <a href=#active-document>active document</a> of the element's
-  <a href=#browsing-context>browsing context</a> before such a <a href=#navigate title=navigate>navigation</a> was not <a href=#completely-loaded>completely
+  <a href=#child-browsing-context>child browsing context</a> before such a <a href=#navigate title=navigate>navigation</a> was not <a href=#completely-loaded>completely
   loaded</a> at the time of the new <a href=#navigate title=navigate>navigation</a>, then the <a href=#navigate title=navigate>navigation</a> must be completed with
   <a href=#replacement-enabled>replacement enabled</a>.</p>
 
-  <p>Similarly, if the <a href=#browsing-context>browsing context</a>'s <a href=#session-history>session
-  history</a> contained only one <code><a href=#document>Document</a></code> when the
-  <a href=#process-the-iframe-attributes>process the <code>iframe</code> attributes</a> algorithm
-  was invoked, and that was the <code><a href=#about:blank>about:blank</a></code>
-  <code><a href=#document>Document</a></code> created when the <a href=#browsing-context>browsing context</a>
-  was created, 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> <!-- see also the note near
-  similar text for the location.assign() method -->
+  <p>Similarly, if the <a href=#child-browsing-context>child browsing context</a>'s
+  <a href=#session-history>session history</a> contained only one
+  <code><a href=#document>Document</a></code> when the <a href=#process-the-iframe-attributes>process the <code>iframe</code>
+  attributes</a> algorithm was invoked, and that was the
+  <code><a href=#about:blank>about:blank</a></code> <code><a href=#document>Document</a></code> created when the
+  <a href=#child-browsing-context>child browsing context</a> was created, 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> <!-- see also the note near similar text for the
+  location.assign() method -->
 
   </div>
 
+  <!-- END of section that's very similar to <frame> -->
+
   <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
   also not set or set but its value cannot be <a href=#resolve-a-url title="resolve a
@@ -100562,23 +100566,99 @@
   browsing context</a> similar to the <code><a href=#the-iframe-element>iframe</a></code> element,
   but rendered within a <code><a href=#frameset>frameset</a></code> element.</p>
 
-  <p>When the browsing context is created, if a <code title=attr-frame-src>src</code> attribute is present, the user
-  agent must <a href=#resolve-a-url title="resolve a url">resolve</a> the value of
-  that attribute, relative to the element, and if that is successful,
-  must then <a href=#navigate>navigate</a><!--DONAV frame--> the element's
-  browsing context to the resulting <a href=#absolute-url>absolute URL</a>, with
-  <a href=#replacement-enabled>replacement enabled</a>, and with the <code><a href=#frame>frame</a></code>
-  element's document's <a href=#browsing-context>browsing context</a> as the
-  <a href=#source-browsing-context>source browsing context</a>.</p>
+  <!-- START of section that's very similar to <iframe> -->
 
-  <p>Whenever the <code title=attr-frame-src>src</code> attribute is
-  set, the user agent must <a href=#resolve-a-url title="resolve a url">resolve</a>
-  the value of that attribute, relative to the element, and if that is
-  successful, the nested <a href=#browsing-context>browsing context</a> must be <a href=#navigate title=navigate>navigated</a><!--DONAV frame--> to the resulting
-  <a href=#absolute-url>absolute URL</a>, with the <code><a href=#frame>frame</a></code> element's
+  <p>A <code><a href=#frame>frame</a></code> element is said to be an <dfn id=active-frame-element>active
+  <code>frame</code> element</dfn> when it is <a href=#in-a-document>in a
+  <code>Document</code></a> and its <span>parent element</span>, if
+  any, is a <code><a href=#frameset>frameset</a></code> element.</p>
+
+  <p>When a <code><a href=#frame>frame</a></code> element is created as an <a href=#active-frame-element>active
+  <code>frame</code> element</a>, or becomes a <a href=#active-frame-element>active
+  <code>frame</code> element</a> after not having been one, the
+  user agent must create a <a href=#nested-browsing-context>nested browsing context</a>, and
+  then <a href=#process-the-frame-attributes>process the <code>frame</code> attributes</a> for the
+  first time.</p>
+
+  <p>When a <code><a href=#frame>frame</a></code> element stops being an <a href=#active-frame-element>active
+  <code>frame</code> element</a>, the user agent must <a href=#a-browsing-context-is-discarded title="a browsing context is discarded">discard</a> the
+  <a href=#nested-browsing-context>nested browsing context</a>.</p>
+
+  <p>Whenever a <code><a href=#frame>frame</a></code> element with a <a href=#nested-browsing-context>nested
+  browsing context</a> has its <code title=attr-frame-src>src</code> attribute set, changed, or
+  removed, the user agent must <a href=#process-the-frame-attributes>process the <code>frame</code>
+  attributes</a>.</p> <!-- It doesn't happen when the base URL is
+  changed, though. -->
+
+  <p>When the user agent is to <dfn id=process-the-frame-attributes>process the <code>frame</code>
+  attributes</dfn>, it must run the first appropriate steps from the
+  following list:</p>
+
+  <dl class=switch><dt>If the element has no <code title=attr-frame-src>src</code> attribute specified, and the
+   user agent is processing the <code><a href=#frame>frame</a></code>'s attributes for
+   the first time</dt>
+
+   <dd>
+
+    <p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a>
+    named <code title=event-load>load</code> at the
+    <code><a href=#frame>frame</a></code> element.</p>
+
+   </dd>
+
+   <dt>Otherwise</dt>
+
+   <dd>
+
+    <ol><li>
+
+      <p>If the value of the <code title=attr-frame-src>src</code>
+      attribute is the empty string, let <var title="">url</var> be
+      the string "<code><a href=#about:blank>about:blank</a></code>".</p>
+
+      <p>Otherwise, <a href=#resolve-a-url title="resolve a url">resolve</a> the
+      value of the <code title=attr-frame-src>src</code> attribute,
+      relative to the <code><a href=#frame>frame</a></code> element.</p>
+
+      <p>If that is not successful, then let <var title="">url</var>
+      be the string "<code><a href=#about:blank>about:blank</a></code>". Otherwise, let <var title="">url</var> be the resulting <a href=#absolute-url>absolute
+      URL</a>.</p>
+
+     </li>
+
+     <li>
+
+      <p><a href=#navigate>Navigate</a><!--DONAV frame--> the element's
+      <a href=#child-browsing-context>child browsing context</a> to <var title="">url</var>.</p>
+      
+     </li>
+
+    </ol></dd>
+
+  </dl><p>Any <a href=#navigate title=navigate>navigation</a> required of the user
+  agent in the <a href=#process-the-frame-attributes>process the <code>frame</code> attributes</a>
+  algorithm must be completed as an <a href=#explicit-self-navigation-override>explicit self-navigation
+  override</a> and with the <code><a href=#frame>frame</a></code> element's
   document's <a href=#browsing-context>browsing context</a> as the <a href=#source-browsing-context>source
   browsing context</a>.</p>
 
+  <p>Furthermore, if the <a href=#active-document>active document</a> of the element's
+  <a href=#child-browsing-context>child browsing context</a> before such a <a href=#navigate title=navigate>navigation</a> was not <a href=#completely-loaded>completely
+  loaded</a> at the time of the new <a href=#navigate title=navigate>navigation</a>, then the <a href=#navigate title=navigate>navigation</a> must be completed with
+  <a href=#replacement-enabled>replacement enabled</a>.</p>
+
+  <p>Similarly, if the <a href=#child-browsing-context>child browsing context</a>'s
+  <a href=#session-history>session history</a> contained only one
+  <code><a href=#document>Document</a></code> when the <a href=#process-the-frame-attributes>process the <code>frame</code>
+  attributes</a> algorithm was invoked, and that was the
+  <code><a href=#about:blank>about:blank</a></code> <code><a href=#document>Document</a></code> created when the
+  <a href=#child-browsing-context>child browsing context</a> was created, 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> <!-- see also the note near similar text for the
+  location.assign() method -->
+
+  <!-- END of section that's very similar to <iframe> -->
+
   <p>When the browsing context is created, if a <code title=attr-frame-name>name</code> attribute is present, the
   <a href=#browsing-context-name>browsing context name</a> must be set to the value of this
   attribute; otherwise, the <a href=#browsing-context-name>browsing context name</a> must be

Modified: index
===================================================================
--- index	2012-09-19 22:02:08 UTC (rev 7378)
+++ index	2012-09-19 22:17:02 UTC (rev 7379)
@@ -26530,6 +26530,8 @@
   <p class=note>This happens without any <code title=event-unload>unload</code> events firing (the <a href=#nested-browsing-context>nested
   browsing context</a> and its <code><a href=#document>Document</a></code> are <em title="a browsing context is discarded">discarded</em>, not <em title="unload a document">unloaded</em>).</p>
 
+  <!-- START of section that's very similar to <frame> -->
+
   <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, changed, or
   removed, the user agent must <a href=#process-the-iframe-attributes>process the <code>iframe</code>
@@ -26550,7 +26552,7 @@
    is specified</dt>
 
    <dd><p><a href=#navigate>Navigate</a><!--DONAV iframe--> the element's
-   <a href=#browsing-context>browsing context</a> to a resource whose
+   <a href=#child-browsing-context>child browsing context</a> to a resource whose
    <a href=#content-type>Content-Type</a> is <code><a href=#text/html>text/html</a></code>, whose
    <a href=#url>URL</a> is <code><a href=#about:srcdoc>about:srcdoc</a></code>, and whose data
    consists of the value of the attribute. The resulting
@@ -26593,7 +26595,7 @@
      <li>
 
       <p><a href=#navigate>Navigate</a><!--DONAV iframe--> the element's
-      <a href=#browsing-context>browsing context</a> to <var title="">url</var>.</p>
+      <a href=#child-browsing-context>child browsing context</a> to <var title="">url</var>.</p>
       
      </li>
 
@@ -26607,22 +26609,24 @@
   browsing context</a>.</p>
 
   <p>Furthermore, if the <a href=#active-document>active document</a> of the element's
-  <a href=#browsing-context>browsing context</a> before such a <a href=#navigate title=navigate>navigation</a> was not <a href=#completely-loaded>completely
+  <a href=#child-browsing-context>child browsing context</a> before such a <a href=#navigate title=navigate>navigation</a> was not <a href=#completely-loaded>completely
   loaded</a> at the time of the new <a href=#navigate title=navigate>navigation</a>, then the <a href=#navigate title=navigate>navigation</a> must be completed with
   <a href=#replacement-enabled>replacement enabled</a>.</p>
 
-  <p>Similarly, if the <a href=#browsing-context>browsing context</a>'s <a href=#session-history>session
-  history</a> contained only one <code><a href=#document>Document</a></code> when the
-  <a href=#process-the-iframe-attributes>process the <code>iframe</code> attributes</a> algorithm
-  was invoked, and that was the <code><a href=#about:blank>about:blank</a></code>
-  <code><a href=#document>Document</a></code> created when the <a href=#browsing-context>browsing context</a>
-  was created, 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> <!-- see also the note near
-  similar text for the location.assign() method -->
+  <p>Similarly, if the <a href=#child-browsing-context>child browsing context</a>'s
+  <a href=#session-history>session history</a> contained only one
+  <code><a href=#document>Document</a></code> when the <a href=#process-the-iframe-attributes>process the <code>iframe</code>
+  attributes</a> algorithm was invoked, and that was the
+  <code><a href=#about:blank>about:blank</a></code> <code><a href=#document>Document</a></code> created when the
+  <a href=#child-browsing-context>child browsing context</a> was created, 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> <!-- see also the note near similar text for the
+  location.assign() method -->
 
   </div>
 
+  <!-- END of section that's very similar to <frame> -->
+
   <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
   also not set or set but its value cannot be <a href=#resolve-a-url title="resolve a
@@ -100562,23 +100566,99 @@
   browsing context</a> similar to the <code><a href=#the-iframe-element>iframe</a></code> element,
   but rendered within a <code><a href=#frameset>frameset</a></code> element.</p>
 
-  <p>When the browsing context is created, if a <code title=attr-frame-src>src</code> attribute is present, the user
-  agent must <a href=#resolve-a-url title="resolve a url">resolve</a> the value of
-  that attribute, relative to the element, and if that is successful,
-  must then <a href=#navigate>navigate</a><!--DONAV frame--> the element's
-  browsing context to the resulting <a href=#absolute-url>absolute URL</a>, with
-  <a href=#replacement-enabled>replacement enabled</a>, and with the <code><a href=#frame>frame</a></code>
-  element's document's <a href=#browsing-context>browsing context</a> as the
-  <a href=#source-browsing-context>source browsing context</a>.</p>
+  <!-- START of section that's very similar to <iframe> -->
 
-  <p>Whenever the <code title=attr-frame-src>src</code> attribute is
-  set, the user agent must <a href=#resolve-a-url title="resolve a url">resolve</a>
-  the value of that attribute, relative to the element, and if that is
-  successful, the nested <a href=#browsing-context>browsing context</a> must be <a href=#navigate title=navigate>navigated</a><!--DONAV frame--> to the resulting
-  <a href=#absolute-url>absolute URL</a>, with the <code><a href=#frame>frame</a></code> element's
+  <p>A <code><a href=#frame>frame</a></code> element is said to be an <dfn id=active-frame-element>active
+  <code>frame</code> element</dfn> when it is <a href=#in-a-document>in a
+  <code>Document</code></a> and its <span>parent element</span>, if
+  any, is a <code><a href=#frameset>frameset</a></code> element.</p>
+
+  <p>When a <code><a href=#frame>frame</a></code> element is created as an <a href=#active-frame-element>active
+  <code>frame</code> element</a>, or becomes a <a href=#active-frame-element>active
+  <code>frame</code> element</a> after not having been one, the
+  user agent must create a <a href=#nested-browsing-context>nested browsing context</a>, and
+  then <a href=#process-the-frame-attributes>process the <code>frame</code> attributes</a> for the
+  first time.</p>
+
+  <p>When a <code><a href=#frame>frame</a></code> element stops being an <a href=#active-frame-element>active
+  <code>frame</code> element</a>, the user agent must <a href=#a-browsing-context-is-discarded title="a browsing context is discarded">discard</a> the
+  <a href=#nested-browsing-context>nested browsing context</a>.</p>
+
+  <p>Whenever a <code><a href=#frame>frame</a></code> element with a <a href=#nested-browsing-context>nested
+  browsing context</a> has its <code title=attr-frame-src>src</code> attribute set, changed, or
+  removed, the user agent must <a href=#process-the-frame-attributes>process the <code>frame</code>
+  attributes</a>.</p> <!-- It doesn't happen when the base URL is
+  changed, though. -->
+
+  <p>When the user agent is to <dfn id=process-the-frame-attributes>process the <code>frame</code>
+  attributes</dfn>, it must run the first appropriate steps from the
+  following list:</p>
+
+  <dl class=switch><dt>If the element has no <code title=attr-frame-src>src</code> attribute specified, and the
+   user agent is processing the <code><a href=#frame>frame</a></code>'s attributes for
+   the first time</dt>
+
+   <dd>
+
+    <p><a href=#queue-a-task>Queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a>
+    named <code title=event-load>load</code> at the
+    <code><a href=#frame>frame</a></code> element.</p>
+
+   </dd>
+
+   <dt>Otherwise</dt>
+
+   <dd>
+
+    <ol><li>
+
+      <p>If the value of the <code title=attr-frame-src>src</code>
+      attribute is the empty string, let <var title="">url</var> be
+      the string "<code><a href=#about:blank>about:blank</a></code>".</p>
+
+      <p>Otherwise, <a href=#resolve-a-url title="resolve a url">resolve</a> the
+      value of the <code title=attr-frame-src>src</code> attribute,
+      relative to the <code><a href=#frame>frame</a></code> element.</p>
+
+      <p>If that is not successful, then let <var title="">url</var>
+      be the string "<code><a href=#about:blank>about:blank</a></code>". Otherwise, let <var title="">url</var> be the resulting <a href=#absolute-url>absolute
+      URL</a>.</p>
+
+     </li>
+
+     <li>
+
+      <p><a href=#navigate>Navigate</a><!--DONAV frame--> the element's
+      <a href=#child-browsing-context>child browsing context</a> to <var title="">url</var>.</p>
+      
+     </li>
+
+    </ol></dd>
+
+  </dl><p>Any <a href=#navigate title=navigate>navigation</a> required of the user
+  agent in the <a href=#process-the-frame-attributes>process the <code>frame</code> attributes</a>
+  algorithm must be completed as an <a href=#explicit-self-navigation-override>explicit self-navigation
+  override</a> and with the <code><a href=#frame>frame</a></code> element's
   document's <a href=#browsing-context>browsing context</a> as the <a href=#source-browsing-context>source
   browsing context</a>.</p>
 
+  <p>Furthermore, if the <a href=#active-document>active document</a> of the element's
+  <a href=#child-browsing-context>child browsing context</a> before such a <a href=#navigate title=navigate>navigation</a> was not <a href=#completely-loaded>completely
+  loaded</a> at the time of the new <a href=#navigate title=navigate>navigation</a>, then the <a href=#navigate title=navigate>navigation</a> must be completed with
+  <a href=#replacement-enabled>replacement enabled</a>.</p>
+
+  <p>Similarly, if the <a href=#child-browsing-context>child browsing context</a>'s
+  <a href=#session-history>session history</a> contained only one
+  <code><a href=#document>Document</a></code> when the <a href=#process-the-frame-attributes>process the <code>frame</code>
+  attributes</a> algorithm was invoked, and that was the
+  <code><a href=#about:blank>about:blank</a></code> <code><a href=#document>Document</a></code> created when the
+  <a href=#child-browsing-context>child browsing context</a> was created, 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> <!-- see also the note near similar text for the
+  location.assign() method -->
+
+  <!-- END of section that's very similar to <iframe> -->
+
   <p>When the browsing context is created, if a <code title=attr-frame-name>name</code> attribute is present, the
   <a href=#browsing-context-name>browsing context name</a> must be set to the value of this
   attribute; otherwise, the <a href=#browsing-context-name>browsing context name</a> must be

Modified: source
===================================================================
--- source	2012-09-19 22:02:08 UTC (rev 7378)
+++ source	2012-09-19 22:17:02 UTC (rev 7379)
@@ -28576,6 +28576,8 @@
   title="a browsing context is discarded">discarded</em>, not <em
   title="unload a document">unloaded</em>).</p>
 
+  <!-- START of section that's very similar to <frame> -->
+
   <p>Whenever an <code>iframe</code> element with a <span>nested
   browsing context</span> has its <code
   title="attr-iframe-srcdoc">srcdoc</code> attribute set, changed, or
@@ -28600,7 +28602,7 @@
    is specified</dt>
 
    <dd><p><span>Navigate</span><!--DONAV iframe--> the element's
-   <span>browsing context</span> to a resource whose
+   <span>child browsing context</span> to a resource whose
    <span>Content-Type</span> is <code>text/html</code>, whose
    <span>URL</span> is <code>about:srcdoc</code>, and whose data
    consists of the value of the attribute. The resulting
@@ -28647,7 +28649,8 @@
      <li>
 
       <p><span>Navigate</span><!--DONAV iframe--> the element's
-      <span>browsing context</span> to <var title="">url</var>.</p>
+      <span>child browsing context</span> to <var
+      title="">url</var>.</p>
       
      </li>
 
@@ -28665,25 +28668,28 @@
   browsing context</span>.</p>
 
   <p>Furthermore, if the <span>active document</span> of the element's
-  <span>browsing context</span> before such a <span
+  <span>child browsing context</span> before such a <span
   title="navigate">navigation</span> was not <span>completely
   loaded</span> at the time of the new <span
   title="navigate">navigation</span>, then the <span
   title="navigate">navigation</span> must be completed with
   <span>replacement enabled</span>.</p>
 
-  <p>Similarly, if the <span>browsing context</span>'s <span>session
-  history</span> contained only one <code>Document</code> when the
-  <span>process the <code>iframe</code> attributes</span> algorithm
-  was invoked, and that was the <code>about:blank</code>
-  <code>Document</code> created when the <span>browsing context</span>
-  was created, then any <span title="navigate">navigation</span>
-  required of the user agent in that algorithm must be completed with
-  <span>replacement enabled</span>.</p> <!-- see also the note near
-  similar text for the location.assign() method -->
+  <p>Similarly, if the <span>child browsing context</span>'s
+  <span>session history</span> contained only one
+  <code>Document</code> when the <span>process the <code>iframe</code>
+  attributes</span> algorithm was invoked, and that was the
+  <code>about:blank</code> <code>Document</code> created when the
+  <span>child browsing context</span> was created, then any <span
+  title="navigate">navigation</span> required of the user agent in
+  that algorithm must be completed with <span>replacement
+  enabled</span>.</p> <!-- see also the note near similar text for the
+  location.assign() method -->
 
   </div>
 
+  <!-- END of section that's very similar to <frame> -->
+
   <p class="note">If, when the element is created, the <code
   title="attr-iframe-srcdoc">srcdoc</code> attribute is not set, and
   the <code title="attr-iframe-src">src</code> attribute is either
@@ -117301,25 +117307,116 @@
   browsing context</span> similar to the <code>iframe</code> element,
   but rendered within a <code>frameset</code> element.</p>
 
-  <p>When the browsing context is created, if a <code
-  title="attr-frame-src">src</code> attribute is present, the user
-  agent must <span title="resolve a url">resolve</span> the value of
-  that attribute, relative to the element, and if that is successful,
-  must then <span>navigate</span><!--DONAV frame--> the element's
-  browsing context to the resulting <span>absolute URL</span>, with
-  <span>replacement enabled</span>, and with the <code>frame</code>
-  element's document's <span>browsing context</span> as the
-  <span>source browsing context</span>.</p>
+  <!-- START of section that's very similar to <iframe> -->
 
-  <p>Whenever the <code title="attr-frame-src">src</code> attribute is
-  set, the user agent must <span title="resolve a url">resolve</span>
-  the value of that attribute, relative to the element, and if that is
-  successful, the nested <span>browsing context</span> must be <span
-  title="navigate">navigated</span><!--DONAV frame--> to the resulting
-  <span>absolute URL</span>, with the <code>frame</code> element's
+  <p>A <code>frame</code> element is said to be an <dfn>active
+  <code>frame</code> element</dfn> when it is <span>in a
+  <code>Document</code></span> and its <span>parent element</span>, if
+  any, is a <code>frameset</code> element.</p>
+
+  <p>When a <code>frame</code> element is created as an <span>active
+  <code>frame</code> element</span>, or becomes a <span>active
+  <code>frame</code> element</span> after not having been one, the
+  user agent must create a <span>nested browsing context</span>, and
+  then <span>process the <code>frame</code> attributes</span> for the
+  first time.</p>
+
+  <p>When a <code>frame</code> element stops being an <span>active
+  <code>frame</code> element</span>, the user agent must <span
+  title="a browsing context is discarded">discard</span> the
+  <span>nested browsing context</span>.</p>
+
+  <p>Whenever a <code>frame</code> element with a <span>nested
+  browsing context</span> has its <code
+  title="attr-frame-src">src</code> attribute set, changed, or
+  removed, the user agent must <span>process the <code>frame</code>
+  attributes</span>.</p> <!-- It doesn't happen when the base URL is
+  changed, though. -->
+
+  <p>When the user agent is to <dfn>process the <code>frame</code>
+  attributes</dfn>, it must run the first appropriate steps from the
+  following list:</p>
+
+  <dl class="switch">
+
+   <dt>If the element has no <code
+   title="attr-frame-src">src</code> attribute specified, and the
+   user agent is processing the <code>frame</code>'s attributes for
+   the first time</dt>
+
+   <dd>
+
+    <p><span>Queue a task</span> to <span>fire a simple event</span>
+    named <code title="event-load">load</code> at the
+    <code>frame</code> element.</p>
+
+   </dd>
+
+   <dt>Otherwise</dt>
+
+   <dd>
+
+    <ol>
+
+     <li>
+
+      <p>If the value of the <code title="attr-frame-src">src</code>
+      attribute is the empty string, let <var title="">url</var> be
+      the string "<code>about:blank</code>".</p>
+
+      <p>Otherwise, <span title="resolve a url">resolve</span> the
+      value of the <code title="attr-frame-src">src</code> attribute,
+      relative to the <code>frame</code> element.</p>
+
+      <p>If that is not successful, then let <var title="">url</var>
+      be the string "<code>about:blank</code>". Otherwise, let <var
+      title="">url</var> be the resulting <span>absolute
+      URL</span>.</p>
+
+     </li>
+
+     <li>
+
+      <p><span>Navigate</span><!--DONAV frame--> the element's
+      <span>child browsing context</span> to <var
+      title="">url</var>.</p>
+      
+     </li>
+
+    </ol>
+
+   </dd>
+
+  </dl>
+
+  <p>Any <span title="navigate">navigation</span> required of the user
+  agent in the <span>process the <code>frame</code> attributes</span>
+  algorithm must be completed as an <span>explicit self-navigation
+  override</span> and with the <code>frame</code> element's
   document's <span>browsing context</span> as the <span>source
   browsing context</span>.</p>
 
+  <p>Furthermore, if the <span>active document</span> of the element's
+  <span>child browsing context</span> before such a <span
+  title="navigate">navigation</span> was not <span>completely
+  loaded</span> at the time of the new <span
+  title="navigate">navigation</span>, then the <span
+  title="navigate">navigation</span> must be completed with
+  <span>replacement enabled</span>.</p>
+
+  <p>Similarly, if the <span>child browsing context</span>'s
+  <span>session history</span> contained only one
+  <code>Document</code> when the <span>process the <code>frame</code>
+  attributes</span> algorithm was invoked, and that was the
+  <code>about:blank</code> <code>Document</code> created when the
+  <span>child browsing context</span> was created, then any <span
+  title="navigate">navigation</span> required of the user agent in
+  that algorithm must be completed with <span>replacement
+  enabled</span>.</p> <!-- see also the note near similar text for the
+  location.assign() method -->
+
+  <!-- END of section that's very similar to <iframe> -->
+
   <p>When the browsing context is created, if a <code
   title="attr-frame-name">name</code> attribute is present, the
   <span>browsing context name</span> must be set to the value of this




More information about the Commit-Watchers mailing list