HTML Standard Tracker

Diff (omit for latest revision)
Filter

Short URL: http://html5.org/r/7290-7340

File a bug

SVNBugCommentTime (UTC)
729117261[Gecko] [Internet Explorer] [Opera] [Webkit] Whitelist another scheme.2012-08-28 18:54
729217814Add example showing bidi in placeholder=''2012-08-28 21:20
7293Fix some typos or copypasta.2012-08-29 03:40
729417547[Gecko] [Internet Explorer] [Opera] [Webkit] Add ssh and sip to the whitelist.2012-08-29 03:42
729518623Fix some editorial issues for WebSockets2012-08-29 18:22
729615992This is all Anne's fault.2012-08-29 18:55
7297[Gecko] [Internet Explorer] [Opera] [Webkit] Cleanup of the 'potentially CORS-enabled fetch' algorithm to actually make sense.2012-08-29 20:29
7298Fix some cross-reference issues.2012-08-29 21:55
7299[Gecko] [Internet Explorer] [Opera] [Webkit] Try to make aborting parsing and regular ending of parsing slightly more similar. Also, emphasise the importance of stress in the definition of <em>. (Sorry for the mixed checkin.)2012-08-30 17:46
7300[Gecko] [Internet Explorer] [Opera] [Webkit] It doesn't make any sense, but browsers make :enabled/:disabled apply to <input type=hidden>, so, oh well.2012-08-30 17:58
730117612Clean up some IDL and be more consistent with Web IDL.2012-08-30 19:03
7302Be more consistent with WebIDL.2012-08-30 19:05
730316577Remove obsolete sentence.2012-08-30 19:07
7304[Gecko] [Internet Explorer] [Opera] [Webkit] Fix an infinite loop. There's no interop here, really, so I tried to find a compromise between what browsers do and keeping the requirements sane and simple. Tests at: http://www.hixie.ch/tests/adhoc/dom/level0/document/open/unload/ -- See also IRC ranting starting at http://krijnhoetmer.nl/irc-logs/whatwg/20120831#l-67 and ending at http://krijnhoetmer.nl/irc-logs/whatwg/20120901#l-1402012-08-31 23:46
730516138forgot to fix the index (again) when removing form='' from <progress> and <meter>.2012-08-31 23:50
730617432Fix some typos or copypasta.2012-08-31 23:57
730717194Clean up the Collections section, e.g. avoid the normatively-significant word 'represents'.2012-09-01 00:10
730817604Fix some cross-reference issues.2012-09-01 00:12
730918021Clarify that the second sentence doesn't override the first.2012-09-01 00:17
7310Try to hand-wave in a slightly different manner. Also, update the section describing the forks.2012-09-03 16:16
7311update fork section2012-09-04 18:33
731216573Try to make eseidel happier2012-09-04 22:51
731317982[Gecko] [Internet Explorer] [Opera] [Webkit] Add media queries to the list of things that seamless='' tries to proxy.2012-09-04 22:57
731415035Try to clarify the 'bounding box' stuff for seamless.2012-09-04 23:09
7315[Gecko] [Internet Explorer] [Opera] [Webkit] Drop addElement() since Gecko doesn't implement it right and nobody implements it at all.2012-09-05 16:34
7316Fix some typos or copypasta.2012-09-05 16:39
7317Change the way this is recommended so that UAs on platforms without an implicit submission mechanism still get encouraged to provide one, for compat reasons.2012-09-05 16:42
7318[Gecko] [Internet Explorer] [Opera] [Webkit] Allow script termination dialogs to close the page too.2012-09-05 16:48
731917015Clarify that contenteditable doesn't propagate into seamless iframes.2012-09-05 18:12
7320[Gecko] [Internet Explorer] [Opera] [Webkit] Update HTMLCollection section in preparation for bug 18784; fix iframe load event delay for bug 17680.2012-09-05 21:01
732117215I don't really understand why this is an improvement, but in the interests of avoiding unnecessary forking...2012-09-06 15:29
732216824Provide a hook for other specs.2012-09-06 15:38
732316099Explain why gopher isn't on the list2012-09-06 15:49
7324[Gecko] [Internet Explorer] [Opera] [Webkit] Attempt to slightly more closely align with reality.2012-09-07 04:02
7325Remove an unnecessary and confusing conformance statement.2012-09-07 04:07
7326[Gecko] [Internet Explorer] [Opera] [Webkit] <track> loading algorithm updates (part 1)2012-09-07 21:52
7327[Gecko] [Internet Explorer] [Opera] [Webkit] Reform the processing model around loading of text tracks to solve a number of problems: what happens when there's no media element parent, how to make sure we pick the right text track when there's a user preference, and some race conditions2012-09-11 21:59
7328[Gecko] [Internet Explorer] [Opera] [Webkit] Make text track cues more forgiving: drop the concept of cues being 'associated' with something, and make .snapToLines and .line allow invalid values and just have those be ignored in the rendering.2012-09-11 22:49
732917235[Gecko] [Internet Explorer] [Opera] [Webkit] Avoid firing enter/exit events on cues that have just been introduced, e.g. when a track is enabled, since that's just crazy.2012-09-11 23:23
733016915[Gecko] [Internet Explorer] [Opera] [Webkit] Change TextTrackCue.line to expose the raw value rather than the computed value. There's no way to get the computed value now.2012-09-11 23:33
733116076Fix an example to use the new API.2012-09-11 23:40
733216884[Gecko] [Internet Explorer] [Opera] [Webkit] Use the entry script's document instead of the media element's, since there's not necessarily a media element.2012-09-11 23:50
7333old ref update2012-09-12 00:03
733417642Mention ISO 8601 in the 'week' section. This is a note, since it's non-normative but the statement could be confused as normative if it wasn't made a note. Also, it's qualified, because I'm not sure it's 100% true for dates before the introduction of the Gregorian calendar (it's proleptic, but I can't find any evidence that ISO8601's weeks are too, and wikipedia says ISO8601 isn't proleptic in general unless you have prior agreement as we do here). Also, it's different from the recent edit to the W3C spec for the same issue because the W3C one breaks the editorial convention used in this spec that avoids having references in sentences. Wow that's a long checkin comment for such a minor issue.2012-09-12 00:17
7335Broken topic labels2012-09-12 00:19
733617639Clarify that the month of a yearless date is a Gregorian month, and the date from such a month. The date itself, of course, isn't in the Gregorian calendar, since there's no year.2012-09-12 00:28
733717580Consistency2012-09-12 00:33
7338[Gecko] [Internet Explorer] [Opera] [Webkit] Fix the handling of default='' in automatic text track selection2012-09-12 07:17
733917319[Gecko] [Internet Explorer] [Opera] [Webkit] Fix the order of cues to handle dynamic changes better.2012-09-12 07:19
734016083Make this more consistent with other prose, for clarity.2012-09-12 07:21
Index: source
===================================================================
--- source	(revision 7290)
+++ source	(revision 7340)
@@ -145,11 +145,16 @@
    <li>The W3C HTML specification does not include this section.</li>
 
    <li>The W3C HTML specification lacks some of the fixes made to this
-   specification since late June 2012. (Specifically, after <a
+   specification since late June 2012. Specifically, after <a
    href="http://html5.org/tools/web-apps-tracker?from=7147">revision
    r7148</a> changes were only adopted into the W3C HTML specification
-   on a piecemeal basis.) No precise list of these difference
-   currently exists.</li>
+   on a piecemeal basis. An <a
+   href="https://github.com/w3c/html/compare/master...feature;whatwg">approximate
+   list of fixes that have not been included in the W3C
+   specification</a> is available. (There is also <a
+   href="https://github.com/w3c/html/compare/feature/whatwg...master">a
+   list of changes that have been made to the W3C version since
+   r7148</a>.)</li>
 
    <li>The W3C HTML specification refers to the technology as HTML5,
    rather than just HTML.</li><!--VERSION-->
@@ -162,9 +167,12 @@
    publication policies</a>.</li>
 -->
 
-   <li>The W3C HTML specification omits an example as part of a
-   compromise intended to resolve larger issues of divergence between
-   the specifications.</li>
+   <li>The W3C HTML specification omits an example that references the
+   schema.org microdata vocabulary as part of a compromise intended to
+   resolve larger issues of divergence between the specifications.
+   (Many other examples that reference schema.org and microdata are
+   included apparently without issue, however.)</li><!-- "I put a bike
+   bell on his bike." -->
 
    <li>The W3C HTML specification defines conformance for documents in
    a more traditional (version-orientated) way, because of <a
@@ -292,6 +300,16 @@
    href="http://lists.w3.org/Archives/Public/public-html/2012Jul/0250.html">a
    working group chair decision from July 2012</a>.</li>
 
+   <li>The W3C HTML specification has a different approach to topics
+   relating to registering extensibility tokens.</li> <!-- e.g.
+   different conformance criteria for validators for pragmas,
+   different text for web+, etc. I haven't fixed these yet since I
+   expect the WHATWG to switch approach at some point soon too. -->
+
+   <li>The W3C HTML specification avoids mentioning
+   <code>MouseEventInit</code>, resulting in a different definition
+   for <code>DragEventInit</code>.</li>
+
   </ul>
 
   <p>The following sections are only published in the WHATWG
@@ -2910,7 +2928,7 @@
      <li><dfn>custom request headers</dfn>
      <li><dfn>simple cross-origin request</dfn>
      <li><dfn>redirect steps</dfn>
-     <li><dfn>credential flag</dfn>
+     <li><dfn>omit credentials flag</dfn>
      <li><dfn>resource sharing check</dfn>
     </ul>
 
@@ -3121,24 +3139,23 @@
     title="">keypress</code>". The terms "name" and "type" for events
     are synonymous.</p>
 
-    <p>In addition, user agents must implement the features defined in
-    the DOM Parsing and Serialization specification, HTML
-    Editing APIs, and UndoManager and DOM Transaction specifications
-    that apply to their conformance class.
-    <a href="#refsDOMPARSING">[DOMPARSING]</a>
-    <a href="#refsEDITING">[EDITING]</a>
-    <a href="#refsUNDO">[UNDO]</a>
-    </p>
-
     <p>The following features are defined in the DOM Parsing and
     Serialization specification: <a
     href="#refsDOMPARSING">[DOMPARSING]</a></p>
 
     <ul class="brief">
-     <li><dfn title="dom-innerHTML">innerHTML</dfn></li>
-     <li><dfn title="dom-outerHTML">outerHTML</dfn></li>
+     <li><dfn title="dom-innerHTML"><code>innerHTML</code></dfn></li>
+     <li><dfn title="dom-outerHTML"><code>outerHTML</code></dfn></li>
     </ul>
 
+    <p class="note">User agents are also encouraged to implement the
+    features described in the <cite>HTML Editing APIs</cite> and
+    <cite><code>UndoManager</code> and DOM Transaction</cite>
+    specifications.
+    <a href="#refsEDITING">[EDITING]</a>
+    <a href="#refsUNDO">[UNDO]</a>
+    </p>
+
    </dd>
 
 
@@ -3292,13 +3309,13 @@
      <li><dfn><code>SVGMatrix</code></dfn>
     </ul>
 
-<!--TOPIC:HTML-->
-
     <!-- mention that the parser supports it? -->
 
    </dd>
 
 
+<!--TOPIC:HTML-->
+
    <!-- mention that the parser supports mathml? -->
 
 
@@ -3367,6 +3384,8 @@
    </dd>
 
 
+<!--TOPIC:HTML-->
+
    <dt>ARIA</dt>
 
    <dd>
@@ -5239,7 +5258,8 @@
   <h5>Yearless dates</h5>
 
   <p>A <dfn title="concept-yearless-date">yearless date</dfn> consists
-  of a month and a day, but with no associated year.</p>
+  of a Gregorian month and a day within that month, but with no
+  associated year. <a href="#refsGREGORIAN">[GREGORIAN]</a></p>
 
   <p>A string is a <dfn>valid yearless date string</dfn> representing
   a month <var title="">month</var> and a day <var title="">day</var>
@@ -6035,6 +6055,11 @@
   title="">y</var> is the week that contains the first Thursday of
   the Gregorian year <var title="">y</var>.</p>
 
+  <p class="note">For modern purposes, a <span
+  title="concept-week">week</span> as defined here is equivalent to
+  ISO weeks as defined in ISO 8601. <a
+  href="#refsISO8601">[ISO8601]</a></p>
+
   <p>A string is a <dfn>valid week string</dfn> representing a
   week-year <var title="">year</var> and week <var title="">week</var>
   if it consists of the following components in the given order:</p>
@@ -8647,11 +8672,11 @@
     <tr>
      <td><dfn title="attr-crossorigin-anonymous-keyword"><code>anonymous</code></dfn>
      <td><dfn title="attr-crossorigin-anonymous">Anonymous</dfn>
-     <td>Cross-origin CORS requests for the element will not have the <i>credentials flag</i> set.
+     <td>Cross-origin CORS requests for the element will have the <i>omit credentials flag</i> set.
     <tr>
      <td><dfn title="attr-crossorigin-use-credentials-keyword"><code>use-credentials</code></dfn>
      <td><dfn title="attr-crossorigin-use-credentials">Use Credentials</dfn>
-     <td>Cross-origin CORS requests for the element will have the <i>credentials flag</i> set.
+     <td>Cross-origin CORS requests for the element will not have the <i>omit credentials flag</i> set.
   </table>
 
   <p>The empty string is also a valid keyword, and maps to the <span
@@ -8684,17 +8709,16 @@
   <dl class="switch">
 
    <dt>If the <var title="">URL</var> has the <span>same origin</span> as <var title="">origin</var></dt>
+   <dt>If the <var title="">URL</var> is a <span title="data protocol"><code title="">data:</code> URL</span></dt>
+   <dt>If the <var title="">URL</var> is a <span title="javascript protocol"><code title="">javascript:</code> URL</span></dt>
+   <dt>If the <var title="">URL</var> is <code>about:blank</code></dt>
 
-   <dt>If <var title="">mode</var> is "<span title="attr-crossorigin-none">No CORS</span>"</dt>
-
    <dd>
 
     <p>Run these substeps:</p>
 
     <ol>
 
-     <li><p>Let <var title="">result</var> have no value.</p></li>
-
      <li><p><span>Fetch</span> <var title="">URL</var>, with the
      <i>manual redirect flag</i> set.</li> <!-- http-origin privacy
      sensitive -->
@@ -8704,86 +8728,46 @@
 
      <li>
 
-      <p>If the result of the <span>fetch</span> is a redirect, and
-      the <var title="">mode</var> is not "<span
-      title="attr-crossorigin-none">No CORS</span>", and the
-      <span>origin</span> of the target URL of the redirect is not the
-      <span>same origin</span> as <var title="">origin</var>, then set
-      <var title="">URL</var> to the the target URL of the redirect
-      and return to the top of the <span>potentially CORS-enabled
-      fetch</span> algorithm (this time, the branch below will be
-      taken, resulting in the fetch being done in a CORS-aware
-      fashion).</p>
+      <p>Follow the first appropriate steps from the following list:</p>
 
-      <p>Otherwise, if the result of the <span>fetch</span> is a
-      redirect, and <var title="">result</var> still has no value,
-      then apply the CORS <span>redirect steps</span>, with the CORS
-      <span>credential flag</span> set to true and the <i>request
-      rules</i> being that the user agent continue to follow these
-      steps. If this resumes the <span>fetch</span> algorithm, then
-      return to the <i>loop</i> step. If it failed due to a failure of
-      the CORS <span>resource sharing check</span>, then: if <var
-      title="">default</var> is <i>fail</i>, then set <var
-      title="">result</var> to <i>fail</i> and jump to the step
-      labeled <i>end</i>; if <var title="">default</var> is
-      <i>taint</i>, then set <var title="">result</var> to
-      <i>taint</i>, <span>transparently follow the redirect</span> but
-      with the <i>manual redirect flag</i> no longer set, and jump to
-      the step labeled <i>end</i> below.</p>
-
-      <p>Otherwise, if the resource is not available (e.g. there is
-      a network error) then set <var title="">result</var> to the
-      same value as <var title="">default</var>, and jump to the
-      step labeled <i>end</i> below.</p>
-
-      <p>Otherwise, perform a <span>resource sharing check</span>,
-      with the CORS <span>credential flag</span> set to true. If it
-      returns fail, then set <var title="">result</var> to the same
-      value as <var title="">default</var>; otherwise, set <var
-      title="">result</var> to <i>success</i>. Then, jump to the
-      step labeled <i>end</i> below.</p>
-
-     </li>
-
-     <li>
-
-      <p><i>End</i>: Jump to the appropriate step from the following
-      list:</p>
-
       <dl class="switch">
 
-       <dt>If <var title="">result</var> is <i>fail</i></dt>
+       <dt>If the result of the <span>fetch</span> is a redirect, and
+       the <span>origin</span> of the target URL of the redirect is
+       not the <span>same origin</span> as <var title="">origin</var></dt>
 
        <dd>
 
-        <p>Discard all fetched data and prevent any <span
-        title="concept-task">tasks</span> from the <span>fetch</span>
-        algorithm from being <span title="queue a task">queued</span>.
-        For the purposes of the calling algorithm, the user agent must
-        act as if there was a fatal network error and no resource was
-        obtained. The user agent may report a cross-origin resource
-        access failure to the user (e.g. in a debugging console).</p>
+        <p>Set <var title="">URL</var> to the the target URL of the
+        redirect and return to the top of the <span>potentially
+        CORS-enabled fetch</span> algorithm (this time, one of the
+        other branches below might be taken, based on the value of
+        <var title="">mode</var><!-- but if it's a data: or
+        javascript: URL, we'll stay here -->).</p>
 
        </dd>
 
-       <dt>If <var title="">result</var> is <i>taint</i></dt>
+       <dt>If the result of the <span>fetch</span> is a redirect</dt>
 
        <dd>
 
-        <p>The <span title="concept-task">tasks</span> from the
-        <span>fetch</span> algorithm are <span title="queue a
-        task">queued</span> normally, but for the purposes of the
-        calling algorithm, the obtained resource is
-        <span>CORS-cross-origin</span>. The user agent may report a
-        cross-origin resource access failure to the user (e.g. in a
-        debugging console).</p>
+        <p class="note">The <span>origin</span> of the target URL of
+        the redirect is the <span>same origin</span> as <var
+        title="">origin</var>.</p>
 
+        <p><span>Transparently follow the redirect</span> and jump to
+        the step labeled <i>loop</i> above.</p>
+
        </dd>
 
-       <dt>If <var title="">result</var> is <i>success</i></dt>
+       <dt>Otherwise</dt>
 
        <dd>
 
+        <p class="note">The resource is available, it is not a
+        redirect, and its <span>origin</span> is the <span>same
+        origin</span> as <var title="">origin</var>.</p>
+
         <p>The <span title="concept-task">tasks</span> from the
         <span>fetch</span> algorithm are <span title="queue a
         task">queued</span> normally, and for the purposes of the
@@ -8801,6 +8785,48 @@
    </dd>
 
 
+   <dt>If <var title="">mode</var> is "<span title="attr-crossorigin-none">No CORS</span>" and <var title="">default</var> is <i>taint</i></dt>
+
+   <dd>
+
+    <p class="note">The <var title="">URL</var> does not have the
+    <span>same origin</span> as <var title="">origin</var>.</p>
+
+    <p><span>Fetch</span> <var title="">URL</var>.</p> <!--
+    http-origin privacy sensitive -->
+
+    <p>The <span title="concept-task">tasks</span> from the
+    <span>fetch</span> algorithm are <span title="queue a
+    task">queued</span> normally, but for the purposes of the calling
+    algorithm, the obtained resource is
+    <span>CORS-cross-origin</span>. The user agent may report a
+    cross-origin resource access failure to the user (e.g. in a
+    debugging console).</p>
+
+   </dd>
+
+
+   <dt>If <var title="">mode</var> is "<span title="attr-crossorigin-none">No CORS</span>"</dt>
+
+   <dd>
+
+    <p class="note">The <var title="">URL</var> does not have the
+    <span>same origin</span> as <var title="">origin</var>, and <var
+    title="">default</var> is <i>fail</i>.</p>
+ 
+    <p>Discard any data fetched as part of this algorithm, and prevent
+    any <span title="concept-task">tasks</span> from such invocations
+    of the <span>fetch</span> algorithm from being <span title="queue
+    a task">queued</span>.
+
+    For the purposes of the calling algorithm, the user agent must act
+    as if there was a fatal network error and no resource was
+    obtained. The user agent may report a cross-origin resource access
+    failure to the user (e.g. in a debugging console).</p>
+
+   </dd>
+
+
    <dt>If <var title="">mode</var> is "<span
    title="attr-crossorigin-anonymous">Anonymous</span>" or "<span
    title="attr-crossorigin-use-credentials">Use
@@ -8808,17 +8834,19 @@
 
    <dd>
 
+    <p class="note">The <var title="">URL</var> does not have the
+    <span>same origin</span> as <var title="">origin</var>.</p>
+
     <p>Run these steps:</p>
 
     <ol>
 
      <li><p>Perform a <span>cross-origin request</span> with the
-     <i>request URL</i> set to <var title="">URL</var>, the
-     <i>source origin</i> set to <var title="">origin</var>, and the
-     <i>credentials flag</i> set to true if <var title="">mode</var>
-     is "<span title="attr-crossorigin-use-credentials">Use
-     Credentials</span>" and set to false otherwise. <a
-     href="#refsCORS">[CORS]</a></p></li>
+     <i>request URL</i> set to <var title="">URL</var>, the <i>source
+     origin</i> set to <var title="">origin</var>, and the <i>omit
+     credentials flag</i> set if <var title="">mode</var> is "<span
+     title="attr-crossorigin-anonymous">Anonymous</span>" and not set
+     otherwise. <a href="#refsCORS">[CORS]</a></p></li>
 
      <li><p>Wait for the CORS <span>cross-origin request status</span>
      to have a value.</p></li>
@@ -9122,20 +9150,20 @@
 
   <h5>HTMLAllCollection</h5>
 
-  <p>The <code>HTMLAllCollection</code> interface represents a generic
-  <span title="collections">collection</span> of elements just like
+  <p>The <code>HTMLAllCollection</code> interface is used for generic
+  <span>collections</span> of elements just like
   <code>HTMLCollection</code>, with the exception that its <code
   title="dom-HTMLAllCollection-namedItem">namedItem()</code> method
   returns an <code>HTMLAllCollection</code> object when there are
   multiple matching elements, and that its <code
   title="dom-HTMLAllCollection-item">item()</code> method can be used
   as a synonym for its <code
-  title="dom-HTMLAllCollection-namedItem">namedItem()</code>
-  method.</p>
+  title="dom-HTMLAllCollection-namedItem">namedItem()</code> method.
+  It is intended only for the legacy <code
+  title="dom-document-all">document.all</code> attribute.</p>
 
   <pre class="idl">interface <dfn>HTMLAllCollection</dfn> : <span>HTMLCollection</span> {
-  // inherits <span title="dom-HTMLCollection-length">length</span> and <span title="dom-HTMLCollection-item">item</span>(unsigned long index)
-  object? <span title="dom-HTMLAllCollection-item-string">item</span>(DOMString name);
+  // inherits <span title="dom-HTMLCollection-length">length</span> and <span title="dom-HTMLCollection-item">item</span>()
   legacycaller getter object? <span title="dom-HTMLAllCollection-namedItem">namedItem</span>(DOMString name); // overrides inherited namedItem()
   <span>HTMLAllCollection</span> <span title="dom-HTMLAllCollection-tags">tags</span>(DOMString tagName);
 };</pre>
@@ -9250,10 +9278,10 @@
 
   <h5>HTMLFormControlsCollection</h5>
 
-  <p>The <code>HTMLFormControlsCollection</code> interface represents
-  a <span title="collections">collection</span> of <span
-  title="category-listed">listed elements</span> in <code>form</code>
-  and <code>fieldset</code> elements.</p>
+  <p>The <code>HTMLFormControlsCollection</code> interface is used for
+  <span>collections</span> of <span title="category-listed">listed
+  elements</span> in <code>form</code> and <code>fieldset</code>
+  elements.</p>
 
   <pre class="idl">interface <dfn>HTMLFormControlsCollection</dfn> : <span>HTMLCollection</span> {
   // inherits <span title="dom-HTMLCollection-length">length</span> and <span title="dom-HTMLCollection-item">item</span>()
@@ -9280,6 +9308,7 @@
 
    <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLFormControlsCollection-namedItem">namedItem</code>(<var title="">name</var>)</dt>
    <dt><var title="">radioNodeList</var> = <var title="">collection</var> . <code title="dom-HTMLFormControlsCollection-namedItem">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLCollection-item">item</code>(<var title="">name</var>)</dt>
    <dt><var title="">collection</var>[<var title="">name</var>]</dt>
    <dt><var title="">collection</var>(<var title="">name</var>)</dt>
    <dd>
@@ -9395,10 +9424,10 @@
 
   <h5>HTMLOptionsCollection</h5>
 
-  <p>The <code>HTMLOptionsCollection</code> interface represents a
-  list of <code>option</code> elements. It is always rooted on a
-  <code>select</code> element and has attributes and methods that
-  manipulate that element's descendants.</p>
+  <p>The <code>HTMLOptionsCollection</code> interface is used for
+  <span>collections</span> of <code>option</code> elements. It is
+  always rooted on a <code>select</code> element and has attributes
+  and methods that manipulate that element's descendants.</p>
 
   <pre class="idl">interface <dfn>HTMLOptionsCollection</dfn> : <span>HTMLCollection</span> {
   // inherits <span title="dom-HTMLCollection-item">item</span>()
@@ -9428,6 +9457,7 @@
 
    <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLOptionsCollection-namedItem">namedItem</code>(<var title="">name</var>)</dt>
    <dt><var title="">nodeList</var> = <var title="">collection</var> . <code title="dom-HTMLOptionsCollection-namedItem">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLCollection-item">item</code>(<var title="">name</var>)</dt>
    <dt><var title="">collection</var>[<var title="">name</var>]</dt>
    <dt><var title="">collection</var>(<var title="">name</var>)</dt>
    <dd>
@@ -9645,16 +9675,13 @@
 
   </div>
 
-<!--END w3c-html--><!--MD-->
-  <div data-component="HTML Microdata (editor: Ian Hickson)"><!--TOPIC:Microdata-->
-<!--START microdata-->
-<!--FIXUP microdata -1-->
+
+<!--TOPIC:Microdata-->
   <h5>HTMLPropertiesCollection</h5>
-<!--FIXUP microdata +1-->
 
-  <p>The <code>HTMLPropertiesCollection</code> interface represents a
-  <span title="collections">collection</span> of elements that add
-  name-value pairs to a particular <span
+  <p>The <code>HTMLPropertiesCollection</code> interface is used for
+  <span>collections</span> of elements that add <span title="the
+  properties of an item">name-value pairs</span> to a particular <span
   title="concept-item">item</span> in the <span>microdata</span>
   model.</p>
 
@@ -9684,6 +9711,7 @@
    </dd>
 
    <dt><var title="">propertyNodeList</var> = <var title="">collection</var> . <code title="dom-HTMLPropertiesCollection-namedItem">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLCollection-item">item</code>(<var title="">name</var>)</dt>
    <dd>
     <p>Returns a <code>PropertyNodeList</code> object containing any elements that add a property named <var title="">name</var>.</p>
    </dd>
@@ -9751,8 +9779,6 @@
   order</span>.</p>
 
   </div>
-<!--END microdata-->
-  </div><!--data-component-->
 
 
 <!--TOPIC:DOM APIs-->
@@ -14738,7 +14764,16 @@
 
   <div class="impl">
 
-  <p>When called with two or fewer arguments, the method must act as
+  <p><code>Document</code> objects have an
+  <dfn>ignore-opens-during-unload counter</dfn>, which is used to
+  prevent scripts from invoking the <code
+  title="dom-document-open">document.open()</code> method (directly or
+  indirectly) while the document is <span title="unload a
+  document">being unloaded</span>. Initially, the counter must be set
+  to zero.</p> <!-- http://www.hixie.ch/tests/adhoc/dom/level0/document/open/unload/ -->
+
+  <p>When called with two or fewer arguments, the <code
+  title="dom-document-open">document.open()</code> method must act as
   follows:</p>
 
   <ol>
@@ -14758,13 +14793,13 @@
 
    <li>
 
-    <p>If the document has an <span>active parser</span> that isn't a
-    <span>script-created parser</span>, and the <span>insertion
-    point</span> associated with that parser's <span>input
-    stream</span> is not undefined (that is, it <em>does</em> point to
-    somewhere in the input stream), then the method does
-    nothing. Abort these steps and return the <code>Document</code>
-    object on which the method was invoked.</p>
+    <p>If the <code>Document</code> has an <span>active parser</span>
+    that isn't a <span>script-created parser</span>, and the
+    <span>insertion point</span> associated with that parser's
+    <span>input stream</span> is not undefined (that is, it
+    <em>does</em> point to somewhere in the input stream), then the
+    method does nothing. Abort these steps and return the
+    <code>Document</code> object on which the method was invoked.</p>
 
     <p class="note">This basically causes <code
     title="dom-document-open">document.open()</code> to be ignored
@@ -14775,6 +14810,24 @@
 
    </li>
 
+   <li>
+
+    <p>Similarly, if the <code>Document</code>'s
+    <span>ignore-opens-during-unload counter</span> is greater than
+    zero, then the method does nothing. Abort these steps and return
+    the <code>Document</code> object on which the method was
+    invoked.</p>
+
+    <p class="note">This basically causes <code
+    title="dom-document-open">document.open()</code> to be ignored
+    when it's called from a <code
+    title="event-beforeunload">beforeunload</code> <code
+    title="event-pagehide">pagehide</code>, or <code
+    title="event-unload">unload</code> event handler while the
+    <code>Document</code> is being unloaded.</p>
+
+   </li>
+
    <li><p>Release the <span>storage mutex</span>.</p></li>
 
    <li><p>Set the <code>Document</code>'s <var
@@ -14784,7 +14837,8 @@
    <li><p><span title="prompt to unload a document">Prompt to
    unload</span> the <code>Document</code> object. If the user
    <span>refused to allow the document to be unloaded</span>, then
-   these steps must be aborted.</p></li>
+   abort these steps and return the <code>Document</code> object on
+   which the method was invoked.</p></li>
 
    <li><p><span title="unload a document">Unload</span> the
    <code>Document</code> object, with the <var title="">recycle</var>
@@ -15066,9 +15120,11 @@
 
    <li>
 
-    <p>If the <span>insertion point</span> is undefined and the
-    <code>Document</code>'s <span>ignore-destructive-writes
-    counter</span> is greater than zero, then abort these steps.</p>
+    <p>If the <span>insertion point</span> is undefined and either the
+    <code>Document</code>'s <span>ignore-opens-during-unload
+    counter</span> is greater than zero or the <code>Document</code>'s
+    <span>ignore-destructive-writes counter</span> is greater than
+    zero, abort these steps.</p>
 
    </li>
 
@@ -17381,9 +17437,9 @@
 
   <div class="example">
 
-   <p>The following document has its emphasis styled as bright red
-   text rather than italics text, while leaving titles of works and
-   Latin words in their default italics. It shows how using
+   <p>The following document has its stress emphasis styled as bright
+   red text rather than italics text, while leaving titles of works
+   and Latin words in their default italics. It shows how using
    appropriate elements enables easier restyling of documents.</p>
 
    <pre>&lt;!DOCTYPE html>
@@ -19635,7 +19691,7 @@
   &lt;h1 itemprop="headline">The Very First Rule of Life&lt;/h1>
   &lt;p>&lt;time itemprop="datePublished" datetime="2009-10-09">3 days ago&lt;/time>&lt;/p>
   &lt;link itemprop="url" href="?comments=0">
- &lt;/header>[
+ &lt;/header>
  &lt;p>If there's a microphone anywhere near you, assume it's hot and
  sending whatever you're saying to the world. Seriously.&lt;/p>
  &lt;p><em>...</em>&lt;/p>
@@ -22704,18 +22760,18 @@
   <p>The <code>em</code> element <span>represents</span> stress
   emphasis of its contents.</p>
 
-  <p>The level of emphasis that a particular piece of content has is
+  <p>The level of stress that a particular piece of content has is
   given by its number of ancestor <code>em</code> elements.</p>
 
-  <p>The placement of emphasis changes the meaning of the sentence.
-  The element thus forms an integral part of the content. The precise
-  way in which emphasis is used in this way depends on the
+  <p>The placement of stress emphasis changes the meaning of the
+  sentence. The element thus forms an integral part of the content.
+  The precise way in which stress is used in this way depends on the
   language.</p>
 
   <div class="example">
 
-   <p>These examples show how changing the emphasis changes the
-   meaning. First, a general statement of fact, with no emphasis:</p>
+   <p>These examples show how changing the stress emphasis changes the
+   meaning. First, a general statement of fact, with no stress:</p>
 
    <pre>&lt;p>Cats are cute animals.&lt;/p></pre>
 
@@ -22725,8 +22781,8 @@
 
    <pre>&lt;p>&lt;em>Cats&lt;/em> are cute animals.&lt;/p></pre>
 
-   <p>Moving the emphasis to the verb, one highlights that the truth
-   of the entire sentence is in question (maybe someone is saying cats
+   <p>Moving the stress to the verb, one highlights that the truth of
+   the entire sentence is in question (maybe someone is saying cats
    are not cute):</p>
 
    <pre>&lt;p>Cats &lt;em>are&lt;/em> cute animals.&lt;/p></pre>
@@ -22744,7 +22800,7 @@
 
    <p>By emphasizing the entire sentence, it becomes clear that the
    speaker is fighting hard to get the point across. This kind of
-   emphasis also typically affects the punctuation, hence the
+   stress emphasis also typically affects the punctuation, hence the
    exclamation mark here.</p>
 
    <pre>&lt;p>&lt;em>Cats are cute animals!&lt;/em>&lt;/p></pre>
@@ -25594,9 +25650,10 @@
  &lt;/ins>
 &lt;/aside></pre>
 
-   <p>As does this, because everything in the <code>aside</code>
-   element here counts as <span>phrasing content</span> and therefore
-   there is just one <span>paragraph</span>:</p>
+   <p>As does the following, because everything in the
+   <code>aside</code> element here counts as <span>phrasing
+   content</span> and therefore there is just one
+   <span>paragraph</span>:</p>
 
    <pre>&lt;aside>
  &lt;ins>
@@ -26155,13 +26212,13 @@
   <p>When an <code>img</code> element is either in the <span
   title="img-inc">partially available</span> state or in the <span
   title="img-all">completely available</span> state, it is said to be
-  <dfn title="img-yes">available</dfn>.</p>
+  <dfn title="img-available">available</dfn>.</p>
 
   <p>An <code>img</code> element is initially <span
   title="img-none">unavailable</span>.</p>
 
   <p>When an <code>img</code> element is <span
-  title="img-yes">available</span>, it <span>provides a paint
+  title="img-available">available</span>, it <span>provides a paint
   source</span> whose width is the image's intrinsic width, whose
   height is the image's intrinsic height, and whose appearance is the
   intrinsic appearance of the image.</p>
@@ -26276,10 +26333,10 @@
 
    <li><p>Let <var title="">key</var> be a tuple consisting of the
    resulting <span>absolute URL</span>, the <code>img</code> element's
-   <code title="attr-crossorigin">crossorigin</code> attribute's mode,
-   and, if that mode is not <span title="attr-crossorigin-none">No
-   CORS</span>, the <code>Document</code> object's
-   <span>origin</span>.</p></li>
+   <code title="attr-img-crossorigin">crossorigin</code> attribute's
+   mode, and, if that mode is not <span
+   title="attr-crossorigin-none">No CORS</span>, the
+   <code>Document</code> object's <span>origin</span>.</p></li>
 
    <li><p>If the <span>list of available images</span>, contains an
    entry for <var title="">key</var>, then set the <code>img</code>
@@ -26867,9 +26924,9 @@
     the content, redundant with some other information in the
     document.</p>
 
-    <p>If the image is <span title="img-yes">available</span> and the
-    user agent is configured to display that image, then the element
-    <span>represents</span> the element's image data.</p>
+    <p>If the image is <span title="img-available">available</span>
+    and the user agent is configured to display that image, then the
+    element <span>represents</span> the element's image data.</p>
 
     <p>Otherwise, the element <span>represents</span> nothing, and may
     be omitted completely from the rendering. User agents may provide
@@ -26888,9 +26945,9 @@
     title="attr-img-alt">alt</code> attribute gives a textual
     equivalent or replacement for the image.</p>
 
-    <p>If the image is <span title="img-yes">available</span> and the
-    user agent is configured to display that image, then the element
-    <span>represents</span> the element's image data.</p>
+    <p>If the image is <span title="img-available">available</span>
+    and the user agent is configured to display that image, then the
+    element <span>represents</span> the element's image data.</p>
 
     <p>Otherwise, the element <span>represents</span> the text given
     by the <code title="attr-img-alt">alt</code> attribute. User
@@ -26912,9 +26969,9 @@
     is a key part of the content but that a textual replacement for
     the image was not available when the image was generated.</p>
 
-    <p>If the image is <span title="img-yes">available</span> and the
-    user agent is configured to display that image, then the element
-    <span>represents</span> the element's image data.</p>
+    <p>If the image is <span title="img-available">available</span>
+    and the user agent is configured to display that image, then the
+    element <span>represents</span> the element's image data.</p>
 
     <p>Otherwise, the user agent should display some sort of indicator
     that there is an image that is not being rendered, and may, if
@@ -28688,12 +28745,13 @@
   fired at the <code>iframe</code> element when it is created if no
   other data is loaded in it.</p>
 
-  <p>When there is an <span>active parser</span> in the
-  <code>iframe</code>, and when anything in the <code>iframe</code> is
-  <span title="delay the load event">delaying the load event</span> of
-  the <code>iframe</code>'s <span>browsing context</span>'s
-  <span>active document</span>, the <code>iframe</code> must
-  <span>delay the load event</span> of its document.</p>
+  <p>When the <code>iframe</code>'s <span>active document</span> is
+  not <span>ready for post-load tasks</span>, and when anything in the
+  <code>iframe</code> is <span title="delay the load event">delaying
+  the load event</span> of the <code>iframe</code>'s <span>browsing
+  context</span>'s <span>active document</span>, the
+  <code>iframe</code> must <span>delay the load event</span> of its
+  document.</p>
 
   <p class="note">If, during the handling of the <code
   title="event-load">load</code> event, the <span>browsing
@@ -28883,25 +28941,50 @@
   indicates that the <code>iframe</code> element's <span>browsing
   context</span> is to be rendered in a manner that makes it appear to
   be part of the containing document (seamlessly included in the
-  parent document). <span class="impl">Specifically, when the
-  attribute is set on an <code>iframe</code> element whose owner
-  <code>Document</code>'s <span>active sandboxing flag set</span> does
-  not have the <span>sandboxed seamless iframes flag</span> set, and
-  while either the <span>browsing context</span>'s <span>active
-  document</span> has the <span>same origin</span> as the
-  <code>iframe</code> element's document, or the <span>browsing
-  context</span>'s <span>active document</span>'s <em><span title="the
-  document's address">address</span></em> has the <span>same
-  origin</span> as the <code>iframe</code> element's document, or the
-  <span>browsing context</span>'s <span>active document</span> is
-  <span>an <code>iframe</code> <code
-  title="attr-iframe-srcdoc">srcdoc</code> document</span>, the
-  following requirements apply:</span></p>
+  parent document).</p>
 
   <div class="impl">
 
+  <p>An <code>iframe</code> element is said to be <dfn>in seamless
+  mode</dfn> when all of the following conditions are met:</p>
+
   <ul>
 
+   <li>The <code title="attr-iframe-seamless">seamless</code>
+   attribute is set on the <code>iframe</code> element, and
+
+   <li>The <code>iframe</code> element's owner <code>Document</code>'s
+   <span>active sandboxing flag set</span> does not have the
+   <span>sandboxed seamless iframes flag</span> set, and
+
+   <li>Either:
+
+    <ul>
+
+     <li>The <span>browsing context</span>'s <span>active
+     document</span> has the <span>same origin</span> as the
+     <code>iframe</code> element's <code>Document</code>, or
+
+     <li>The <span>browsing context</span>'s <span>active
+     document</span>'s <em><span title="the document's
+     address">address</span></em> has the <span>same origin</span> as
+     the <code>iframe</code> element's <code>Document</code>, or
+
+     <li>The <span>browsing context</span>'s <span>active
+     document</span> is <span>an <code>iframe</code> <code
+     title="attr-iframe-srcdoc">srcdoc</code> document</span>.
+
+    </ul>
+
+   </li>
+
+  </ul>
+
+  <p>When an <code>iframe</code> element is <span>in seamless
+  mode</span>, the following requirements apply:</p>
+
+  <ul>
+
    <li><p>The user agent must set the <dfn>seamless browsing context
    flag</dfn> to true for that <span>browsing context</span>. This
    will <a href="#seamlessLinks">cause links to open in the parent
@@ -28909,6 +28992,16 @@
    override</span> is used (<code
    title="">target="_self"</code>).</p></li>
 
+   <li><p>Media queries in the context of the <code>iframe</code>'s
+   <span>browsing context</span> (e.g. on <code
+   title="attr-style-media">media</code> attributes of
+   <code>style</code> elements in <code>Document</code>s in that
+   <code>iframe</code>) must be evaluated with respect to the nearest
+   <span>ancestor browsing context</span> that is not itself being
+   <span title="browsing context nested through">nested through</span>
+   an <code>iframe</code> that is <span>in seamless
+   mode</span>. <a href="#refsMQ">[MQ]</a></p></li>
+
    <li><p>In a CSS-supporting user agent: the user agent must add all
    the style sheets that apply to the <code>iframe</code> element to
    the cascade of the <span>active document</span> of the
@@ -28938,12 +29031,14 @@
 
    <li><p>In visual media, in a CSS-supporting user agent: the user
    agent should set the intrinsic height of the <code>iframe</code> to
-   the height of the bounding box around the content rendered in the
+   the shortest height that would make the content rendered in the
    <code>iframe</code> at its current width (as given in the previous
-   bullet point), as it would be if the scrolling position was such
-   that the top of the viewport for the content rendered in the
-   <code>iframe</code> was aligned with the origin of that content's
-   canvas.</p></li>
+   bullet point) have no scrollable overflow at its bottom edge<!--,
+   if the scrolling position was such that the top of the viewport for
+   the content rendered in the <code>iframe</code> was aligned with
+   the origin of that content's canvas-->. Scrollable overflow is any
+   overflow that would increase the range to which a scrollbar or
+   other scrolling mechanism can scroll.</p></li>
 
    <li>
 
@@ -29018,6 +29113,11 @@
 
   </div>
 
+  <p class="note">The <code
+  title="attr-contenteditable">contenteditable</code> attribute does
+  not propagate into <code
+  title="attr-iframe-seamless">seamless</code>
+  <code>iframe</code>s.</p>
 
   <hr>
 
@@ -30629,11 +30729,10 @@
   format.</p>
 
   <p>The <code>video</code> element also <span>represents</span> any
-  <span title="text track cue">text track cues</span> whose
-  <span>text track cue active flag</span> is set and whose
-  <span>text track</span> is in the <span title="text track
-  showing">showing</span> or <span title="text track showing by
-  default">showing by default</span> modes.</p>
+  <span title="text track cue">text track cues</span> whose <span>text
+  track cue active flag</span> is set and whose <span>text
+  track</span> is in the <span title="text track
+  showing">showing</span> mode.</p>
 
   <p>In addition to the above, the user agent may provide messages to
   the user (such as "buffering", "no video loaded", "error", or more
@@ -34534,6 +34633,20 @@
 
   <hr>
 
+  <p>Each <span>media element</span> has a <span>list of newly
+  introduced cues</span>, which must be initially empty. Whenever a
+  <span>text track cue</span> is added to the <span title="text track
+  list of cues">list of cues</span> of a <span>text track</span> that
+  is in the <span>list of text tracks</span> for a <span>media
+  element</span>, that <span title="text track cue">cue</span> must be
+  added to the <span>media element</span>'s <span>list of newly
+  introduced cues</span>. Whenever a <span>text track</span> is added
+  to the <span>list of text tracks</span> for a <span>media
+  element</span>, all of the <span title="text track cue">cues</span>
+  in that <span>text track</span>'s <span title="text track list of
+  cues">list of cues</span> must be added to the <span>media
+  element</span>'s <span>list of newly introduced cues</span>.</p>
+
   <p>When the <span>current playback position</span> of a <span>media
   element</span> changes (e.g. due to playback or seeking), the user
   agent must run the following steps. If the <span>current playback
@@ -34551,24 +34664,22 @@
    <li><p>Let <var title="">current cues</var> be a list of <span
    title="text track cue">cues</span>, initialized to contain all the
    <span title="text track cue">cues</span> of all the <span
-   title="text track hidden">hidden</span>, <span title="text track
-   showing">showing</span>, or <span title="text track showing by
-   default">showing by default</span> <span title="text track">text
-   tracks</span> of the <span>media element</span> (not the <span
-   title="text track disabled">disabled</span> ones) whose <span
-   title="text track cue start time">start times</span> are less than
-   or equal to the <span>current playback position</span> and whose
-   <span title="text track cue end time">end times</span> are greater
-   than the <span>current playback position</span>.</p></li>
+   title="text track hidden">hidden</span> or <span title="text track
+   showing">showing</span> <span title="text track">text tracks</span>
+   of the <span>media element</span> (not the <span title="text track
+   disabled">disabled</span> ones) whose <span title="text track cue
+   start time">start times</span> are less than or equal to the
+   <span>current playback position</span> and whose <span title="text
+   track cue end time">end times</span> are greater than the
+   <span>current playback position</span>.</p></li>
 
    <li><p>Let <var title="">other cues</var> be a list of <span
    title="text track cue">cues</span>, initialized to contain all the
    <span title="text track cue">cues</span> of <span title="text track
-   hidden">hidden</span>, <span title="text track
-   showing">showing</span>, and <span title="text track showing by
-   default">showing by default</span> <span title="text track">text
-   tracks</span> of the <span>media element</span> that are not
-   present in <var title="">current cues</var>.</p></li>
+   hidden">hidden</span> and <span title="text track
+   showing">showing</span> <span title="text track">text tracks</span>
+   of the <span>media element</span> that are not present in <var
+   title="">current cues</var>.</p></li>
 
    <li><p>Let <var title="">last time</var> be the <span>current
    playback position</span> at the time this algorithm was last run
@@ -34586,6 +34697,12 @@
    equal to the <span>current playback position</span>. Otherwise, let
    <var title="">missed cues</var> be an empty list.</p></li>
 
+   <li><p>Remove all the <span title="text track cue">cues</span> in
+   <var title="">missed cues</var> that are also in the <span>media
+   element</span>'s <span>list of newly introduced cues</span>, and
+   then empty the element's <span>list of newly introduced
+   cues</span>.</p></li>
+
    <li><p>If the time was reached through the usual monotonic increase
    of the <span>current playback position</span> during normal
    playback, and if the user agent has not fired a <code
@@ -34748,12 +34865,10 @@
    <li><p>Run the <span>rules for updating the text track
    rendering</span> of each of the <span title="text track">text
    tracks</span> in <var title="">affected tracks</var> that are <span
-   title="text track showing">showing</span> or <span title="text
-   track showing by default">showing by default</span>.
-   For example, for <span title="text track">text tracks</span>
-   based on <span>WebVTT</span>, the <span>rules for updating the
-   display of WebVTT text tracks</span>. <a href="#refsWEBVTT">[WEBVTT]</a>
-   </p></li>
+   title="text track showing">showing</span>. For example, for <span
+   title="text track">text tracks</span> based on <span>WebVTT</span>,
+   the <span>rules for updating the display of WebVTT text
+   tracks</span>. <a href="#refsWEBVTT">[WEBVTT]</a> </p></li>
 
   </ol>
 
@@ -36605,7 +36720,7 @@
 
   <p><dfn>Ducking</dfn> is the process of reducing the volume of one
   audio track when another audio track is playing, for example
-  occasionally reducing the volume of a the soundtrack to allow the
+  occasionally reducing the volume of a soundtrack to allow the
   viewer to hear an intermittent commentary track.</p>
 
   (add an "autoduck" attribute that reduces the volume of other media
@@ -36821,7 +36936,6 @@
      </dd>
 
      <dt><dfn title="text track showing">Showing</dfn>
-     <dt><dfn title="text track showing by default">Showing by default</dfn>
 
      <dd>
 
@@ -36844,14 +36958,6 @@
       user can navigate to any point in the <span>media
       resource</span> by selecting a cue.</p>
 
-      <p>The <span title="text track showing by default">showing by
-      default</span> state is used in conjunction with the <code
-      title="attr-track-default">default</code> attribute on
-      <code>track</code> elements to indicate that the text track was
-      enabled due to that attribute. This allows the user agent to
-      override the state if a later track is discovered that is more
-      appropriate per the user's preferences.</p>
-
      </dd>
 
     </dl>
@@ -36885,19 +36991,22 @@
   <hr>
 
   <p>Each <span>media element</span> has a <dfn>list of pending text
-  tracks</dfn>, which must initially be empty, and a
-  <dfn>blocked-on-parser</dfn> flag, which must initially be false.
-  When the user agent is required to <dfn>populate the list of pending
-  text tracks</dfn> of a <span>media element</span>, the user agent
-  must add to the element's <span>list of pending text tracks</span>
-  each <span>text track</span> in the element's <span>list of text
-  tracks</span> whose <span>text track mode</span> is not <span
-  title="text track disabled">disabled</span> and whose <span>text
-  track readiness state</span> is <!--either <span title="text track
-  not loaded">not loaded</span> or [there can't be any in the 'not
-  loaded' state that are not 'disabled']--> <span title="text track
-  loading">loading</span>.</p>
+  tracks</dfn>, which must initially be empty, a
+  <dfn>blocked-on-parser</dfn> flag, which must initially be false,
+  and a <dfn>did-perform-automatic-track-selection</dfn> flag, which
+  must also initially be false.</p>
 
+  <p>When the user agent is required to <dfn>populate the list of
+  pending text tracks</dfn> of a <span>media element</span>, the user
+  agent must add to the element's <span>list of pending text
+  tracks</span> each <span>text track</span> in the element's
+  <span>list of text tracks</span> whose <span>text track mode</span>
+  is not <span title="text track disabled">disabled</span> and whose
+  <span>text track readiness state</span> is <!--either <span
+  title="text track not loaded">not loaded</span> or [there can't be
+  any in the 'not loaded' state that are not 'disabled']--> <span
+  title="text track loading">loading</span>.</p>
+
   <p>Whenever a <code>track</code> element's parent node changes, the
   user agent must remove the corresponding <span>text track</span>
   from any <span>list of pending text tracks</span> that it is in.</p>
@@ -36913,8 +37022,9 @@
   the element's <span>blocked-on-parser</span> flag to true. When a
   <span>media element</span> is popped off the <span>stack of open
   elements</span> of an <span>HTML parser</span> or <span>XML
-  parser</span>, the user agent must <span>populate the list of
-  pending text tracks</span> and set the element's
+  parser</span>, the user agent must <span>honor user preferences for
+  automatic text track selection</span>, <span>populate the list of
+  pending text tracks</span>, and set the element's
   <span>blocked-on-parser</span> flag to false.</p>
 
   <p>The <span title="text track">text tracks</span> of a <span>media
@@ -37012,37 +37122,49 @@
     the other active tracks.</p>
 
     <p>A <span>text track cue</span> has a <dfn>text track cue
-    computed line position</dfn> whose value is defined in terms of
-    the other aspects of the cue. If the <span>text track cue line
-    position</span> is numeric, then that is the <span>text track cue
-    computed line position</span>. Otherwise, the <span>text track cue
-    line position</span> is the special value <span title="text track
-    cue automatic line position">auto</span>; if the <span>text track
-    cue snap-to-lines flag</span> of the <span>text track cue</span>
-    is not set, the <span>text track cue computed line position</span>
-    is the value 100; otherwise, it is the value returned by the
-    following algorithm:</p>
+    computed line position</dfn> whose value is that returned by the
+    following algorithm, which is defined in terms of the other
+    aspects of the cue:</p>
 
     <ol>
 
+     <li><p>If the <span>text track cue line position</span> is
+     numeric, the <span>text track cue snap-to-lines flag</span> of
+     the <span>text track cue</span> is not set, and the <span>text
+     track cue line position</span> is negative or greater than 100,
+     then return 100 and abort these steps.</p></li>
+
+     <li><p>If the <span>text track cue line position</span> is numeric,
+     return the value of the <span>text track cue line position</span>
+     and abort these steps. (Either the <span>text track cue
+     snap-to-lines flag</span> is set, so any value, not just those in
+     the range 0..100, is valid, or the value is in the range 0..100
+     and is thus valid regardless of the value of that flag.)</p></li>
+
+     <li><p>If the <span>text track cue snap-to-lines flag</span> of
+     the <span>text track cue</span> is not set, return the value 100
+     and abort these steps. (The <span>text track cue line
+     position</span> is the special value <span title="text track cue
+     automatic line position">auto</span>.)</p></li>
+
      <li><p>Let <var title="">cue</var> be the <span>text track
      cue</span>.</p></li>
 
-     <li><p>If <var title="">cue</var> is not associated with a
-     <span>text track</span>, return &#x2212;1 and abort these
-     steps.</p></li>
+     <li><p>If <var title="">cue</var> is not in a <span title="text
+     track list of cues">list of cues</span> of a <span>text
+     track</span>, or if that <span>text track</span> is not in the
+     <span>list of text tracks</span> of a <span>media element</span>,
+     return &#x2212;1 and abort these steps.</p></li>
 
      <li><p>Let <var title="">track</var> be the <span>text
-     track</span> that the <var title="">cue</var> is associated
-     with.</p></li>
+     track</span> whose <span title="text track list of cues">list of
+     cues</span> the <var title="">cue</var> is in.</p></li>
 
      <li><p>Let <var title="">n</var> be the number of <span
      title="text track">text tracks</span> whose <span>text track
-     mode</span> is <span title="text track showing">showing</span> or
-     <span title="text track showing by default">showing by
-     default</span> and that are in the <span>media element</span>'s
-     <span>list of text tracks</span> before <var
-     title="">track</var>.</p></li>
+     mode</span> is <span title="text track showing">showing</span>
+     and that are in the <span>media element</span>'s <span>list of
+     text tracks</span> before <var title="">track</var>.</p></li>
 
      <li><p>Increment <var title="">n</var> by one.</p></li>
 
@@ -37093,10 +37215,7 @@
   </dl>
 
   <p>Each <span>text track cue</span> has a corresponding
-  <code>TextTrackCue</code> object, and can be associated with a
-  particular <span>text track</span>. Once a <span>text track
-  cue</span> is associated with a particular <span>text track</span>,
-  the association is permanent. A <span>text track cue</span>'s
+  <code>TextTrackCue</code> object. A <span>text track cue</span>'s
   in-memory representation can be dynamically changed through this
   <code>TextTrackCue</code> API.</p>
 
@@ -37123,17 +37242,15 @@
     title="dom-media-readyState">readyState</code> is changed back to
     <code title="dom-media-HAVE_NOTHING">HAVE_NOTHING</code>. When the
     flag is unset in this way for one or more cues in <span
-    title="text track">text tracks</span> that were <span
-    title="text track showing">showing</span> or <span title="text
-    track showing by default">showing by default</span> prior to the
-    relevant incident, the user agent must, after having unset the
-    flag for all the affected cues, apply the <span>rules for updating
-    the text track rendering</span> of those <span title="text
-    track">text tracks</span>.
-    For example, for <span title="text track">text tracks</span>
-    based on <span>WebVTT</span>, the <span>rules for updating the
-    display of WebVTT text tracks</span>. <a href="#refsWEBVTT">[WEBVTT]</a></p>
-   </dd>
+    title="text track">text tracks</span> that were <span title="text
+    track showing">showing</span> prior to the relevant incident, the
+    user agent must, after having unset the flag for all the affected
+    cues, apply the <span>rules for updating the text track
+    rendering</span> of those <span title="text track">text
+    tracks</span>. For example, for <span title="text track">text
+    tracks</span> based on <span>WebVTT</span>, the <span>rules for
+    updating the display of WebVTT text tracks</span>. <a
+    href="#refsWEBVTT">[WEBVTT]</a></p> </dd>
 
    <dt>The <dfn title="text track cue display state">display state</dfn>
    <dd>
@@ -37154,18 +37271,20 @@
   the <span title="text track cue">cues</span> by their <span>text
   track</span>, with the groups being sorted in the same order as
   their <span title="text track">text tracks</span> appear in the
-  <span>media element</span>'s <span>list of text tracks</span>;
-  then, within each group, <span title="text track cue">cues</span>
-  must be sorted by their <span title="text track cue start
-  time">start time</span>, earliest first; then, any <span
-  title="text track cue">cues</span> with the same <span title="text
-  track cue start time">start time</span> must be sorted by their
-  <span title="text track cue end time">end time</span>, latest
-  first; and finally, any <span title="text track cue">cues</span>
-  with identical <span title="text track cue end time">end
-  times</span> must be sorted in the order they were created (so
-  e.g. for cues from a <span>WebVTT</span> file, that would be the
-  order in which the cues were listed in the file). <a href="#refsWEBVTT">[WEBVTT]</a></p>
+  <span>media element</span>'s <span>list of text tracks</span>; then,
+  within each group, <span title="text track cue">cues</span> must be
+  sorted by their <span title="text track cue start time">start
+  time</span>, earliest first; then, any <span title="text track
+  cue">cues</span> with the same <span title="text track cue start
+  time">start time</span> must be sorted by their <span title="text
+  track cue end time">end time</span>, latest first; and finally, any
+  <span title="text track cue">cues</span> with identical <span
+  title="text track cue end time">end times</span> must be sorted in
+  the order they were last added to their respective <span>text track
+  list of cues</span>, oldest first (so e.g. for cues from a
+  <span>WebVTT</span> file, that would initially be the order in which
+  the cues were listed in the file). <a
+  href="#refsWEBVTT">[WEBVTT]</a></p>
 
 
   <h6>Sourcing in-band text tracks</h6>
@@ -37205,6 +37324,10 @@
    label in that data, then the <span title="text track
    label">label</span> must be set to the empty string.</p></li>
 
+   <li><p>Associate the <span>text track list of cues</span> with the
+   <span>rules for updating the text track rendering</span>
+   appropriate for the format in question.</p>
+
    <li>
 
     <p>If the new <span>text track</span>'s <span title="text track
@@ -37307,12 +37430,9 @@
    <li><p>Set the new <span>text track</span>'s <span title="text
    track mode">mode</span> to the mode consistent with the user's
    preferences and the requirements of the relevant specification for
-   the data.</p></li>
+   the data.</p></li> <!-- it's too late to apply the normal
+   heuristic, so we don't bother -->
 
-   <li><p>Leave the <span>text track list of cues</span> empty, and
-   associate with it the <span>rules for updating the text track
-   rendering</span> appropriate for the format in question.</p>
-
    <li><p>Add the new <span>text track</span> to the <span>media
    element</span>'s <span>list of text tracks</span>.</p></li>
 
@@ -37340,6 +37460,9 @@
   of text tracks</span> all the <span title="media-resource-specific
   text track">media-resource-specific text tracks</span>.</p>
 
+  <!-- if, after in-band text tracks have been found, there's no
+  out-of-band text tracks, then apply user prefs? -->
+
   </div>
 
 
@@ -37398,6 +37521,11 @@
   <p class="note">Changes to the <span>track URL</span> are handled in
   the algorithm below.</p>
 
+  <p>The <span>text track readiness state</span> is initially <span
+  title="text track not loaded">not loaded</span>, and the <span>text
+  track mode</span> is initially <span title="text track
+  disabled">disabled</span>.</p>
+
   <p>The <span>text track list of cues</span> is initially empty. It
   is dynamically modified when the referenced file is parsed.
   Associated with the list are the <span>rules for updating the text
@@ -37433,137 +37561,185 @@
   <code title="dom-media-textTracks">textTracks</code> attribute's
   <code>TextTrackList</code> object.</p> <!-- removetrack -->
 
+  <hr>
+
   <p>When a <span>text track</span> corresponding to a
   <code>track</code> element is added to a <span>media
   element</span>'s <span>list of text tracks</span>, the user agent
-  must set the <span>text track mode</span> appropriately, as
-  determined by the following conditions:</p>
+  must <span>queue a task</span> to run the following steps for the
+  <span>media element</span>:</p>
 
-  <dl class="switch">
+  <ol>
 
-   <dt>If the <span>text track kind</span> is <code
-   title="dom-TextTrack-kind-subtitles">subtitles</code> or <code
-   title="dom-TextTrack-kind-captions">captions</code> and the user
-   has indicated an interest in having a track with this <span>text
-   track kind</span>, <span>text track language</span>, and
-   <span>text track label</span> enabled, and there is no other
-   <span>text track</span> in the <span>media element</span>'s
-   <span>list of text tracks</span> with a <span>text track
-   kind</span> of either <code
-   title="dom-TextTrack-kind-subtitles">subtitles</code> or <code
-   title="dom-TextTrack-kind-captions">captions</code> whose
-   <span>text track mode</span> is <span title="text track
-   showing">showing</span></dt>
+   <li><p>If the element's <span>blocked-on-parser</span> flag is
+   true, abort these steps.</p></li>
 
-   <dt>If the <span>text track kind</span> is <code
-   title="dom-TextTrack-kind-descriptions">descriptions</code> and
-   the user has indicated an interest in having text descriptions with
-   this <span>text track language</span> and <span>text track
-   label</span> enabled, and there is no other <span>text
-   track</span> in the <span>media element</span>'s <span>list of
-   text tracks</span> with a <span>text track kind</span> of <code
-   title="dom-TextTrack-kind-descriptions">descriptions</code> whose
-   <span>text track mode</span> is <span title="text track
-   showing">showing</span></dt>
+   <li><p>If the element's
+   <span>did-perform-automatic-track-selection</span> flag is true,
+   abort these steps.</p></li>
 
-   <dd>
-    <p>Let the <span>text track mode</span> be <span title="text
-    track showing">showing</span>.</p>
+   <li><p><span>Honor user preferences for automatic text track
+   selection</span> for this element.</p></li>
 
-    <p>If there is a <span>text track</span> in the <span>media
-    element</span>'s <span>list of text tracks</span> whose
-    <span>text track mode</span> is <span title="text track showing
-    by default">showing by default</span>, the user agent must
-    furthermore change <em>that</em> <span>text track</span>'s
-    <span>text track mode</span> to <span title="text track
+  </ol>
+
+  <p>When the user agent is required to <dfn>honor user preferences
+  for automatic text track selection</dfn> for a <span>media
+  element</span>, the user agent must run the following steps:</p>
+
+  <ol>
+
+   <li><p><span>Perform automatic text track selection</span> for <code
+   title="dom-TextTrack-kind-subtitles">subtitles</code> and <code
+   title="dom-TextTrack-kind-captions">captions</code>.</p></li>
+
+   <li><p><span>Perform automatic text track selection</span> for <code
+   title="dom-TextTrack-kind-descriptions">descriptions</code>.</p></li>
+
+   <li><p><span>Perform automatic text track selection</span> for <code
+   title="dom-TextTrack-kind-chapters">chapters</code>.</p></li>
+
+   <li><p><span>Perform automatic text track selection</span> for <code
+   title="dom-TextTrack-kind-metadata">metadata</code>.</p></li>
+
+   <li><p>Set the element's
+   <span>did-perform-automatic-track-selection</span> flag to
+   true.</p></li>
+
+  </ol>
+
+  <p>When the steps above say to <dfn>perform automatic text track
+  selection</dfn> for one or more <span title="text track kind">text
+  track kinds</span>, it means to run the following steps:</p>
+
+  <ol>
+
+   <li><p>Let <var title="">candidates</var> be a list consisting of
+   the <span title="text track">text tracks</span> in the <span>media
+   element</span>'s <span>list of text tracks</span> whose <span>text
+   track kind</span> is one of the kinds that were passed to the
+   algorithm, if any.</p></li>
+
+   <li><p>If <var title="">candidates</var> is empty, then abort these
+   steps.</p></li>
+
+   <li><p>If any of the <span title="text track">text tracks</span> in
+   <var title="">candidates</var> have a <span>text track mode</span>
+   set to <span title="text track showing">showing</span>, abort these
+   steps.</p></li>
+
+   <li>
+
+    <p>If the user has expressed an interest in having a track from
+    <var title="">candidates</var> enabled based on its <span>text
+    track kind</span>, <span>text track language</span>, and
+    <span>text track label</span>, then set its <span>text track
+    mode</span> to <span title="text track showing">showing</span>,
+    and if there are any <span title="text track">text tracks</span>
+    in <var title="">candidates</var> that correspond to
+    <code>track</code> elements with a <code
+    title="attr-track-default">default</code> attribute set whose
+    <span>text track mode</span> is set to <span title="text track
+    disabled">disabled</span>, then additionally set the <span>text
+    track mode</span> of each such track to <span title="text track
     hidden">hidden</span>.</p> <!-- so that we still get events and
     stuff: we can expect authors to forget that default doesn't mean
     that it'll always be turned on, and that they'll still rely on
     events firing even if it doesn't show -->
 
-   </dd>
+    <p class="note">For example, the user could have set a browser
+    preference to the effect of "I want French captions whenever
+    possible", or "If there is a subtitle track with 'Commentary' in
+    the title, enable it", or "If there are audio description tracks
+    available, enable one, ideally in Swiss German, but failing that
+    in Standard Swiss German or Standard German".</p>
 
-   <dt>If the <span>text track kind</span> is <code
-   title="dom-TextTrack-kind-chapters">chapters</code> and the
-   <span>text track language</span> is one that the user agent has
-   reason to believe is appropriate for the user, and there is no
-   other <span>text track</span> in the <span>media element</span>'s
-   <span>list of text tracks</span> with a <span>text track
-   kind</span> of <code
-   title="dom-TextTrack-kind-chapters">chapters</code> whose
-   <span>text track mode</span> is <span title="text track
-   showing">showing</span></dt>
+    <p>Otherwise, if there are any <span title="text track">text
+    tracks</span> in <var title="">candidates</var> that correspond to
+    <code>track</code> elements with a <code
+    title="attr-track-default">default</code> attribute set whose
+    <span>text track mode</span> is set to <span title="text track
+    disabled">disabled</span>, then set the <span>text track
+    mode</span> of each such track to <span title="text track
+    showing">showing</span>.</p>
 
-   <dd>
-    <p>Let the <span>text track mode</span> be <span title="text
-    track showing">showing</span>.</p>
-   </dd>
+   </li>
 
-   <dt>If the <code>track</code> element has a <code
-   title="attr-track-default">default</code> attribute specified, and
-   there is no other <span>text track</span> in the <span>media
-   element</span>'s <span>list of text tracks</span> whose
-   <span>text track mode</span> is <span title="text track
-   showing">showing</span> or <span title="text track
-   showing by default">showing by default</span></dt>
+  </ol>
 
-   <dd>
-    <p>Let the <span>text track mode</span> be <span title="text
-    track showing by default">showing by default</span>.</p>
-   </dd>
+  <p>When a <span>text track</span> corresponding to a
+  <code>track</code> element experiences any of the following
+  circumstances, the user agent must <span>start the
+  <code>track</code> processing model</span> for that <span>text
+  track</span> and its <code>track</code> element:
 
-   <dt>Otherwise</dt>
+  <ul>
 
-   <dd>
-    <p>Let the <span>text track mode</span> be <span title="text
-    track disabled">disabled</span>.</p>
-   </dd>
+   <li>The <code>track</code> element is created.</li>
 
-  </dl>
+   <li>The <span>text track</span> has its <span>text track
+   mode</span> changed.</li>
 
-  <p>When a <span>text track</span> corresponding to a
-  <code>track</code> element is created with <span>text track
-  mode</span> set to <span title="text track hidden">hidden</span>,
-  <span title="text track showing">showing</span>, or <span
-  title="text track showing by default">showing by default</span>,
-  and when a <span>text track</span> corresponding to a
-  <code>track</code> element is created with <span>text track
-  mode</span> set to <span title="text track
-  disabled">disabled</span> and subsequently changes its <span>text
-  track mode</span> to <span title="text track hidden">hidden</span>,
-  <span title="text track showing">showing</span>, or <span
-  title="text track showing by default">showing by default</span> for
-  the first time, the user agent must immediately and synchronously
-  run the following algorithm. This algorithm interacts closely with
-  the <span>event loop</span> mechanism; in particular, it has a
-  <span>synchronous section</span> (which is triggered as part of the
-  <span>event loop</span> algorithm). The step in that section is
-  marked with &#x231B;.</p>
+   <li>The <code>track</code> element's parent element changes and the
+   new parent is a <span>media element</span>.</li>
 
+  </ul>
+
+  <p>When a user agent is to <dfn>start the <code>track</code>
+  processing model</dfn> for a <span>text track</span> and its
+  <code>track</code> element, it must run the following algorithm.
+  This algorithm interacts closely with the <span>event loop</span>
+  mechanism; in particular, it has a <span>synchronous section</span>
+  (which is triggered as part of the <span>event loop</span>
+  algorithm). The steps in that section are marked with &#x231B;.</p>
+
   <ol>
 
-   <li><p>Set the <span>text track readiness state</span> to <span
-   title="text track loading">loading</span>.</p></li>
+   <li><p>If another occurrence of this algorithm is already running
+   for this <span>text track</span> and its <code>track</code>
+   element, abort these steps, letting that other algorithm take care
+   of this element.</p></li>
 
-   <li><p>Let <var title="">URL</var> be the <span>track URL</span> of
-   the <code>track</code> element.</p></li>
+   <li><p>If the <span>text track</span>'s <span>text track
+   mode</span> is not set to one of <span title="text track
+   hidden">hidden</span> or <span title="text track
+   showing">showing</span>, abort these steps.</p></li>
 
-   <li><p>Asynchronously run the remaining steps, while continuing
-   with whatever task was responsible for creating the <span>text
-   track</span> or changing the <span>text track
-   mode</span>.</p></li>
+   <li><p>If the <span>text track</span>'s <code>track</code> element
+   does not have a <span>media element</span> as a parent, abort these
+   steps.</p></li>
 
+   <li><p>Run the remainder of these steps asynchronously, allowing
+   whatever caused these steps to run to continue.</p></li>
+
+   <li><p><i>Top</i>: <span>Await a stable state</span>. The
+   <span>synchronous section</span> consists of the following steps.
+   (The steps in the <span>synchronous section</span> are marked with
+   &#x231B;.)</p></li>
+
+   <li><p>&#x231B; Set the <span>text track readiness state</span> to
+   <span title="text track loading">loading</span>.</p></li>
+
+   <li><p>&#x231B; Let <var title="">URL</var> be the <span>track
+   URL</span> of the <code>track</code> element.</p></li>
+
+   <li><p>&#x231B; If the <code>track</code> element's parent is a
+   <span>media element</span> then let <var title="">CORS mode</var>
+   be the state of the parent <span>media element</span>'s <code
+   title="attr-media-crossorigin">crossorigin</code> content
+   attribute. Otherwise, let <var title="">CORS mode</var> be <span
+   title="attr-crossorigin-none">No CORS</span>.</p></li>
+
+   <li><p>End the <span>synchronous section</span>, continuing the
+   remaining steps asynchronously.</p></li>
+
    <li>
 
-    <p><i>Download</i>: At this point, the text track is downloaded.</p>
-
     <p>If <var title="">URL</var> is not the empty string, perform a
     <span>potentially CORS-enabled fetch</span> of <var
-    title="">URL</var>, with the <i>mode</i> being the state of the
-    <span>media element</span>'s <code
-    title="attr-media-crossorigin">crossorigin</code> content
-    attribute, the <i title="">origin</i> being the
-    <span>origin</span> of the <span>media element</span>'s
+    title="">URL</var>, with the <i>mode</i> being <var title="">CORS
+    mode</var>, the <i title="">origin</i> being the
+    <span>origin</span> of the <code>track</code> element's
     <code>Document</code>, and the <i>default origin behaviour</i> set
     to <i>fail</i>.</p>
 
@@ -37577,14 +37753,22 @@
     algorithm</span> on the <span>networking task source</span> to
     process the data as it is being fetched must <!--<span
     title="Content-Type sniffing">-->determine the <!--sniffed--> type
-    of a the resource<!--</span>-->. If the <!--sniffed--> type of the
+    of the resource<!--</span>-->. If the <!--sniffed--> type of the
     resource is not a supported text track format, the load will fail,
     as described below. Otherwise, the resource's data must be passed
     to the appropriate parser (e.g. the <span>WebVTT parser</span><!--
     if the file starts with the "<code title="">WEBVTT</code>"
     signature-->) as it is received, with the <span>text track list of
-    cues</span> being used for that parser's output. <a href="#refsWEBVTT">[WEBVTT]</a></p>
+    cues</span> being used for that parser's output. <a
+    href="#refsWEBVTT">[WEBVTT]</a></p><!-- see also critical block
+    below, and the word "sniffed" in the paragraph after that -->
 
+    <p class="note">The appropriate parser will synchronously (during
+    these <span>networking task source</span> <span
+    title="concept-task">tasks</span>) and incrementally (as each such
+    task is run with whatever data has been received from the network)
+    update the <span>text track list of cues</span>.</p>
+
     <p class="critical">This specification does not currently say
     whether or how to check the MIME types of text tracks, or whether
     or how to perform file type sniffing using the actual file data.
@@ -37601,17 +37785,31 @@
     <p>If the <span title="fetch">fetching algorithm</span> fails for
     any reason (network error, the server returns an error code, a
     cross-origin check fails, etc), if <var title="">URL</var> is the
-    empty string, or if the sniffed type of the resource is not a
-    supported text track format, then <span>queue a task</span> to
-    first change the <span>text track readiness state</span> to <span
-    title="text track failed to load">failed to load</span> and then
-    <span>fire a simple event</span> named <code
-    title="event-error">error</code> at the <code>track</code>
-    element; and then, once that <span
-    title="concept-task">task</span> is <span title="queue a
-    task">queued</span>, move on to the step below labeled
-    <i>monitoring</i>.</p>
+    empty string, or if the <!--sniffed--> type of the resource is not a
+    supported text track format, then run these steps:</p>
 
+    <ol>
+
+     <li><p><span>Queue a task</span> to first change the <span>text
+     track readiness state</span> to <span title="text track failed to
+     load">failed to load</span> and then <span>fire a simple
+     event</span> named <code title="event-error">error</code> at the
+     <code>track</code> element.</p></li>
+
+     <li><p>Wait until the <span>text track readiness state</span> is
+     no longer set to <span title="text track
+     loading">loading</span>.</p></li>
+
+     <li><p>Wait until the <span>track URL</span> is no longer equal
+     to <var title="">URL</var>, at the same time as the <span>text
+     track mode</span> is set to <span title="text track
+     hidden">hidden</span> or <span title="text track
+     showing">showing</span>.</p></li>
+
+     <li><p>Jump to the step labeled <i>top</i>.</p></li>
+
+    </ol>
+
     <p>If the <span title="fetch">fetching algorithm</span> does not
     fail, then the final <span title="concept-task">task</span> that
     is <span title="queue a task">queued</span> by the
@@ -37629,17 +37827,23 @@
       event</span> named <code title="event-load">load</code> at the
       <code>track</code> element.</p>
 
-      <p>If the file was not successfully processed, e.g. the format
-      in question is an XML format and the file contained a
+      <p>Otherwise, the file was not successfully processed (e.g. the
+      format in question is an XML format and the file contained a
       well-formedness error that the XML specification requires be
-      detected and reported to the application, then <span>fire a
-      simple event</span> named <code title="event-error">error</code>
-      at the <code>track</code> element.</p>
+      detected and reported to the application); <span>fire a simple
+      event</span> named <code title="event-error">error</code> at the
+      <code>track</code> element.</p>
 
      </li>
 
-     <li><p>Jump to the step below labeled <i>monitoring</i>.</p></li>
+     <li><p>Wait until the <span>track URL</span> is no longer equal
+     to <var title="">URL</var>, at the same time as the <span>text
+     track mode</span> is set to <span title="text track
+     hidden">hidden</span> or <span title="text track
+     showing">showing</span>.</p></li>
 
+     <li><p>Jump back to the step labeled <i>top</i>.</p></li>
+
     </ol>
 
     <p>If, while the <span title="fetch">fetching algorithm</span> is
@@ -37650,16 +37854,13 @@
      <li>the <span>track URL</span> changes so that it is no longer
      equal to <var title="">URL</var>, while the <span>text track
      mode</span> is set to <span title="text track
-     hidden">hidden</span>, <span title="text track
-     showing">showing</span>, or <span title="text track showing by
-     default">showing by default</span>; or</li>
+     hidden">hidden</span> or <span title="text track
+     showing">showing</span>; or</li>
 
-     <li>the <span>text track mode</span> changes to <span
-     title="text track hidden">hidden</span>, <span title="text
-     track showing">showing</span>, or <span title="text track
-     showing by default">showing by default</span>, while the
-     <span>track URL</span> is not equal to <var
-     title="">URL</var></li>
+     <li>the <span>text track mode</span> changes to <span title="text
+     track hidden">hidden</span> or <span title="text track
+     showing">showing</span>, while the <span>track URL</span> is not
+     equal to <var title="">URL</var></li>
 
     </ul>
 
@@ -37669,14 +37870,12 @@
 
      <li><p>Abort the <span title="fetch">fetching algorithm</span>,
      discarding any pending <span title="concept-task">tasks</span>
-     generated by that algorithm.</p></li>
+     generated by that algorithm (and in particular, not adding any
+     cues to the <span>text track list of cues</span> after the moment
+     the URL changed).</p></li>
 
-     <li><p>Let <var title="">URL</var> be the new <span>track
-     URL</span>.</p></li>
+     <li><p>Jump back to the step labeled <i>top</i>.</p></li>
 
-     <li><p>Jump back to the top of the step labeled
-     <i>download</i>.</p></li>
-
     </ol>
 
     <p>Until one of the above circumstances occurs, the user agent
@@ -37684,35 +37883,15 @@
 
    </li>
 
-   <li><p><i>Monitoring</i>: Wait until the <span>track URL</span> is
-   no longer equal to <var title="">URL</var>, at the same time as the
-   <span>text track mode</span> is set to <span title="text track
-   hidden">hidden</span>, <span title="text track
-   showing">showing</span>, or <span title="text track showing by
-   default">showing by default</span>.</p></li>
+  </ol>
 
-   <li><p>Wait until the <span>text track readiness state</span> is
-   no longer set to <span title="text track
-   loading">loading</span>.</p></li>
+  <p>Whenever a <code>track</code> element has its <code
+  title="attr-track-src">src</code> attribute set, changed, or
+  removed, the user agent must synchronously empty the element's
+  <span>text track</span>'s <span>text track list of cues</span>.
+  (This also causes the algorithm above to stop adding cues from the
+  resource being obtained using the previously given URL, if any.)</p>
 
-   <li><p><span>Await a stable state</span>. The <span>synchronous
-   section</span> consists of the following step. (The step in the
-   <span>synchronous section</span> is marked with &#x231B;.)</p></li>
-
-   <li><p>&#x231B; Set the <span>text track readiness state</span> to
-   <span title="text track loading">loading</span>.</p></li>
-
-   <!-- if you add more, change the grammar of the sentences above to
-   be plural with respect to the number of synchronous steps (both in
-   the step above and in the intro to the whole algorithm) -->
-
-   <li><p>End the <span>synchronous section</span>, continuing the
-   remaining steps asynchronously.</p></li>
-
-   <li><p>Jump to the step labeled <i>download</i>.</p></li>
-
-  </ol>
-
   </div>
 
 
@@ -37869,6 +38048,11 @@
 
   <dl class="domintro">
 
+   <dt><var title="">textTrack</var> = <var title="">media</var> . <code title="dom-media-addTextTrack">addTextTrack</code>( <var title="">kind</var> [, <var title="">label</var> [, <var title="">language</var> ] ] )</dt>
+   <dd>
+    <p>Creates and returns a new <code>TextTrack</code> object, which is also added to the <span>media element</span>'s <span>list of text tracks</span>.</p>
+   </dd>
+
    <dt><var title="">textTrack</var> . <code title="dom-TextTrack-kind">kind</code></dt>
    <dd>
     <p>Returns the <span>text track kind</span> string.</p>
@@ -37907,7 +38091,7 @@
      </dd>
      <dt>"<code title="dom-TextTrack-showing">showing</code>"</dt>
      <dd>
-      <p>The <span>text track showing</span> and <span title="text track showing by default">showing by default</span> modes.</p>
+      <p>The <span>text track showing</span> mode.</p>
      </dd>
     </dl>
     <p>Can be set, to change the mode.</p>
@@ -37926,24 +38110,111 @@
    <dt><var title="">textTrack</var> . <code title="dom-TextTrack-addCue">addCue</code>( <var title="">cue</var> )</dt>
    <dd>
     <p>Adds the given cue to <var title="">textTrack</var>'s <span>text track list of cues</span>.</p>
-    <p>Throws an exception if the argument is associated with another <span>text track</span> or already in the list of cues.</p>
    </dd>
 
    <dt><var title="">textTrack</var> . <code title="dom-TextTrack-removeCue">removeCue</code>( <var title="">cue</var> )</dt>
    <dd>
     <p>Removes the given cue from <var title="">textTrack</var>'s <span>text track list of cues</span>.</p>
-    <p>Throws an exception if the argument is associated with another <span>text track</span> or not in the list of cues.</p>
    </dd>
 
-   <dt><var title="">textTrack</var> = <var title="">media</var> . <code title="dom-media-addTextTrack">addTextTrack</code>( <var title="">kind</var> [, <var title="">label</var> [, <var title="">language</var> ] ] )</dt>
-   <dd>
-    <p>Creates and returns a new <code>TextTrack</code> object, which is also added to the <span>media element</span>'s <span>list of text tracks</span>.</p>
-   </dd>
-
   </dl>
 
   <div class="impl">
 
+  <p>The <dfn title="dom-media-addTextTrack"><code>addTextTrack(<var
+  title="">kind</var>, <var title="">label</var>, <var
+  title="">language</var>)</code></dfn> method of <span title="media
+  element">media elements</span>, when invoked, must run the following
+  steps:</p>
+
+  <ol>
+
+   <li>
+
+    <p>If <var title="">kind</var> is not one of the following
+    strings, then throw a <code>SyntaxError</code> exception and abort
+    these steps:</p>
+
+    <ul class="brief">
+     <li><code title="dom-TextTrack-kind-subtitles">subtitles</code>
+     <li><code title="dom-TextTrack-kind-captions">captions</code>
+     <li><code title="dom-TextTrack-kind-descriptions">descriptions</code>
+     <li><code title="dom-TextTrack-kind-chapters">chapters</code>
+     <li><code title="dom-TextTrack-kind-metadata">metadata</code>
+    </ul>
+
+   </li>
+
+   <li>
+
+    <p>If the <var title="">label</var> argument was omitted, let <var
+    title="">label</var> be the empty string.</p>
+
+   </li>
+
+   <li>
+
+    <p>If the <var title="">language</var> argument was omitted, let
+    <var title="">language</var> be the empty string.</p>
+
+   </li>
+
+   <li>
+
+    <p>Create a new <code>TextTrack</code> object.</p>
+
+   </li>
+
+   <li>
+
+    <p>Create a new <span>text track</span> corresponding to the new
+    object, and set its <span>text track kind</span> to <var
+    title="">kind</var>, its <span>text track label</span> to <var
+    title="">label</var>, its <span>text track language</span> to <var
+    title="">language</var>, its <span>text track readiness
+    state</span> to the <span>text track loaded</span> state, its
+    <span>text track mode</span> to the <span>text track hidden</span>
+    mode, and its <span>text track list of cues</span> to an empty
+    list.
+    Associate the <span>text track list of cues</span> with the
+    <span>rules for updating the display of WebVTT text tracks</span>
+    as its <span>rules for updating the text track rendering</span>.
+    <a href="#refsWEBVTT">[WEBVTT]</a>
+    </p>
+
+   </li>
+
+   <li>
+
+    <p>Add the new <span>text track</span> to the <span>media
+    element</span>'s <span>list of text tracks</span>.</p>
+
+   </li>
+
+   <li>
+
+    <p><span>Queue a task</span> to fire an event with the name <code
+    title="event-addtrack">addtrack</code>, that does not bubble and
+    is not cancelable, and that uses the <code>TrackEvent</code>
+    interface, with the <code
+    title="dom-TrackEvent-track">track</code> attribute initialized to
+    the new <span>text track</span>'s <code>TextTrack</code> object,
+    at the <span>media element</span>'s <code
+    title="dom-media-textTracks">textTracks</code> attribute's
+    <code>TextTrackList</code> object.</p>
+
+   </li>
+
+   <li>
+
+    <p>Return the new <code>TextTrack</code> object.</p>
+
+   </li>
+
+  </ol>
+
+  <hr>
+
   <p>The <dfn title="dom-TextTrack-kind"><code>kind</code></dfn>
   attribute must return the <span>text track kind</span> of the
   <span>text track</span> that the <code>TextTrack</code> object
@@ -37961,7 +38232,7 @@
   represents.</p>
 
   <p>The <dfn
-  title="dom-TextTrack-inBandMetadataTrackDispatchType">inBandMetadataTrackDispatchType<code></code></dfn>
+  title="dom-TextTrack-inBandMetadataTrackDispatchType"><code>inBandMetadataTrackDispatchType</code></dfn>
   attribute must return the <span>text track in-band metadata track
   dispatch type</span> of the <span>text track</span> that the
   <code>TextTrack</code> object represents.</p>
@@ -37978,7 +38249,7 @@
    <dt>"<dfn title="dom-TextTrack-hidden"><code>hidden</code></dfn>"</dt>
    <dd>The <span>text track hidden</span> mode.</dd>
    <dt>"<dfn title="dom-TextTrack-showing"><code>showing</code></dfn>"</dt>
-   <dd>The <span>text track showing</span> and <span title="text track showing by default">showing by default</span> modes.</dd>
+   <dd>The <span>text track showing</span> mode.</dd>
   </dl>
 
   <p>On setting, if the new value isn't equal to what the attribute
@@ -38019,12 +38290,6 @@
 
   </dl>
 
-  <p class="note">If the mode is <span title="text track showing by
-  default">showing by default</span>, then there is no way to change
-  it to <span title="text track showing">showing</span> without first
-  changing it to <span title="text track disabled">disabled</span> or
-  <span title="text track hidden">hidden</span>.</p>
-
   <p>If the <span>text track mode</span> of the <span>text
   track</span> that the <code>TextTrack</code> object represents is
   not the <span>text track disabled</span> mode, then the <dfn
@@ -38068,21 +38333,10 @@
 
   <ol>
 
-   <li><p>If the given <var title="">cue</var> is already associated
-   with a <span>text track</span> other than the method's
-   <code>TextTrack</code> object's <span>text track</span>, then throw
-   an <code>InvalidStateError</code> exception and abort these
-   steps.</p></li>
+   <li><p>If the given <var title="">cue</var> is in a <span>text
+   track list of cues</span>, then remove <var title="">cue</var> from
+   that <span>text track list of cues</span>.</p></li>
 
-   <li><p>If the given <var title="">cue</var> is already listed in
-   the method's <code>TextTrack</code> object's <span>text
-   track</span>'s <span>text track list of cues</span>, then throw an
-   <code>InvalidStateError</code> exception.</p></li>
-
-   <li><p>Associate <var title="">cue</var> with the method's
-   <code>TextTrack</code> object's <span>text track</span>, if it is
-   not currently associated with a <span>text track</span>.</p></li>
-
    <li><p>Add <var title="">cue</var> to the method's
    <code>TextTrack</code> object's <span>text track</span>'s
    <span>text track list of cues</span>.</p></li>
@@ -38097,11 +38351,6 @@
 
   <ol>
 
-   <li><p>If the given <var title="">cue</var> is not associated with
-   the method's <code>TextTrack</code> object's <span>text
-   track</span>, then throw an <code>InvalidStateError</code>
-   exception.</p></li>
-
    <li><p>If the given <var title="">cue</var> is not currently listed
    in the method's <code>TextTrack</code> object's <span>text
    track</span>'s <span>text track list of cues</span>, then throw a
@@ -38113,100 +38362,6 @@
 
   </ol>
 
-  <hr>
-
-  <p>The <dfn title="dom-media-addTextTrack"><code>addTextTrack(<var
-  title="">kind</var>, <var title="">label</var>, <var
-  title="">language</var>)</code></dfn> method of <span title="media
-  element">media elements</span>, when invoked, must run the following
-  steps:</p>
-
-  <ol>
-
-   <li>
-
-    <p>If <var title="">kind</var> is not one of the following
-    strings, then throw a <code>SyntaxError</code> exception and abort
-    these steps:</p>
-
-    <ul class="brief">
-     <li><code title="dom-TextTrack-kind-subtitles">subtitles</code>
-     <li><code title="dom-TextTrack-kind-captions">captions</code>
-     <li><code title="dom-TextTrack-kind-descriptions">descriptions</code>
-     <li><code title="dom-TextTrack-kind-chapters">chapters</code>
-     <li><code title="dom-TextTrack-kind-metadata">metadata</code>
-    </ul>
-
-   </li>
-
-   <li>
-
-    <p>If the <var title="">label</var> argument was omitted, let <var
-    title="">label</var> be the empty string.</p>
-
-   </li>
-
-   <li>
-
-    <p>If the <var title="">language</var> argument was omitted, let
-    <var title="">language</var> be the empty string.</p>
-
-   </li>
-
-   <li>
-
-    <p>Create a new <code>TextTrack</code> object.</p>
-
-   </li>
-
-   <li>
-
-    <p>Create a new <span>text track</span> corresponding to the new
-    object, and set its <span>text track kind</span> to <var
-    title="">kind</var>, its <span>text track label</span> to <var
-    title="">label</var>, its <span>text track language</span> to <var
-    title="">language</var>, its <span>text track readiness
-    state</span> to the <span>text track loaded</span> state, its
-    <span>text track mode</span> to the <span>text track hidden</span>
-    mode, and its <span>text track list of cues</span> to an empty
-    list.
-    Associate the <span>text track list of cues</span> with the
-    <span>rules for updating the display of WebVTT text tracks</span>
-    as its <span>rules for updating the text track rendering</span>.
-    <a href="#refsWEBVTT">[WEBVTT]</a>
-    </p>
-
-   </li>
-
-   <li>
-
-    <p>Add the new <span>text track</span> to the <span>media
-    element</span>'s <span>list of text tracks</span>.</p>
-
-   </li>
-
-   <li>
-
-    <p><span>Queue a task</span> to fire an event with the name <code
-    title="event-addtrack">addtrack</code>, that does not bubble and
-    is not cancelable, and that uses the <code>TrackEvent</code>
-    interface, with the <code
-    title="dom-TrackEvent-track">track</code> attribute initialized to
-    the new <span>text track</span>'s <code>TextTrack</code> object,
-    at the <span>media element</span>'s <code
-    title="dom-media-textTracks">textTracks</code> attribute's
-    <code>TextTrackList</code> object.</p>
-
-   </li>
-
-   <li>
-
-    <p>Return the new <code>TextTrack</code> object.</p>
-
-   </li>
-
-  </ol>
-
   </div>
 
   <div class="example">
@@ -38223,17 +38378,25 @@
 var sounds = sfx.addTextTrack('metadata');
 
 // add sounds we care about
-sounds.addCue(new TextTrackCue('dog bark', 12.783, 13.612, '', '', '', true));
-sounds.addCue(new TextTrackCue('kitten mew', 13.612, 15.091, '', '', '', true));
+function addFX(start, end, name) {
+  var cue = new TextTrackCue(start, end, '');
+  cue.id = name;
+  cue.pauseOnExit = true;
+  sounds.addCue(cue);
+}
+addFX(12.783, 13.612, 'dog bark');
+addFX(13.612, 15.091, 'kitten mew'))
 
 function playSound(id) {
   sfx.currentTime = sounds.getCueById(id).startTime;
   sfx.play();
 }
 
+// play a bark as soon as we can
 sfx.oncanplaythrough = function () {
   playSound('dog bark');
 }
+// meow when the user tries to leave
 window.onbeforeunload = function () {
   playSound('kitten mew');
   return 'Are you sure you want to leave this awesome page?';
@@ -38308,7 +38471,7 @@
 
   <hr>
 
-  <pre class="idl">
+  <pre class="idl">enum <dfn>AutoKeyword</dfn> { "auto" };
 [<span title="dom-TextTrackCue">Constructor</span>(double startTime, double endTime, DOMString text)]
 interface <dfn>TextTrackCue</dfn> : <span>EventTarget</span> {
   readonly attribute <span>TextTrack</span>? <span title="dom-TextTrackCue-track">track</span>;
@@ -38319,7 +38482,7 @@
            attribute boolean <span title="dom-TextTrackCue-pauseOnExit">pauseOnExit</span>;
            attribute DOMString <span title="dom-TextTrackCue-vertical">vertical</span>;
            attribute boolean <span title="dom-TextTrackCue-snapToLines">snapToLines</span>;
-           attribute long <span title="dom-TextTrackCue-line">line</span>;
+           attribute (long or <span>AutoKeyword</span>) <span title="dom-TextTrackCue-line">line</span>;
            attribute long <span title="dom-TextTrackCue-position">position</span>;
            attribute long <span title="dom-TextTrackCue-size">size</span>;
            attribute DOMString <span title="dom-TextTrackCue-align">align</span>;
@@ -38394,8 +38557,9 @@
    <dt><var title="">cue</var> . <span title="dom-TextTrackCue-line">line</span> [ = <var title="">value</var> ]</dt>
    <dd>
     <p>Returns the <span>text track cue line position</span>. In the
-    case of the value being <span title="text track cue automatic
-    line position">auto</span>, the appropriate default is returned.</p>
+    case of the value being <span title="text track cue automatic line
+    position">auto</span>, the string "<code title="">auto</code>" is
+    returned.</p>
     <p>Can be set.</p>
    </dd>
 
@@ -38447,8 +38611,7 @@
 
   <ol>
 
-   <li><p>Create a new <span>text track cue</span> that is not
-   associated with any <span>text track</span>. Let <var
+   <li><p>Create a new <span>text track cue</span>. Let <var
    title="">cue</var> be that <span>text track cue</span>.</p></li>
 
    <li><p>Let <var title="">cue</var>'s <span>text track cue start
@@ -38502,9 +38665,10 @@
 
   <p>The <dfn title="dom-TextTrackCue-track"><code>track</code></dfn>
   attribute, on getting, must return the <code>TextTrack</code> object
-  of the <span>text track</span> with which the <span>text track
-  cue</span> that the <code>TextTrackCue</code> object represents is
-  associated, if any; or null otherwise.</p>
+  of the <span>text track</span> in whose <span title="text track list
+  of cues">list of cues</span> the <span>text track cue</span> that
+  the <code>TextTrackCue</code> object represents finds itself, if
+  any; or null otherwise.</p>
 
   <p>The <dfn title="dom-TextTrackCue-id"><code>id</code></dfn>
   attribute, on getting, must return the <span>text track cue
@@ -38571,37 +38735,34 @@
   flag</span> must be set if the new value is true, and must be unset
   otherwise.</p>
 
-  <p>The <dfn
-  title="dom-TextTrackCue-line"><code>line</code></dfn>
-  attribute, on getting, must return the <span>text track cue computed
-  line position</span> of the <span>text track cue</span> that the
-  <code>TextTrackCue</code> object represents. On setting, if the
-  <span>text track cue snap-to-lines flag</span> is not set, and the
-  new value is negative or greater than 100, then throw an
-  <code>IndexSizeError</code> exception. Otherwise, set the <span>text
-  track cue line position</span> to the new value.</p>
+  <p>The <dfn title="dom-TextTrackCue-line"><code>line</code></dfn>
+  attribute, on getting, must return the <span>text track cue line
+  position</span> of the <span>text track cue</span> that the
+  <code>TextTrackCue</code> object represents. The special value <span
+  title="text track cue automatic line position">auto</span> must be
+  represented as the string "<code title="">auto</code>". On setting,
+  the <span>text track cue line position</span> must be set to the new
+  value; if the new value is the string "<code title="">auto</code>",
+  then it must be interpreted as the special value <span title="text
+  track cue automatic line position">auto</span>.</p>
 
-  <p class="note">There is no way to explicitly set the <span>text
-  track cue line position</span> to the special default <span
-  title="text track cue automatic line position">auto</span>
-  value.</p>
-
   <p>The <dfn
   title="dom-TextTrackCue-position"><code>position</code></dfn>
   attribute, on getting, must return the <span>text track cue text
   position</span> of the <span>text track cue</span> that the
   <code>TextTrackCue</code> object represents. On setting, if the new
-  value is negative or greater than 100, then throw an
-  <code>IndexSizeError</code> exception. Otherwise, set the <span>text
-  track cue text position</span> to the new value.</p>
+  value is negative or greater than 100, then an
+  <code>IndexSizeError</code> exception must be thrown. Otherwise, the
+  <span>text track cue text position</span> must be set to the new
+  value.</p>
 
   <p>The <dfn title="dom-TextTrackCue-size"><code>size</code></dfn>
   attribute, on getting, must return the <span>text track cue
   size</span> of the <span>text track cue</span> that the
   <code>TextTrackCue</code> object represents. On setting, if the new
-  value is negative or greater than 100, then throw an
-  <code>IndexSizeError</code> exception. Otherwise, set the <span>text
-  track cue size</span> to the new value.</p>
+  value is negative or greater than 100, then an
+  <code>IndexSizeError</code> exception must be thrown. Otherwise, the
+  <span>text track cue size</span> must be set to the new value.</p>
 
   <p>The <dfn
   title="dom-TextTrackCue-align"><code>align</code></dfn>
@@ -38634,13 +38795,12 @@
   <p>The <dfn
   title="dom-TextTrackCue-getCueAsHTML"><code>getCueAsHTML()</code></dfn>
   method must convert the <span>text track cue text</span> to a
-  <code>DocumentFragment</code> for the <span>media element</span>'s
-  <code>Document</code>, using the appropriate rules for doing
-  so.
-  For example, for <span>WebVTT</span>, those rules are the
+  <code>DocumentFragment</code> for the <span>script's document</span>
+  of the <span>entry script</span>, using the appropriate rules for
+  doing so. For example, for <span>WebVTT</span>, those rules are the
   <span>WebVTT cue text parsing rules</span> and the <span>WebVTT cue
-  text DOM construction rules</span>. <a href="#refsWEBVTT">[WEBVTT]</a>
-  </p>
+  text DOM construction rules</span>. <a
+  href="#refsWEBVTT">[WEBVTT]</a></p>
 
   </div>
 
@@ -38933,7 +39093,6 @@
    <li><dfn>Text track kind</dfn>
    <li><dfn>Text track mode</dfn>
    <li><dfn>Text track showing</dfn>
-   <li><dfn>Text track showing by default</dfn>
    <li><dfn>Text track cue</dfn>
    <li><dfn>Text track list of cues</dfn>
    <li><dfn>Text track cue order</dfn>
@@ -39740,8 +39899,7 @@
    -->.)</p></li>
 
    <li><p><i>Cue creation</i>: Let <var title="">cue</var> be a new
-   <span>text track cue</span> associated with <var
-   title="">output</var>'s <span>text track</span>.</p></li>
+   <span>text track cue</span>.</p></li>
 
    <li><p>Let <var title="">cue</var>'s <span>text track cue
    identifier</span> be the empty string.</p></li>
@@ -41310,8 +41468,7 @@
   <p>For the purposes of listing chapters in the <span>media
   resource</span>, only <span title="text track">text tracks</span> in
   the <span>media element</span>'s <span>list of text tracks</span>
-  <span title="text track showing">showing</span> or <span title="text
-  track showing by default">showing by default</span> and whose
+  that are <span title="text track showing">showing</span> and whose
   <span>text track kind</span> is <code
   title="dom-TextTrack-kind-chapters">chapters</code> should be used.
   Such tracks must be interpreted according to the <span>rules for
@@ -41988,12 +42145,12 @@
            attribute unsigned long <span title="dom-canvas-width">width</span>;
            attribute unsigned long <span title="dom-canvas-height">height</span>;
 
-  DOMString <span title="dom-canvas-toDataURL">toDataURL</span>(optional DOMString type, any... args);
-  DOMString <span title="dom-canvas-toDataURLHD">toDataURLHD</span>(optional DOMString type, any... args);
-  void <span title="dom-canvas-toBlob">toBlob</span>(<span>FileCallback</span>? _callback, optional DOMString type, any... args);
-  void <span title="dom-canvas-toBlobHD">toBlobHD</span>(<span>FileCallback</span>? _callback, optional DOMString type, any... args);
+  DOMString <span title="dom-canvas-toDataURL">toDataURL</span>(optional DOMString type, any... arguments);
+  DOMString <span title="dom-canvas-toDataURLHD">toDataURLHD</span>(optional DOMString type, any... arguments);
+  void <span title="dom-canvas-toBlob">toBlob</span>(<span>FileCallback</span>? _callback, optional DOMString type, any... arguments);
+  void <span title="dom-canvas-toBlobHD">toBlobHD</span>(<span>FileCallback</span>? _callback, optional DOMString type, any... arguments);
 
-  object? <span title="dom-canvas-getContext">getContext</span>(DOMString contextId, any... args);
+  object? <span title="dom-canvas-getContext">getContext</span>(DOMString contextId, any... arguments);
 };</pre>
    </dd>
   </dl><!--REMOVE-TOPIC:DOM APIs-->
@@ -42166,9 +42323,10 @@
 <!--START complete--><!--START dev-html--><!--2DCONTEXT-->
 
   <p>The <dfn title="dom-canvas-getContext"><code>getContext(<var
-  title="">contextId</var>, <var title="">args...</var>)</code></dfn>
-  method of the <code>canvas</code> element, when invoked, must run
-  the following steps:</p>
+  title="">contextId</var>, <var
+  title="">arguments...</var>)</code></dfn> method of the
+  <code>canvas</code> element, when invoked, must run the following
+  steps:</p>
 
   <ol>
 
@@ -44359,11 +44517,12 @@
   title="concept-path">paths</span> of objects implementing the
   <code>CanvasPathMethods</code> interface.</p>
 
-  <p>For <code>CanvasRenderingContext2D</code> objects, the points and
-  lines added to <span>current default path</span> by these methods
-  must be transformed according to the <span
+  <p>For <code>CanvasRenderingContext2D</code> objects, the points
+  passed to the methods, and the resulting lines added to
+  <span>current default path</span> by these methods, must be
+  transformed according to the <span
   title="dom-context-2d-transformation">current transformation
-  matrix</span> before they are added to the path.</p>
+  matrix</span> before being used.</p>
 
 
   <p>The <dfn title="dom-context-2d-moveTo"><code>moveTo(<var
@@ -56087,13 +56246,13 @@
 
   <p>The <code title="dom-cva-willValidate">willValidate</code>, <code
   title="dom-cva-validity">validity</code>, and <code
-  title="dom-cva-validationMessage">validationMessage</code>
+  title="dom-cva-validationMessage">validationMessage</code> IDL
   attributes, and the <code
   title="dom-cva-checkValidity">checkValidity()</code> and <code
   title="dom-cva-setCustomValidity">setCustomValidity()</code>
   methods, are part of the <span>constraint validation API</span>. The
-  <code title="dom-lfe-labels">labels</code> attribute provides a list
-  of the element's <code>label</code>s. The <code
+  <code title="dom-lfe-labels">labels</code> IDL attribute provides a
+  list of the element's <code>label</code>s. The <code
   title="dom-textarea/input-select">select()</code>, <code
   title="dom-textarea/input-selectionStart">selectionStart</code>,
   <code title="dom-textarea/input-selectionEnd">selectionEnd</code>,
@@ -56102,7 +56261,7 @@
   <code title="dom-textarea/input-setRangeText">setRangeText()</code>,
   and <code
   title="dom-textarea/input-setSelectionRange">setSelectionRange()</code>
-  methods and attributes expose the element's text selection. The
+  methods and IDL attributes expose the element's text selection. The
   <code title="dom-fe-autofocus">autofocus</code>, <code
   title="dom-fe-disabled">disabled</code>, <code
   title="dom-fae-form">form</code>, and <code
@@ -60657,8 +60816,25 @@
 
   </div>
 
+  <div class="example">
 
+   <p>In situations where the control's content has one directionality
+   but the placeholder needs to have a different directionality,
+   Unicode's bidirectional-algorithm formatting characters can be used
+   in the attribute value:</p>
 
+   <pre>&lt;input name=t1 type=tel placeholder="<strong>&amp;#x202B;</strong>&#x2009;<bdo dir=rtl>&#1585;&#1602;&#1605;&nbsp;&#1575;&#1604;&#1607;&#1575;&#1578;&#1601;&nbsp;1</bdo>&#x2009;<strong>&amp;#x202E;</strong>">
+&lt;input name=t2 type=tel placeholder="<strong>&amp;#x202B;</strong>&#x2009;<bdo dir=rtl>&#1585;&#1602;&#1605;&nbsp;&#1575;&#1604;&#1607;&#1575;&#1578;&#1601;&nbsp;2</bdo>&#x2009;<strong>&amp;#x202E;</strong>"></pre>
+
+   <p>For slightly more clarity, here's the same example using numeric character references instead of inline Arabic:</p>
+
+   <pre>&lt;input name=t1 type=tel placeholder="<strong>&amp;#x202B;</strong>&amp;#1585;&amp;#1602;&amp;#1605;&nbsp;&amp;#1575;&amp;#1604;&amp;#1607;&amp;#1575;&amp;#1578;&amp;#1601;&nbsp;1<strong>&amp;#x202E;</strong>">
+&lt;input name=t2 type=tel placeholder="<strong>&amp;#x202B;</strong>&amp;#1585;&amp;#1602;&amp;#1605;&nbsp;&amp;#1575;&amp;#1604;&amp;#1607;&amp;#1575;&amp;#1578;&amp;#1601;&nbsp;2<strong>&amp;#x202E;</strong>"></pre>
+
+  </div>
+
+
+
 <!--TOPIC:DOM APIs-->
   <h5>Common <code>input</code> element APIs</h5>
 
@@ -61291,13 +61467,13 @@
 
   <p>The <code title="dom-cva-willValidate">willValidate</code>, <code
   title="dom-cva-validity">validity</code>, and <code
-  title="dom-cva-validationMessage">validationMessage</code>
+  title="dom-cva-validationMessage">validationMessage</code> IDL
   attributes, and the <code
   title="dom-cva-checkValidity">checkValidity()</code> and <code
   title="dom-cva-setCustomValidity">setCustomValidity()</code>
   methods, are part of the <span>constraint validation API</span>. The
-  <code title="dom-lfe-labels">labels</code> attribute provides a list
-  of the element's <code>label</code>s. The <code
+  <code title="dom-lfe-labels">labels</code> IDL attribute provides a
+  list of the element's <code>label</code>s. The <code
   title="dom-fe-autofocus">autofocus</code>, <code
   title="dom-fe-disabled">disabled</code>, <code
   title="dom-fae-form">form</code>, and <code
@@ -61812,13 +61988,13 @@
 
   <p>The <code title="dom-cva-willValidate">willValidate</code>, <code
   title="dom-cva-validity">validity</code>, and <code
-  title="dom-cva-validationMessage">validationMessage</code>
+  title="dom-cva-validationMessage">validationMessage</code> IDL
   attributes, and the <code
   title="dom-cva-checkValidity">checkValidity()</code> and <code
   title="dom-cva-setCustomValidity">setCustomValidity()</code>
   methods, are part of the <span>constraint validation API</span>. The
-  <code title="dom-lfe-labels">labels</code> attribute provides a list
-  of the element's <code>label</code>s. The <code
+  <code title="dom-lfe-labels">labels</code> IDL attribute provides a
+  list of the element's <code>label</code>s. The <code
   title="dom-fe-autofocus">autofocus</code>, <code
   title="dom-fe-disabled">disabled</code>, <code
   title="dom-fae-form">form</code>, and <code
@@ -62809,24 +62985,22 @@
 
   <p>The <code title="dom-cva-willValidate">willValidate</code>, <code
   title="dom-cva-validity">validity</code>, and <code
-  title="dom-cva-validationMessage">validationMessage</code>
+  title="dom-cva-validationMessage">validationMessage</code> IDL
   attributes, and the <code
   title="dom-cva-checkValidity">checkValidity()</code> and <code
   title="dom-cva-setCustomValidity">setCustomValidity()</code>
   methods, are part of the <span>constraint validation API</span>. The
-  <code title="dom-lfe-labels">labels</code> attribute provides a list
-  of the element's <code>label</code>s. The <code
+  <code title="dom-lfe-labels">labels</code> IDL attribute provides a
+  list of the element's <code>label</code>s. The <code
   title="dom-textarea/input-select">select()</code>, <code
   title="dom-textarea/input-selectionStart">selectionStart</code>,
   <code title="dom-textarea/input-selectionEnd">selectionEnd</code>,
   <code
   title="dom-textarea/input-selectionDirection">selectionDirection</code>,
-<!--END w3c-html-->
   <code title="dom-textarea/input-setRangeText">setRangeText()</code>,
-<!--START w3c-html-->
   and <code
   title="dom-textarea/input-setSelectionRange">setSelectionRange()</code>
-  methods and attributes expose the element's text selection. The
+  methods and IDL attributes expose the element's text selection. The
   <code title="dom-fe-autofocus">autofocus</code>, <code
   title="dom-fe-disabled">disabled</code>, <code
   title="dom-fae-form">form</code>, and <code
@@ -63171,13 +63345,13 @@
 
   <p>The <code title="dom-cva-willValidate">willValidate</code>, <code
   title="dom-cva-validity">validity</code>, and <code
-  title="dom-cva-validationMessage">validationMessage</code>
+  title="dom-cva-validationMessage">validationMessage</code> IDL
   attributes, and the <code
   title="dom-cva-checkValidity">checkValidity()</code> and <code
   title="dom-cva-setCustomValidity">setCustomValidity()</code>
   methods, are part of the <span>constraint validation API</span>. The
-  <code title="dom-lfe-labels">labels</code> attribute provides a list
-  of the element's <code>label</code>s. The <code
+  <code title="dom-lfe-labels">labels</code> IDL attribute provides a
+  list of the element's <code>label</code>s. The <code
   title="dom-fe-autofocus">autofocus</code>, <code
   title="dom-fe-disabled">disabled</code>, <code
   title="dom-fae-form">form</code>, and <code
@@ -63385,13 +63559,13 @@
 
   <p>The <code title="dom-cva-willValidate">willValidate</code>, <code
   title="dom-cva-validity">validity</code>, and <code
-  title="dom-cva-validationMessage">validationMessage</code>
+  title="dom-cva-validationMessage">validationMessage</code> IDL
   attributes, and the <code
   title="dom-cva-checkValidity">checkValidity()</code> and <code
   title="dom-cva-setCustomValidity">setCustomValidity()</code>
   methods, are part of the <span>constraint validation API</span>. The
-  <code title="dom-lfe-labels">labels</code> attribute provides a list
-  of the element's <code>label</code>s. The <code
+  <code title="dom-lfe-labels">labels</code> IDL attribute provides a
+  list of the element's <code>label</code>s. The <code
   title="dom-fae-form">form</code> and <code
   title="dom-fe-name">name</code> IDL attributes are part of the
   element's forms API.</p>
@@ -63602,8 +63776,8 @@
   default value for <code title="dom-progress-max">max</code> is
   1.0.</p>
 
-  <p>The <code title="dom-lfe-labels">labels</code> attribute provides
-  a list of the element's <code>label</code>s.</p>
+  <p>The <code title="dom-lfe-labels">labels</code> IDL attribute
+  provides a list of the element's <code>label</code>s.</p>
 
   </div>
 <!--TOPIC:HTML-->
@@ -64021,8 +64195,8 @@
   title="dom-meter-optimum">optimum</code> content attribute must be
   set to that string.</p>
 
-  <p>The <code title="dom-lfe-labels">labels</code> attribute provides
-  a list of the element's <code>label</code>s.</p>
+  <p>The <code title="dom-lfe-labels">labels</code> IDL attribute
+  provides a list of the element's <code>label</code>s.</p>
 
   </div>
 
@@ -66927,7 +67101,7 @@
   <span>tree order</span> whose <span>form owner</span> is that
   <code>form</code> element.</p>
 
-  <p>If the platform supports letting the user submit a form
+  <p>If the user agent supports letting the user submit a form
   implicitly (for example, on some platforms hitting the "enter" key
   while a text field is focused implicitly submits the form), then
   doing so for a form whose <span>default button</span> has a defined
@@ -66940,6 +67114,10 @@
   submitted when such an implicit submission mechanism is used. (A
   button has no <span>activation behavior</span> when disabled.)</p>
 
+  <p class="note">There are pages on the Web that are only usable if
+  there is a way to implicitly submit forms, so user agents are
+  strongly encouraged to support this.</p>
+
   <p><!-- For Web compatibility reasons caused by obscure historical
   accidents, -->If the form has no <span
   title="concept-submit-button">submit button</span>, then the
@@ -73076,10 +73254,8 @@
      <li><code>button</code> elements that are not <span
      title="concept-fe-disabled">disabled</span></li>
 
-     <li><code>input</code> elements whose <code
-     title="attr-input-type">type</code> attribute are not in the
-     <span title="attr-input-type-hidden">Hidden</span> state and that
-     are not <span title="concept-fe-disabled">disabled</span></li>
+     <li><code>input</code> elements that are not <span
+     title="concept-fe-disabled">disabled</span></li>
 
      <li><code>select</code> elements that are not <span
      title="concept-fe-disabled">disabled</span></li>
@@ -73124,10 +73300,8 @@
      <li><code>button</code> elements that are <span
      title="concept-fe-disabled">disabled</span></li>
 
-     <li><code>input</code> elements whose <code
-     title="attr-input-type">type</code> attribute are not in the
-     <span title="attr-input-type-hidden">Hidden</span> state and that
-     are <span title="concept-fe-disabled">disabled</span></li>
+     <li><code>input</code> elements that are <span
+     title="concept-fe-disabled">disabled</span></li>
 
      <li><code>select</code> elements that are <span
      title="concept-fe-disabled">disabled</span></li>
@@ -83498,6 +83672,9 @@
    <li><p>Increase the <span>event loop</span>'s <span>termination
    nesting level</span> by one.</p></li>
 
+   <li><p>Increase the <code>Document</code>'s
+   <span>ignore-opens-during-unload counter</span> by one.</p></li>
+
    <li><p>Let <var title="">event</var> be a new
    <code>BeforeUnloadEvent</code> event object with the name <code
    title="event-beforeunload">beforeunload</code>, which does not
@@ -83542,7 +83719,7 @@
    <li><p>If this algorithm was invoked by another instance of the
    "prompt to unload a document" algorithm (i.e. through the steps
    below that invoke this algorithm for all descendant browsing
-   contexts), then abort these steps here.</p></li>
+   contexts), then jump to the step labeled <i>end</i>.</p></li>
 
    <li><p>Let <var title="">descendants</var> be the <span>list of the
    descendant browsing contexts</span> of the
@@ -83562,7 +83739,7 @@
      <span>refused to allow the document to be unloaded</span>, then
      the user implicitly also <span title="refused to allow the
      document to be unloaded">refused to allow <em>this</em> document
-     to be unloaded</span>; abort these steps.</p>
+     to be unloaded</span>; jump to the step labeled <i>end</i>.</p>
 
      <li><p>If <var
      title="concept-document-salvageable">salvageable</var> state of
@@ -83575,6 +83752,9 @@
 
    </li>
 
+   <li><p><i>End</i>: Decrease the <code>Document</code>'s
+   <span>ignore-opens-during-unload counter</span> by one.</p></li>
+
   </ol>
 
   <p>When a user agent is to <dfn>unload a document</dfn>, it must run
@@ -83589,6 +83769,9 @@
    <li><p>Increase the <span>event loop</span>'s <span>termination
    nesting level</span> by one.</p></li>
 
+   <li><p>Increase the <code>Document</code>'s
+   <span>ignore-opens-during-unload counter</span> by one.</p></li>
+
    <li><p>Fire a <code title="event-pagehide">pagehide</code> event at
    the <code>Window</code> object of the <code>Document</code>, but
    with its <code title="dom-event-target">target</code> set to the
@@ -83631,9 +83814,9 @@
    <span>other applicable specifications</span>.</p></li>
 
    <li><p>If this algorithm was invoked by another instance of the
-   "unload a document" algorithm (i.e. through the steps below that
-   invoke this algorithm for all descendant browsing contexts), then
-   abort these steps here.</p></li>
+   "unload a document" algorithm (i.e. by the steps below that invoke
+   this algorithm for all descendant browsing contexts), then jump to
+   the step labeled <i>end</i>.</p></li>
 
    <li><p>Let <var title="">descendants</var> be the <span>list of the
    descendant browsing contexts</span> of the
@@ -83670,6 +83853,9 @@
    title="discard a document">discard the
    <code>Document</code></span>.</p></li>
 
+   <li><p><i>End</i>: Decrease the <code>Document</code>'s
+   <span>ignore-opens-during-unload counter</span> by one.</p></li>
+
   </ol>
 
   <p>This specification defines the following <dfn>unloading document
@@ -86906,6 +87092,14 @@
   <p>If scripting is disabled while a script is executing, the script
   should be terminated immediately.</p>
 
+  <p>User agents may allow users to specifically disable scripts just
+  for the purposes of closing a <span>browsing context</span>.</p>
+
+  <p class="example">For example, the prompt mentioned in the example
+  above could also offer the user with a mechanism to just close the
+  page entirely, without running any <code
+  title="event-unload">unload</code> event handlers.</p>
+
   </div>
 
 
@@ -88499,17 +88693,15 @@
 
   <pre class="idl">[NoInterfaceObject]
 interface <dfn>WindowTimers</dfn> {
-  long <span title="dom-windowtimers-setTimeout">setTimeout</span>(<span>ArbitraryCallback</span> handler, optional long timeout, any... args);
-  long <span title="dom-windowtimers-setTimeout">setTimeout</span>(DOMString handler, optional long timeout, any... args);
+  long <span title="dom-windowtimers-setTimeout">setTimeout</span>(<span>Function</span> handler, optional long timeout, any... arguments);
+  long <span title="dom-windowtimers-setTimeout">setTimeout</span>(DOMString handler, optional long timeout, any... arguments);
   void <span title="dom-windowtimers-clearTimeout">clearTimeout</span>(long handle);
-  long <span title="dom-windowtimers-setInterval">setInterval</span>(<span>ArbitraryCallback</span> handler, optional long timeout, any... args);
-  long <span title="dom-windowtimers-setInterval">setInterval</span>(DOMString handler, optional long timeout, any... args);
+  long <span title="dom-windowtimers-setInterval">setInterval</span>(<span>Function</span> handler, optional long timeout, any... arguments);
+  long <span title="dom-windowtimers-setInterval">setInterval</span>(DOMString handler, optional long timeout, any... arguments);
   void <span title="dom-windowtimers-clearInterval">clearInterval</span>(long handle);
 };
-<span>Window</span> implements <span>WindowTimers</span>;
+<span>Window</span> implements <span>WindowTimers</span>;</pre>
 
-[TreatNonCallableAsNull] callback <dfn>ArbitraryCallback</dfn> = any (any... args);</pre>
-
   <!-- Demonstrating the need for wrapping of the timeout argument value treated as long rather than clamping or treating as double:
           http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1228
        Demonstrating the need for the timeout argument to be signed rather than unsigned:
@@ -88617,7 +88809,7 @@
    title="">task</var> be the result. This algorithm uses the first
    argument to the method (<var title="">handler</var>) and, if there
    are any, the third and subsequent arguments to the method (<var
-   title="">args</var>), to establish precisely what <var
+   title="">arguments</var>), to establish precisely what <var
    title="">task</var> does.</p></li>
 
    <li><p>Let <var title="">timeout</var> be the second argument to
@@ -88732,7 +88924,7 @@
    title="">task</var> be the result. This algorithm uses the first
    argument to the method (<var title="">handler</var>) and, if there
    are any, the third and subsequent arguments to the method (<var
-   title="">args</var>), to establish precisely what <var
+   title="">arguments</var>), to establish precisely what <var
    title="">task</var> does.</p></li>
 
    <li><p>Let <var title="">timeout</var> be the second argument to
@@ -88820,15 +89012,14 @@
 
    <li>
 
-    <p>If the first argument to the invoked method is an
-    <code>ArbitraryCallback</code>, then return a <span
+    <p>If the first argument to the invoked method is a
+    <code>Function</code>, then return a <span
     title="concept-task">task</span> that checks if the entry for <var
     title="">handle</var> in <var title="">list</var> has been
-    cleared, and if it has not, calls the
-    <code>ArbitraryCallback</code> with as its arguments the third and
-    subsequent arguments to the invoked method (if any) and with an
-    undefined <var title="">thisArg</var>, and abort these steps. <a
-    href="#refsECMA262">[ECMA262]</a></p>
+    cleared, and if it has not, calls the <code>Function</code> with
+    as its arguments the third and subsequent arguments to the invoked
+    method (if any) and with an undefined <var title="">thisArg</var>,
+    and abort these steps. <a href="#refsECMA262">[ECMA262]</a></p>
 
     <p class="note">Setting <var title="">thisArg</var> to undefined
     means that the function code will be executed with the <code
@@ -89692,11 +89883,14 @@
     <ul class="brief">
      <li><code title="">irc</code></li>
      <li><code title="">mailto</code></li>
+     <li><code title="">magnet</code></li>
      <li><code title="">mms</code></li>
      <li><code title="">news</code></li>
      <li><code title="">nntp</code></li>
+     <li><code title="">sip</code></li>
      <li><code title="">sms</code></li>
      <li><code title="">smsto</code></li>
+     <li><code title="">ssh</code></li>
      <li><code title="">tel</code></li>
      <li><code title="">urn</code></li>
      <li><code title="">webcal</code></li>
@@ -89706,6 +89900,16 @@
     <p class="note">This list can be changed. If there are schemes
     that should be added, please send feedback.</p>
 
+    <p class="note">This list excludes any schemes that could
+    reasonably be expected to be supported inline, e.g. in an
+    <code>iframe</code>, such as <code title="">http</code> or (more
+    theoretically) <code title="">gopher</code>. If those were
+    supported, they could potentially be used in man-in-the-middle
+    attacks, by replacing pages that have frames with such content
+    with content under the control of the protocol handler. If the
+    user agent has native support for the schemes, this could further
+    be used for cookie-theft attacks.</p>
+
    </dd>
 
    <dt><var title="">mimeType</var> (<code title="dom-navigator-registerContentHandler">registerContentHandler()</code> only)</dt>
@@ -92219,9 +92423,6 @@
      <li>User-agent-defined default feedback information, known as the
      <dfn>drag data store default feedback</dfn>.</li>
 
-     <li>A list of zero or more elements known as the <dfn>drag data
-     store elements list</dfn>.</li>
-
      <li>Optionally, a bitmap image and the coordinate of a point
      within that image, known as the <dfn>drag data store bitmap</dfn>
      and <dfn>drag data store hot spot coordinate</dfn>.</li>
@@ -92280,10 +92481,9 @@
   <p>When a <span>drag data store</span> is <dfn title="create a drag
   data store">created</dfn>, it must be initialized such that its
   <span>drag data store item list</span> is empty, it has no
-  <span>drag data store default feedback</span>, its <span>drag data
-  store elements list</span> is empty, it has no <span>drag data store
-  bitmap</span> / <span>drag data store hot spot coordinate</span>,
-  its <span>drag data store mode</span> is <span
+  <span>drag data store default feedback</span>, it has no <span>drag
+  data store bitmap</span> and <span>drag data store hot spot
+  coordinate</span>, its <span>drag data store mode</span> is <span
   title="concept-dnd-p">protected mode</span>, and its <span>drag data
   store allowed effects state</span> is the string "<code
   title="">uninitialized</code>".</p>
@@ -92302,7 +92502,6 @@
   readonly attribute <span>DataTransferItemList</span> <span title="dom-DataTransfer-items">items</span>;
 
   void <span title="dom-DataTransfer-setDragImage">setDragImage</span>(Element image, long x, long y);
-  void <span title="dom-DataTransfer-addElement">addElement</span>(Element element);
 
   /* old interface */
   readonly attribute DOMString[] <span title="dom-DataTransfer-types">types</span>;
@@ -92367,17 +92566,8 @@
     <p>Uses the given element to update the drag feedback, replacing any previously specified feedback.</p>
 
    </dd>
+   
 
-
-   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-addElement">addElement</code>(<var title="">element</var>)</dt>
-
-   <dd>
-
-    <p>Adds the given element to the list of elements used to render the drag feedback.</p>
-
-   </dd>
-
-
    <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-types">types</code></dt>
 
    <dd>
@@ -92505,38 +92695,6 @@
 
   </ol>
 
-  <p>The <dfn
-  title="dom-DataTransfer-addElement"><code>addElement(<var
-  title="">element</var>)</code></dfn> method is an alternative way of
-  specifying how the user agent is to <a
-  href="#base-dnd-feedback">render the drag feedback</a>. The method
-  must run the following steps:</p>
-
-  <ol>
-
-   <li><p>If the <code>DataTransfer</code> object is no longer
-   associated with a <span>drag data store</span>, abort these steps.
-   Nothing happens.</p></li>
-
-   <li><p>If the <span>drag data store</span>'s <span title="drag data
-   store mode">mode</span> is not in the <span
-   title="concept-dnd-rw">read/write mode</span>, abort these steps.
-   Nothing happens.</p></li>
-
-   <li><p>Add the given <var title="">element</var> to the element's
-   <span>drag data store elements list</span>.</p></li>
-
-  </ol>
-
-  <p class="note">The difference between <code
-  title="dom-DataTransfer-setDragImage">setDragImage()</code> and
-  <code title="dom-DataTransfer-addElement">addElement()</code> is
-  that the latter automatically generates the image based on the
-  current rendering of the elements added (potentially keeping it
-  updated as the drag continues, e.g. if the elements include an
-  actively playing video), whereas the former uses the exact specified
-  image at the time the method is invoked.</p>
-
   <p>The <dfn title="dom-DataTransfer-types"><code>types</code></dfn>
   attribute must return a <span>live</span> <span
   title="dfn-read-only-array">read only</span> array giving the
@@ -93699,22 +93857,14 @@
 
    <li>
 
-    <p>If it is an element that is being dragged, then set the
-    <span>drag data store elements list</span> to contain just the
-    <span>source node</span>.</p>
-
-    <p>Otherwise, update the <span>drag data store default
-    feedback</span> as appropriate for the user agent (if the user is
-    dragging the selection, then the selection would likely be the
-    basis for this feedback; if the drag began outside the user agent,
+    <p>Update the <span>drag data store default feedback</span> as
+    appropriate for the user agent (if the user is dragging the
+    selection, then the selection would likely be the basis for this
+    feedback; if the user is dragging an element, then that element's
+    rendering would be used; if the drag began outside the user agent,
     then the platform conventions for determining the drag feedback
     should be used).</p>
 
-    <p class="note">Script can use the <code
-    title="dom-DataTransfer-addElement">addElement()</code> method to
-    add further elements to the list of what is being dragged. (This
-    list is only used for rendering the drag feedback.)</p>
-
    </li>
 
    <li>
@@ -93753,9 +93903,6 @@
      pixels from the left side and from the top side of the image
      respectively. <a href="#refsCSS">[CSS]</a></li>
 
-     <li>The elements in the <span>drag data store elements
-     list</span>, if any.</li>
-
      <li>The <span>drag data store default feedback</span>.</li>
 
     </ol>
@@ -98201,7 +98348,7 @@
     response">validates the server's response</i> during the
     "<i>establish a WebSocket connection</i>" algorithm, if the status
     code received from the server is not 101 (e.g. it is a redirect),
-    the user agent must <i>fail the websocket connection</i>.</p>
+    the user agent must <i>fail the WebSocket connection</i>.</p>
 
     <p class="warning">Following HTTP procedures here could introduce
     serious security problems in a Web browser context. For example,
@@ -98253,7 +98400,7 @@
 
    <dt><dfn title="dom-WebSocket-CLOSING"><code>CLOSING</code></dfn> (numeric value 2)</dt>
 
-   <dd>The connection is going through the closing handshake.</dd>
+   <dd>The connection is going through the closing handshake, or the <code title="dom-WebSocket-close">close()</code> method has been invoked.</dd>
 
    <dt><dfn title="dom-WebSocket-CLOSED"><code>CLOSED</code></dfn> (numeric value 3)</dt>
 
@@ -98804,7 +98951,7 @@
    value to <code title="dom-WebSocket-CLOSED">CLOSED</code>
    (3).</p></li>
 
-   <li><p>If the user agent was required to <i>fail the websocket
+   <li><p>If the user agent was required to <i>fail the WebSocket
    connection</i> or <i>the WebSocket connection is closed</i> <dfn
    title="concept-websocket-close-fail">with prejudice</dfn>,
    <span>fire a simple event</span> named <code title="">error</code>
@@ -100949,8 +101096,8 @@
   session identifiers in URLs, a technique already commonly used for
   innocuous purposes but easily repurposed for user tracking (even
   retroactively). This information can then be shared with other
-  sites, using using visitors' IP addresses and other user-specific
-  data (e.g. user-agent headers and configuration settings) to combine
+  sites, using visitors' IP addresses and other user-specific data
+  (e.g. user-agent headers and configuration settings) to combine
   separate sessions into coherent user profiles.</p>
 
 
@@ -102225,12 +102372,20 @@
 
   <ol>
 
-   <li><p>If the user has explicitly instructed the user agent to
-   override the document's character encoding with a specific
-   encoding, optionally return that encoding with the <span
-   title="concept-encoding-confidence">confidence</span>
-   <i>certain</i> and abort these steps.</p></li>
+   <li>
 
+    <p>If the user has explicitly instructed the user agent to
+    override the document's character encoding with a specific
+    encoding, optionally return that encoding with the <span
+    title="concept-encoding-confidence">confidence</span>
+    <i>certain</i> and abort these steps.</p>
+
+    <p class="note">Typically, user agents remember such user requests
+    across sessions, and in some cases apply them to documents in
+    <code>iframe</code>s as well.</p>
+
+   </li>
+
    <li><p>If the transport layer specifies an encoding, and it is
    supported, return that encoding with the <span
    title="concept-encoding-confidence">confidence</span>
@@ -102320,6 +102475,15 @@
 
    </li>
 
+   <li><p>Otherwise, if the <code>Document</code> is in a <span>nested
+   browsing context</span>, return the encoding of the <span>browsing
+   context container</span>'s <code>Document</code>'s <span
+   title="document's character encoding">character encoding</span>,
+   with the <span
+   title="concept-encoding-confidence">confidence</span>
+   <i>tentative</i>, and abort these steps.</p></li> <!-- not
+   carefully tested -->
+
    <li><p>Otherwise, if the user agent has information on the likely
    encoding for this page, e.g. based on the encoding of the page when
    it was last visited, then return that encoding, with the <span
@@ -106105,8 +106269,8 @@
 
     <!-- this is the same as the equivalent list in the input stream
     section -->
-    If the number is in the range 0x0001 to 0x0008, <!-- HT, LF
-    allowed --> <!-- U+000B is in the next list --> <!-- FF, CR
+    Additionally, if the number is in the range 0x0001 to 0x0008, <!--
+    HT, LF allowed --> <!-- U+000B is in the next list --> <!-- FF, CR
     allowed --> 0x000E to 0x001F, <!-- ASCII allowed --> 0x007F <!--to
     0x0084, (0x0085 NEL not allowed), 0x0086--> to 0x009F, 0xFDD0 to
     0xFDEF, or is one of 0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, 0x1FFFF,
@@ -106307,13 +106471,13 @@
 
   </div>
 
-  <p id="mutation-during-parsing">DOM mutation events must not fire
-  for changes caused by the UA parsing the document. (Conceptually,
-  the parser is not mutating the DOM, it is constructing it.) This
-  includes the parsing of any content inserted using <code
-  title="dom-document-write">document.write()</code> and <code
-  title="dom-document-writeln">document.writeln()</code> calls. <a
-  href="#refsDOMEVENTS">[DOMEVENTS]</a></p>
+  <p id="mutation-during-parsing">DOM mutation events and mutation
+  observers must not fire for changes caused by the UA parsing the
+  document. (Conceptually, the parser is not mutating the DOM, it is
+  constructing it.) This includes the parsing of any content inserted
+  using <code title="dom-document-write">document.write()</code> and
+  <code title="dom-document-writeln">document.writeln()</code> calls.
+  <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p>
 
   <p class="note">Not all of the tag names mentioned below are
   conformant tag names in this specification; many are included to
@@ -108071,13 +108235,13 @@
      an element in the <span>special</span> category. There might not
      be one.</p></li>
 
-     <li><p>If there is no <var title="">furthest block</var>,
-     then the UA must skip the subsequent steps and instead just
-     pop all the nodes from the bottom of the <span>stack of open
-     elements</span>, from the <span>current node</span> up to and
-     including the <var title="">formatting element</var>, and
-     remove the <var title="">formatting element</var> from the
-     <span>list of active formatting elements</span>.</p></li>
+     <li><p>If there is no <var title="">furthest block</var>, then
+     the UA must first pop all the nodes from the bottom of the
+     <span>stack of open elements</span>, from the <span>current
+     node</span> up to and including the <var title="">formatting
+     element</var>, then remove the <var title="">formatting
+     element</var> from the <span>list of active formatting
+     elements</span>, and finally abort these steps.</p></li>
 
      <li><p>Let the <var title="">common ancestor</var> be the element
      immediately above the <var title="">formatting element</var> in the
@@ -110482,13 +110646,13 @@
    stream</span>, and discard any future content that would have been
    added to it.</p></li>
 
-   <li><p>Pop <em>all</em> the nodes off the <span>stack of open
-   elements</span>.</p></li>
-
    <li><p>Set the <span>current document readiness</span> to "<code
    title="">interactive</code>"<!-- this synchronously fires an event
    -->.</p></li>
 
+   <li><p>Pop <em>all</em> the nodes off the <span>stack of open
+   elements</span>.</p></li>
+
    <li><p>Set the <span>current document readiness</span> to "<code
    title="">complete</code>"<!-- this also synchronously fires an
    event -->.</p></li>
@@ -111459,11 +111623,6 @@
 
   </ol>
 
-  <p class="note">This algorithm is invoked without a <var
-  title="concept-frag-parse-context">context</var> element in the case
-  of <code
-  title="dom-Document-innerHTML">Document.innerHTML</code>.</p>
-
   </div>
 
 
@@ -112409,9 +112568,10 @@
 
   <p>When a <code>font</code> element has a <code
   title="attr-font-size">size</code> attribute, the user agent is
-  expected to use the following steps to treat the attribute as a
-  <span title="presentational hints">presentational hint</span>
-  setting the element's 'font-size' property:</p>
+  expected to use the following steps, known as the <dfn>rules for
+  parsing a legacy font size</dfn>, to treat the attribute as a <span
+  title="presentational hints">presentational hint</span> setting the
+  element's 'font-size' property:</p>
 
   <ol>
 
@@ -113296,15 +113456,14 @@
 
   <p>When the user agent starts <span title="expose a user interface
   to the user">exposing a user interface</span> for a
-  <code>video</code> element, the user agent should run the <span>rules
-  for updating the text track rendering</span> of each of the <span
-  title="text track">text tracks</span> in the <code>video</code>
-  element's <span>list of text tracks</span> that are <span
-  title="text track showing">showing</span> or <span title="text
-  track showing by default">showing by default</span> (e.g., for <span
-  title="text track">text tracks</span> based on
-  <span>WebVTT</span>, the <span>rules for updating the display of
-  WebVTT text tracks</span>). <a href="#refsWEBVTT">[WEBVTT]</a></p>
+  <code>video</code> element, the user agent should run the
+  <span>rules for updating the text track rendering</span> of each of
+  the <span title="text track">text tracks</span> in the
+  <code>video</code> element's <span>list of text tracks</span> that
+  are <span title="text track showing">showing</span> (e.g., for <span
+  title="text track">text tracks</span> based on <span>WebVTT</span>,
+  the <span>rules for updating the display of WebVTT text
+  tracks</span>). <a href="#refsWEBVTT">[WEBVTT]</a></p>
 
   <p class="note">Resizing <code>video</code> and <code>canvas</code>
   elements does not interrupt video playback or clear the canvas.</p>
@@ -113373,8 +113532,7 @@
    as their <span>rules for updating the text track rendering</span>
    these <span>rules for updating the display of WebVTT text
    tracks</span>, and whose <span>text track mode</span> is <span
-   title="text track showing">showing</span> or <span title="text
-   track showing by default">showing by default</span>.</p></li>
+   title="text track showing">showing</span>.</p></li>
 
    <li><p>Let <var title="">cues</var> be an empty list of <span
    title="text track cue">text track cues</span>.</p></li>
@@ -119613,8 +119771,7 @@
          <code title="attr-meter-max">max</code>;
          <code title="attr-meter-low">low</code>;
          <code title="attr-meter-high">high</code>;
-         <code title="attr-meter-optimum">optimum</code>;
-         <code title="attr-fae-form">form</code></td>
+         <code title="attr-meter-optimum">optimum</code></td>
      <td><code>HTMLMeterElement</code></td>
     </tr>
 
@@ -119767,8 +119924,7 @@
      <td><span title="Phrasing content">phrasing</span>*</td>
      <td><span title="global attributes">globals</span>;
          <code title="attr-progress-value">value</code>;
-         <code title="attr-progress-max">max</code>;
-         <code title="attr-fae-form">form</code></td>
+         <code title="attr-progress-max">max</code></td>
      <td><code>HTMLProgressElement</code></td>
     </tr>
 
@@ -123072,11 +123228,7 @@
    1984.</dd>
 
    <dt id="refsPPUTF8">[PPUTF8]</dt>
-   <dd>(Non-normative) <cite><a
-   href="http://www.ifi.uzh.ch/mml/mduerst/papers/PDF/IUC11-UTF-8.pdf">The
-   Properties and Promises <!-- Promizes (sic) --> of
-   UTF-8</a></cite>, M. D&uuml;rst. University of Z&uuml;rich. In <cite>Proceedings of the 11th International
-   Unicode Conference</cite>.</dd>
+   <dd>(Non-normative) <cite><a href="http://www.sw.it.aoyama.ac.jp/2012/pub/IUC11-UTF-8.pdf">The Properties and Promises <!-- Promizes (sic) --> of UTF-8</a></cite>, M. D&uuml;rst. University of Z&uuml;rich. In <cite>Proceedings of the 11th International Unicode Conference</cite>.</dd>
 
    <dt id="refsPROGRESS">[PROGRESS]</dt>
    <dd><cite><a
@@ -123849,6 +124001,7 @@
   Jorgen Horstink,
   Jorunn Danielsen Newth,
   Joseph Kesselman,
+  Joseph Mansfield,
   Joseph Pecoraro,
   Josh Aas,
   Josh Hart,
@@ -124090,6 +124243,7 @@
   Sylvain Pasche,
   T. J. Crowder,
   Tab Atkins,
+  Takeshi Yoshino,
   <span title="" lang="tr">Tantek &Ccedil;elik</span>,
   &#30000;&#26449;&#20581;&#20154; (TAMURA Kent),
   Ted Mielczarek,

|