[html5] r8799 - [e] (0) Stop using the word 'asynchronously', and reduce usage of the word 'sync [...]
whatwg at whatwg.org
whatwg at whatwg.org
Fri Sep 19 16:19:53 PDT 2014
Author: ianh
Date: 2014-09-19 16:19:48 -0700 (Fri, 19 Sep 2014)
New Revision: 8799
Modified:
complete.html
index
source
Log:
[e] (0) Stop using the word 'asynchronously', and reduce usage of the word 'synchronous'.
Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=26103
Affected topics: Canvas, DOM APIs, HTML, HTML Syntax and Parsing, Microdata, Offline Web Applications, Rendering, Video Text Tracks, Video and Audio, Workers
Modified: complete.html
===================================================================
--- complete.html 2014-09-19 21:41:15 UTC (rev 8798)
+++ complete.html 2014-09-19 23:19:48 UTC (rev 8799)
@@ -1066,7 +1066,7 @@
the script uninterrupted before doing anything else, such as firing further events or continuing
to parse the document.</p>
- <p>On the other hand, parsing of HTML files happens asynchronously and incrementally, meaning that
+ <p>On the other hand, parsing of HTML files happens incrementally, meaning that
the parser can pause at any point to let scripts run. This is generally a good thing, but it does
mean that authors need to be careful to avoid hooking event handlers after the events could have
possibly fired.</p>
@@ -1493,7 +1493,7 @@
migrating between HTML and XHTML.</p>
<p class=example>For example, there are somewhat complicated rules surrounding the <code id=restrictions-on-content-models-and-on-attribute-values:attr-lang><a href=#attr-lang>lang</a></code> and <code id=restrictions-on-content-models-and-on-attribute-values:attr-xml-lang><a href=#attr-xml-lang>xml:lang</a></code> attributes
- intended to keep the two synchronized.</p>
+ intended to keep the two synchronised.</p>
<p class=example>Another example would be the restrictions on the values of <code>xmlns</code> attributes in the HTML serialisation, which are intended to ensure that
elements in conforming documents end up in the same namespaces whether processed as HTML or
@@ -1603,7 +1603,14 @@
<p>When an algorithm B says to return to another algorithm A, it implies that A called B. Upon
- returning to A, the implementation must continue from where it left off in calling B.</p>
+ returning to A, the implementation must continue from where it left off in calling B. Some
+ algorithms run <dfn id=in-parallel>in parallel</dfn>; this means that the algorithm's subsequent steps are to be
+ run, one after another, at the same time as other logic in the specification (e.g. at the same
+ time as the <a href=#event-loop id=terminology:event-loop>event loop</a>). This specification does not define the precise mechanism by
+ which this is achieved, be it time-sharing cooperative multitasking, fibers, threads, processes,
+ using different hyperthreads, cores, CPUs, machines, etc. By contrast, an operation that is to run
+ <dfn id=immediately>immediately</dfn> must interrupt the currently running task, run itself, and then resume the
+ previously running task.</p>
@@ -4458,7 +4465,7 @@
<p>When a user agent is to <dfn id=fetch>fetch</dfn> a resource or <a href=#url id=processing-model:url>URL</a>, optionally
<strong>from</strong> an origin <i>origin</i>, optionally <strong>using</strong> a
specific <a href=#referrer-source id=processing-model:referrer-source>referrer source</a> as an <i>override referrer source</i>, and optionally with
- any of a <i>synchronous flag</i>, a <i>manual redirect flag</i>, a <i>force same-origin flag</i>,
+ any of a <i>blocking flag</i>, a <i>manual redirect flag</i>, a <i>force same-origin flag</i>,
and a <i>block cookies flag</i>, the following steps must be run. (When a
<em><a href=#url id=processing-model:url-2>URL</a></em> is to be fetched, the URL identifies a resource to be obtained.)</p>
@@ -4514,8 +4521,8 @@
<p>Otherwise, the <code id=processing-model:http-referer-2><a href=#http-referer>Referer</a></code> (sic) header must be omitted,
regardless of its value.</p>
- <li><p>If the algorithm was not invoked with the <i>synchronous flag</i>, perform the remaining
- steps asynchronously.<li><p>If the <code id=processing-model:document-2><a href=#document>Document</a></code> with which any <a href=#concept-task id=processing-model:concept-task>tasks</a> <a href=#queue-a-task id=processing-model:queue-a-task>queued</a> by this algorithm would be associated doesn't have an
+ <li><p>If the algorithm was not invoked with the <i>blocking flag</i>, perform the remaining
+ steps <a href=#in-parallel id=processing-model:in-parallel>in parallel</a>.<li><p>If the <code id=processing-model:document-2><a href=#document>Document</a></code> with which any <a href=#concept-task id=processing-model:concept-task>tasks</a> <a href=#queue-a-task id=processing-model:queue-a-task>queued</a> by this algorithm would be associated doesn't have an
associated <a href=#browsing-context id=processing-model:browsing-context-2>browsing context</a>, then abort these steps.<li>
<p>This is the <i>main step</i>.</p>
@@ -4597,7 +4604,7 @@
<li>
- <p>If the algorithm was not invoked with the <i>synchronous flag</i>: When the resource is
+ <p>If the algorithm was not invoked with the <i>blocking flag</i>: When the resource is
available, or if there is an error of some description, <a href=#queue-a-task id=processing-model:queue-a-task-2>queue a task</a> that uses the
resource as appropriate. If the resource can be processed incrementally, as, for instance, with
a progressively interlaced JPEG or an HTML file, additional tasks may be queued to process the
@@ -6358,10 +6365,10 @@
successful, throw a <code id=loading-xml-documents:syntaxerror><a href=#syntaxerror>SyntaxError</a></code> exception and abort these steps. Otherwise, let <var>url</var> be the resulting <a href=#absolute-url id=loading-xml-documents:absolute-url>absolute URL</a>.<li><p>If the <a href=#origin-2 id=loading-xml-documents:origin-2>origin</a> of <var>url</var> is not the same as the
<a href=#origin-2 id=loading-xml-documents:origin-2-2>origin</a> of <var>document</var>, throw a <code id=loading-xml-documents:securityerror><a href=#securityerror>SecurityError</a></code> exception
and abort these steps.<li><p>Remove all child nodes of <var>document</var>, without firing any mutation
- events.<li><p>Set the <a href=#current-document-readiness id=loading-xml-documents:current-document-readiness>current document readiness</a> of <var>document</var> to "<code>loading</code>".<li><p> Run the remainder of these steps asynchronously, and return true from the
+ events.<li><p>Set the <a href=#current-document-readiness id=loading-xml-documents:current-document-readiness>current document readiness</a> of <var>document</var> to "<code>loading</code>".<li><p> Run the remainder of these steps <a href=#in-parallel id=loading-xml-documents:in-parallel>in parallel</a>, and return true from the
method.<li><p>Let <var>result</var> be a <code id=loading-xml-documents:document><a href=#document>Document</a></code> object.<li><p>Let <var>success</var> be false.<li><p><a href=#fetch id=loading-xml-documents:fetch>Fetch</a> <var>url</var> from the <a href=#origin-2 id=loading-xml-documents:origin-2-3>origin</a> of
<var>document</var>, using the <a href=#api-referrer-source id=loading-xml-documents:api-referrer-source>API referrer source</a> specified by the
- <a href=#entry-settings-object id=loading-xml-documents:entry-settings-object-2>entry settings object</a>, with the <i>synchronous flag</i> set and the <i>force same-origin flag</i> set.<li>
+ <a href=#entry-settings-object id=loading-xml-documents:entry-settings-object-2>entry settings object</a>, with the <i>blocking flag</i> set and the <i>force same-origin flag</i> set.<li>
<p>If the fetch attempt was successful, and the resource's <a href=#content-type id=loading-xml-documents:content-type>Content-Type metadata</a> is an <a href=#xml-mime-type id=loading-xml-documents:xml-mime-type>XML MIME type</a>, then run
these substeps:</p>
@@ -8995,7 +9002,7 @@
<p class=note>If there are multiple <code id=the-base-element:the-base-element-9><a href=#the-base-element>base</a></code> elements with <code id=the-base-element:attr-base-target-4><a href=#attr-base-target>target</a></code> attributes, all but the first are ignored.</p>
<p>A <code id=the-base-element:the-base-element-10><a href=#the-base-element>base</a></code> element that is the first <code id=the-base-element:the-base-element-11><a href=#the-base-element>base</a></code> element with an <code id=the-base-element:attr-base-href-5><a href=#attr-base-href>href</a></code> content attribute in a particular <code id=the-base-element:document-2><a href=#document>Document</a></code> has a
- <dfn id=frozen-base-url>frozen base URL</dfn>. The <a href=#frozen-base-url id=the-base-element:frozen-base-url>frozen base URL</a> must be <a href=#set-the-frozen-base-url id=the-base-element:set-the-frozen-base-url>set</a>, synchronously, whenever any of the following situations occur:</p>
+ <dfn id=frozen-base-url>frozen base URL</dfn>. The <a href=#frozen-base-url id=the-base-element:frozen-base-url>frozen base URL</a> must be <a href=#immediately id=the-base-element:immediately>immediately</a> <a href=#set-the-frozen-base-url id=the-base-element:set-the-frozen-base-url>set</a> whenever any of the following situations occur:</p>
<ul class=brief><li>The <code id=the-base-element:the-base-element-12><a href=#the-base-element>base</a></code> element becomes the first <code id=the-base-element:the-base-element-13><a href=#the-base-element>base</a></code> element in <a href=#tree-order id=the-base-element:tree-order>tree
order</a> with an <code id=the-base-element:attr-base-href-6><a href=#attr-base-href>href</a></code> content attribute in its
@@ -10214,7 +10221,7 @@
<p>When a style sheet is ready to be applied, its <a href=#style-sheet-ready id=interactions-of-styling-and-scripting:style-sheet-ready>style sheet ready</a> flag must be set.
If the style sheet referenced no other resources (e.g. it was an internal style sheet given by a
<code id=interactions-of-styling-and-scripting:the-style-element-2><a href=#the-style-element>style</a></code> element with no <code>@import</code> rules), then the style rules must
- be synchronously made available to script; otherwise, the style rules must only be made available
+ be <a href=#immediately id=interactions-of-styling-and-scripting:immediately>immediately</a> made available to script; otherwise, the style rules must only be made available
to script once the <a href=#event-loop id=interactions-of-styling-and-scripting:event-loop>event loop</a> reaches its <i>update the rendering</i> step.</p>
<p>A style sheet in the context of the <code id=interactions-of-styling-and-scripting:document><a href=#document>Document</a></code> of an <a href=#html-parser id=interactions-of-styling-and-scripting:html-parser>HTML parser</a> or
@@ -16034,7 +16041,7 @@
<li><p>Otherwise, let <var>URL</var> be the resulting <a href=#absolute-url id=downloading-resources:absolute-url>absolute
URL</a>.<li><p>In the case of server-side image maps, append the <var id=downloading-resources:hyperlink-suffix><a href=#hyperlink-suffix>hyperlink
suffix</a></var> to <var>URL</var>.<li><p>Return to whatever algorithm invoked these steps and continue
- these steps asynchronously.<li><p><a href=#fetch id=downloading-resources:fetch>Fetch</a> <var>URL</var> and handle the resulting resource
+ these steps <a href=#in-parallel id=downloading-resources:in-parallel>in parallel</a>.<li><p><a href=#fetch id=downloading-resources:fetch>Fetch</a> <var>URL</var> and handle the resulting resource
<a href=#as-a-download id=downloading-resources:as-a-download>as a download</a>.</ol>
<p>When a user agent is to handle a resource obtained from a <a href=#fetch id=downloading-resources:fetch-2>fetch</a> algorithm <dfn id=as-a-download>as
@@ -20074,7 +20081,7 @@
with <a href=#replacement-enabled id=the-iframe-element:replacement-enabled-2>replacement enabled</a>.</p>
<p>When a <code id=the-iframe-element:document-6><a href=#document>Document</a></code> in an <code id=the-iframe-element:the-iframe-element-14><a href=#the-iframe-element>iframe</a></code> is marked as <a href=#completely-loaded id=the-iframe-element:completely-loaded-2>completely
- loaded</a>, the user agent must synchronously run the <a href=#iframe-load-event-steps id=the-iframe-element:iframe-load-event-steps-2>iframe load event steps</a>.</p>
+ loaded</a>, the user agent must run the <a href=#iframe-load-event-steps id=the-iframe-element:iframe-load-event-steps-2>iframe load event steps</a> <a href=#in-parallel id=the-iframe-element:in-parallel>in parallel</a>.</p>
<p class=note>A <code id=the-iframe-element:event-load><a href=#event-load>load</a></code> event is also fired at the
<code id=the-iframe-element:the-iframe-element-15><a href=#the-iframe-element>iframe</a></code> element when it is created if no other data is loaded in it.</p>
@@ -21396,7 +21403,7 @@
and those with other physical or cognitive disabilities, a variety of features are available.
Captions can be provided, either embedded in the video stream or as external files using the
<code id=the-video-element:the-track-element-3><a href=#the-track-element>track</a></code> element. Sign-language tracks can be provided, again either embedded in the
- video stream or by synchronizing multiple <code id=the-video-element:the-video-element-4><a href=#the-video-element>video</a></code> elements using the <code id=the-video-element:attr-media-mediagroup-2><a href=#attr-media-mediagroup>mediagroup</a></code> attribute or a <code id=the-video-element:mediacontroller-2><a href=#mediacontroller>MediaController</a></code>
+ video stream or by synchronising multiple <code id=the-video-element:the-video-element-4><a href=#the-video-element>video</a></code> elements using the <code id=the-video-element:attr-media-mediagroup-2><a href=#attr-media-mediagroup>mediagroup</a></code> attribute or a <code id=the-video-element:mediacontroller-2><a href=#mediacontroller>MediaController</a></code>
object. Audio descriptions can be provided, either as a separate track embedded in the video
stream, or a separate audio track in an <code id=the-video-element:the-audio-element><a href=#the-audio-element>audio</a></code> element <a href=#slaved-media-elements id=the-video-element:slaved-media-elements>slaved</a> to the same controller as the <code id=the-video-element:the-video-element-5><a href=#the-video-element>video</a></code> element(s), or in text
form using a <a href=#webvtt-file id=the-video-element:webvtt-file>WebVTT file</a> referenced using the <code id=the-video-element:the-track-element-4><a href=#the-track-element>track</a></code> element and
@@ -22132,7 +22139,7 @@
<p id=concept-media-load-algorithm-at-creation>If a <a href=#media-element id=location-of-the-media-resource:media-element-4>media element</a> is created with a
- <code id=location-of-the-media-resource:attr-media-src-2><a href=#attr-media-src>src</a></code> attribute, the user agent must synchronously invoke the
+ <code id=location-of-the-media-resource:attr-media-src-2><a href=#attr-media-src>src</a></code> attribute, the user agent must <a href=#immediately id=location-of-the-media-resource:immediately>immediately</a> invoke the
<a href=#media-element id=location-of-the-media-resource:media-element-5>media element</a>'s <a href=#concept-media-load-algorithm id=location-of-the-media-resource:concept-media-load-algorithm>resource selection
algorithm</a>.</p>
@@ -22380,15 +22387,15 @@
</ol>
<p>The <dfn id=concept-media-load-algorithm>resource selection algorithm</dfn> for a
- <a href=#media-element id=loading-the-media-resource:media-element-11>media element</a> is as follows. This algorithm is always invoked synchronously, but one
+ <a href=#media-element id=loading-the-media-resource:media-element-11>media element</a> is as follows. This algorithm is always invoked as part of a <a href=#concept-task id=loading-the-media-resource:concept-task-2>task</a>, but one
of the first steps in the algorithm is to return and continue running the remaining steps
- asynchronously, meaning that it runs in the background with scripts and other <a href=#concept-task id=loading-the-media-resource:concept-task-2>tasks</a> running in parallel. In addition, this algorithm interacts
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel>in parallel</a>. In addition, this algorithm interacts
closely with the <a href=#event-loop id=loading-the-media-resource:event-loop>event loop</a> mechanism; in particular, it has <a href=#synchronous-section id=loading-the-media-resource:synchronous-section>synchronous sections</a> (which are triggered as part of the <a href=#event-loop id=loading-the-media-resource:event-loop-2>event loop</a>
algorithm). Steps in such sections are marked with ⌛.</p>
<ol><li><p>Set the element's <code id=loading-the-media-resource:dom-media-networkstate-3><a href=#dom-media-networkstate>networkState</a></code> attribute to
the <code id=loading-the-media-resource:dom-media-network_no_source><a href=#dom-media-network_no_source>NETWORK_NO_SOURCE</a></code> value.<li><p>Set the element's <a href=#show-poster-flag id=loading-the-media-resource:show-poster-flag>show poster flag</a> to true.<li><p>Set the <a href=#media-element id=loading-the-media-resource:media-element-12>media element</a>'s <a href=#delaying-the-load-event-flag id=loading-the-media-resource:delaying-the-load-event-flag-2>delaying-the-load-event flag</a> to true
- (this <a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-2>delays the load event</a>).<li><p>Asynchronously <a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state>await a stable state</a>, allowing the <a href=#concept-task id=loading-the-media-resource:concept-task-3>task</a> that invoked this algorithm to continue. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-2>synchronous
+ (this <a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-2>delays the load event</a>).<li><p><a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state>Await a stable state</a>, allowing the <a href=#concept-task id=loading-the-media-resource:concept-task-3>task</a> that invoked this algorithm to continue. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-2>synchronous
section</a> consists of all the remaining steps of this algorithm until the algorithm says the
<a href=#synchronous-section id=loading-the-media-resource:synchronous-section-3>synchronous section</a> has ended. (Steps in <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-4>synchronous sections</a> are marked with ⌛.)<li>
@@ -22422,7 +22429,7 @@
<ol><li><p>⌛ Set the <code id=loading-the-media-resource:dom-media-currentsrc><a href=#dom-media-currentsrc>currentSrc</a></code> attribute to
the empty string.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-6>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource>resource fetch algorithm</a>
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-2>in parallel</a>.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource>resource fetch algorithm</a>
with the <a href=#assigned-media-provider-object id=loading-the-media-resource:assigned-media-provider-object-5>assigned media provider object</a>. If that algorithm returns without
aborting <em>this</em> one, then the load failed.<li><p><i>Failed with media provider</i>: Reaching this step indicates that the media
resource failed to load. <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-5>Queue a task</a> to run the <a href=#dedicated-media-source-failure-steps id=loading-the-media-resource:dedicated-media-source-failure-steps>dedicated media source
@@ -22442,7 +22449,7 @@
<li><p>⌛ If <var>absolute URL</var> was obtained successfully, set the <code id=loading-the-media-resource:dom-media-currentsrc-2><a href=#dom-media-currentsrc>currentSrc</a></code> attribute to <var>absolute
URL</var>.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-8>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>If <var>absolute URL</var> was obtained successfully, run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-2>resource fetch algorithm</a> with <var>absolute
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-3>in parallel</a>.<li><p>If <var>absolute URL</var> was obtained successfully, run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-2>resource fetch algorithm</a> with <var>absolute
URL</var>. If that algorithm returns without aborting <em>this</em> one, then the load
failed.<li><p><i>Failed with attribute</i>: Reaching this step indicates that the media resource
failed to load or that the given <a href=#url id=loading-the-media-resource:url-2>URL</a> could not be <a href=#resolve-a-url id=loading-the-media-resource:resolve-a-url-2>resolved</a>. <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-6>Queue a task</a> to run the <a href=#dedicated-media-source-failure-steps id=loading-the-media-resource:dedicated-media-source-failure-steps-2>dedicated media source
@@ -22484,10 +22491,10 @@
type</a> (including any codecs described by the <code>codecs</code> parameter, for
types that define that parameter), represents <a href=#a-type-that-the-user-agent-knows-it-cannot-render id=loading-the-media-resource:a-type-that-the-user-agent-knows-it-cannot-render>a type that the user agent knows it cannot
render</a>, then end the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-11>synchronous section</a>, and jump down to the <i>failed with elements</i> step below.<li><p>⌛ Set the <code id=loading-the-media-resource:dom-media-currentsrc-3><a href=#dom-media-currentsrc>currentSrc</a></code> attribute to <var>absolute URL</var>.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-12>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-3>resource fetch algorithm</a> with
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-4>in parallel</a>.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-3>resource fetch algorithm</a> with
<var>absolute URL</var>. If that algorithm returns without aborting <em>this</em> one,
then the load failed.<li><p><i>Failed with elements</i>: <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-7>Queue a task</a> to <a href=#fire-a-simple-event id=loading-the-media-resource:fire-a-simple-event-5>fire a simple
- event</a> named <code id=loading-the-media-resource:event-error><a href=#event-error>error</a></code> at the <var>candidate</var> element.<li><p>Asynchronously <a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-2>await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-13>synchronous section</a>
+ event</a> named <code id=loading-the-media-resource:event-error><a href=#event-error>error</a></code> at the <var>candidate</var> element.<li><p><a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-2>Await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-13>synchronous section</a>
consists of all the remaining steps of this algorithm until the algorithm says the
<a href=#synchronous-section id=loading-the-media-resource:synchronous-section-14>synchronous section</a> has ended. (Steps in <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-15>synchronous sections</a> are marked with ⌛.)<li><p>⌛ <a href="#forget-the-media-element's-media-resource-specific-tracks" id="loading-the-media-resource:forget-the-media-element's-media-resource-specific-tracks-2">Forget the media element's media-resource-specific
tracks</a>.<li><p>⌛ <i>Find next candidate</i>: Let <var>candidate</var> be
@@ -22498,8 +22505,8 @@
loop</i> step. Otherwise, jump back to the <i>process candidate</i> step.<li><p>⌛ <i>Waiting</i>: Set the element's <code id=loading-the-media-resource:dom-media-networkstate-6><a href=#dom-media-networkstate>networkState</a></code> attribute to the <code id=loading-the-media-resource:dom-media-network_no_source-2><a href=#dom-media-network_no_source>NETWORK_NO_SOURCE</a></code> value.<li><p>⌛ Set the element's <a href=#show-poster-flag id=loading-the-media-resource:show-poster-flag-2>show poster flag</a> to true.<li><p>⌛ <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-8>Queue a task</a> to set the element's <a href=#delaying-the-load-event-flag id=loading-the-media-resource:delaying-the-load-event-flag-3>delaying-the-load-event
flag</a> to false. This stops <a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-3>delaying the load
event</a>.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-16>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>Wait until the node after <var>pointer</var> is a node other than the end of
- the list. (This step might wait forever.)<li><p>Asynchronously <a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-3>await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-17>synchronous section</a>
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-5>in parallel</a>.<li><p>Wait until the node after <var>pointer</var> is a node other than the end of
+ the list. (This step might wait forever.)<li><p><a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-3>Await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-17>synchronous section</a>
consists of all the remaining steps of this algorithm until the algorithm says the
<a href=#synchronous-section id=loading-the-media-resource:synchronous-section-18>synchronous section</a> has ended. (Steps in <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-19>synchronous sections</a> are marked with ⌛.)<li><p>⌛ Set the element's <a href=#delaying-the-load-event-flag id=loading-the-media-resource:delaying-the-load-event-flag-4>delaying-the-load-event flag</a> back to true (this
<a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-4>delays the load event</a> again, in case it hasn't been
@@ -22611,7 +22618,7 @@
event</a> named <code id=loading-the-media-resource:event-media-progress-2><a href=#event-media-progress>progress</a></code> at the element.</p>
<p>The <a href=#networking-task-source id=loading-the-media-resource:networking-task-source>networking task source</a> <a href=#concept-task id=loading-the-media-resource:concept-task-6>tasks</a> to
- process the data as it is being fetched must each immediately <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-16>queue a task</a> to
+ process the data as it is being fetched must each <a href=#immediately id=loading-the-media-resource:immediately>immediately</a> <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-16>queue a task</a> to
run the first appropriate steps from the <a href=#media-data-processing-steps-list id=loading-the-media-resource:media-data-processing-steps-list>media data processing steps list</a>
below. (A new task is used for this so that the work described below occurs relative to the
<a href=#media-element-event-task-source id=loading-the-media-resource:media-element-event-task-source-2>media element event task source</a> rather than the <a href=#networking-task-source id=loading-the-media-resource:networking-task-source-2>networking task
@@ -23782,7 +23789,7 @@
<p>If the time was reached through the usual monotonic increase of the <a href=#current-playback-position id=playing-the-media-resource:current-playback-position-21>current playback
position</a> during normal playback, and there are <a href=#text-track-cue id=playing-the-media-resource:text-track-cue-14>cues</a>
in <var>other cues</var> that have their <a href=#text-track-cue-pause-on-exit-flag id=playing-the-media-resource:text-track-cue-pause-on-exit-flag>text track cue pause-on-exit flag</a>
- set and that either have their <a href=#text-track-cue-active-flag id=playing-the-media-resource:text-track-cue-active-flag-3>text track cue active flag</a> set or are also in <var>missed cues</var>, then immediately <a href=#dom-media-pause id=playing-the-media-resource:dom-media-pause-2>pause</a> the
+ set and that either have their <a href=#text-track-cue-active-flag id=playing-the-media-resource:text-track-cue-active-flag-3>text track cue active flag</a> set or are also in <var>missed cues</var>, then <a href=#immediately id=playing-the-media-resource:immediately>immediately</a> <a href=#dom-media-pause id=playing-the-media-resource:dom-media-pause-2>pause</a> the
<a href=#media-element id=playing-the-media-resource:media-element-72>media element</a>. </p>
<p class=note>In the other cases, such as explicit seeks, playback is not paused by going past
@@ -23850,7 +23857,7 @@
<p>When a <a href=#media-element id=playing-the-media-resource:media-element-75>media element</a> is <a href=#remove-an-element-from-a-document id=playing-the-media-resource:remove-an-element-from-a-document>removed
from a <code>Document</code></a>, the user agent must run the following steps:</p>
- <ol><li><p>Asynchronously <a href=#await-a-stable-state id=playing-the-media-resource:await-a-stable-state-2>await a stable state</a>, allowing the <a href=#concept-task id=playing-the-media-resource:concept-task-13>task</a> that removed the <a href=#media-element id=playing-the-media-resource:media-element-76>media element</a> from the
+ <ol><li><p><a href=#await-a-stable-state id=playing-the-media-resource:await-a-stable-state-2>Await a stable state</a>, allowing the <a href=#concept-task id=playing-the-media-resource:concept-task-13>task</a> that removed the <a href=#media-element id=playing-the-media-resource:media-element-76>media element</a> from the
<code id=playing-the-media-resource:document-3><a href=#document>Document</a></code> to continue. The <a href=#synchronous-section id=playing-the-media-resource:synchronous-section>synchronous section</a> consists of all the
remaining steps of this algorithm. (Steps in the <a href=#synchronous-section id=playing-the-media-resource:synchronous-section-2>synchronous section</a> are marked with
⌛.)<li><p>⌛ If the <a href=#media-element id=playing-the-media-resource:media-element-77>media element</a> is <a href=#in-a-document id=playing-the-media-resource:in-a-document-2>in a <code>Document</code></a>,
@@ -23900,7 +23907,7 @@
is <code id=seeking:dom-media-have_nothing><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, abort these steps.<li><p>If the element's <code id=seeking:dom-media-seeking-2><a href=#dom-media-seeking>seeking</a></code> IDL attribute is true,
then another instance of this algorithm is already running. Abort that other instance of the
algorithm without waiting for the step that it is running to complete.<li><p>Set the <code id=seeking:dom-media-seeking-3><a href=#dom-media-seeking>seeking</a></code> IDL attribute to true.<li><p>If the seek was in response to a DOM method call or setting of an IDL attribute, then
- continue the script. The remainder of these steps must be run asynchronously. With the exception
+ continue the script. The remainder of these steps must be run <a href=#in-parallel id=seeking:in-parallel>in parallel</a>. With the exception
of the steps marked with ⌛, they could be aborted at any time by another instance of this
algorithm being invoked.<li><p>If the <var>new playback position</var> is later than the end of the <a href=#media-resource id=seeking:media-resource-3>media
resource</a>, then let it be the end of the <a href=#media-resource id=seeking:media-resource-4>media resource</a> instead.<li><p>If the <var>new playback position</var> is less than the <a href=#earliest-possible-position id=seeking:earliest-possible-position>earliest possible
@@ -24382,7 +24389,7 @@
<p>Each <a href=#media-element id=introduction-4:media-element>media element</a> can have a <code id=introduction-4:mediacontroller><a href=#mediacontroller>MediaController</a></code>. A
<code id=introduction-4:mediacontroller-2><a href=#mediacontroller>MediaController</a></code> is an object that coordinates the playback of multiple <a href=#media-element id=introduction-4:media-element-2>media elements</a>, for instance so that a sign-language interpreter
- track can be overlaid on a video track, with the two being kept in sync.</p>
+ track can be overlaid on a video track, with the two being kept synchronised.</p>
<p>By default, a <a href=#media-element id=introduction-4:media-element-3>media element</a> has no <code id=introduction-4:mediacontroller-3><a href=#mediacontroller>MediaController</a></code>. An implicit
<code id=introduction-4:mediacontroller-4><a href=#mediacontroller>MediaController</a></code> can be assigned using the <code id=introduction-4:attr-media-mediagroup><a href=#attr-media-mediagroup>mediagroup</a></code> content attribute. An explicit
@@ -24618,7 +24625,7 @@
task</a> to <a href=#fire-a-simple-event id=media-controllers:fire-a-simple-event>fire a simple event</a> named <code id=media-controllers:event-mediacontroller-durationchange><a href=#event-mediacontroller-durationchange>durationchange</a></code> at the
<code id=media-controllers:mediacontroller-15><a href=#mediacontroller>MediaController</a></code>. If the <code id=media-controllers:mediacontroller-16><a href=#mediacontroller>MediaController</a></code>'s <a href=#media-controller-duration id=media-controllers:media-controller-duration-3>media controller
duration</a> decreases such that the <a href=#media-controller-position id=media-controllers:media-controller-position>media controller position</a> is greater than the
- <a href=#media-controller-duration id=media-controllers:media-controller-duration-4>media controller duration</a>, the user agent must immediately <a href=#seek-the-media-controller id=media-controllers:seek-the-media-controller>seek the media
+ <a href=#media-controller-duration id=media-controllers:media-controller-duration-4>media controller duration</a>, the user agent must <a href=#immediately id=media-controllers:immediately>immediately</a> <a href=#seek-the-media-controller id=media-controllers:seek-the-media-controller>seek the media
controller</a> to <a href=#media-controller-duration id=media-controllers:media-controller-duration-5>media controller duration</a>.</p>
<p>The <dfn id=dom-mediacontroller-currenttime><code>currentTime</code></dfn> attribute must
@@ -25533,13 +25540,13 @@
track</a> and its <code id=sourcing-out-of-band-text-tracks:the-track-element-14><a href=#the-track-element>track</a></code> element, abort these steps, letting that other algorithm
take care of this element.<li><p>If the <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-17>text track</a>'s <a href=#text-track-mode id=sourcing-out-of-band-text-tracks:text-track-mode-9>text track mode</a> is not set to one of <a href=#text-track-hidden id=sourcing-out-of-band-text-tracks:text-track-hidden-2>hidden</a> or <a href=#text-track-showing id=sourcing-out-of-band-text-tracks:text-track-showing-4>showing</a>, abort
these steps.<li><p>If the <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-18>text track</a>'s <code id=sourcing-out-of-band-text-tracks:the-track-element-15><a href=#the-track-element>track</a></code> element does not have a <a href=#media-element id=sourcing-out-of-band-text-tracks:media-element-13>media
- element</a> as a parent, abort these steps.<li><p>Run the remainder of these steps asynchronously, allowing whatever caused these steps to
+ element</a> as a parent, abort these steps.<li><p>Run the remainder of these steps <a href=#in-parallel id=sourcing-out-of-band-text-tracks:in-parallel>in parallel</a>, allowing whatever caused these steps to
run to continue.<li><p><i>Top</i>: <a href=#await-a-stable-state id=sourcing-out-of-band-text-tracks:await-a-stable-state>Await a stable state</a>. The <a href=#synchronous-section id=sourcing-out-of-band-text-tracks:synchronous-section-2>synchronous section</a>
consists of the following steps. (The steps in the <a href=#synchronous-section id=sourcing-out-of-band-text-tracks:synchronous-section-3>synchronous section</a> are marked
with ⌛.)<li><p>⌛ Set the <a href=#text-track-readiness-state id=sourcing-out-of-band-text-tracks:text-track-readiness-state-2>text track readiness state</a> to <a href=#text-track-loading id=sourcing-out-of-band-text-tracks:text-track-loading>loading</a>.<li><p>⌛ Let <var>URL</var> be the <a href=#track-url id=sourcing-out-of-band-text-tracks:track-url-2>track URL</a> of the
<code id=sourcing-out-of-band-text-tracks:the-track-element-16><a href=#the-track-element>track</a></code> element.<li><p>⌛ If the <code id=sourcing-out-of-band-text-tracks:the-track-element-17><a href=#the-track-element>track</a></code> element's parent is a <a href=#media-element id=sourcing-out-of-band-text-tracks:media-element-14>media element</a> then
let <var>CORS mode</var> be the state of the parent <a href=#media-element id=sourcing-out-of-band-text-tracks:media-element-15>media element</a>'s <code id=sourcing-out-of-band-text-tracks:attr-media-crossorigin><a href=#attr-media-crossorigin>crossorigin</a></code> content attribute. Otherwise, let <var>CORS mode</var> be <a href=#attr-crossorigin-none id=sourcing-out-of-band-text-tracks:attr-crossorigin-none>No CORS</a>.<li><p>End the <a href=#synchronous-section id=sourcing-out-of-band-text-tracks:synchronous-section-4>synchronous section</a>, continuing the remaining steps
- asynchronously.<li>
+ <a href=#in-parallel id=sourcing-out-of-band-text-tracks:in-parallel-2>in parallel</a>.<li>
<p>If <var>URL</var> is not the empty string, perform a <a href=#potentially-cors-enabled-fetch id=sourcing-out-of-band-text-tracks:potentially-cors-enabled-fetch>potentially CORS-enabled
fetch</a> of <var>URL</var>, with the <i>mode</i> being <var>CORS mode</var>, the <i>origin</i> being the <a href=#origin-2 id=sourcing-out-of-band-text-tracks:origin-2>origin</a> of the
@@ -25558,10 +25565,10 @@
the <a href=#webvtt-parser id=sourcing-out-of-band-text-tracks:webvtt-parser>WebVTT parser</a>) as it is received, with the <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-2>text track list of cues</a> being used for
that parser's output. <a href=#refsWEBVTT>[WEBVTT]</a></p>
- <p class=note>The appropriate parser will synchronously (during these <a href=#networking-task-source id=sourcing-out-of-band-text-tracks:networking-task-source-2>networking task
- source</a> <a href=#concept-task id=sourcing-out-of-band-text-tracks:concept-task-2>tasks</a>) and incrementally (as each such task is
- run with whatever data has been received from the network) update the <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-3>text track list of
- cues</a>.</p>
+ <p class=note>The appropriate parser will incrementally update the <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-3>text track list of
+ cues</a> during these <a href=#networking-task-source id=sourcing-out-of-band-text-tracks:networking-task-source-2>networking task
+ source</a> <a href=#concept-task id=sourcing-out-of-band-text-tracks:concept-task-2>tasks</a>, as each such task is
+ run with whatever data has been received from the network).</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
@@ -25608,7 +25615,7 @@
the same time as the <a href=#text-track-mode id=sourcing-out-of-band-text-tracks:text-track-mode-12>text track mode</a> is set to <a href=#text-track-hidden id=sourcing-out-of-band-text-tracks:text-track-hidden-5>hidden</a> or <a href=#text-track-showing id=sourcing-out-of-band-text-tracks:text-track-showing-7>showing</a>.<li><p>Jump to the step labeled <i>top</i>.</ol>
<p>Whenever a <code id=sourcing-out-of-band-text-tracks:the-track-element-23><a href=#the-track-element>track</a></code> element has its <code id=sourcing-out-of-band-text-tracks:attr-track-src><a href=#attr-track-src>src</a></code> attribute
- set, changed, or removed, the user agent must synchronously empty the element's <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-19>text
+ set, changed, or removed, the user agent must <a href=#immediately id=sourcing-out-of-band-text-tracks:immediately>immediately</a> empty the element's <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-19>text
track</a>'s <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-5>text track list of cues</a>. (This also causes the algorithm above to stop
adding cues from the resource being obtained using the previously given URL, if any.)</p>
@@ -31416,7 +31423,7 @@
<dt><var>form</var> . <code id=the-form-element:dom-form-requestautocomplete-2><a href=#dom-form-requestautocomplete>requestAutocomplete</a></code>()<dd>
- <p>Triggers a user-agent-specific asynchronous user interface to help the user fill in any
+ <p>Triggers a user-agent-specific user interface to help the user fill in any
fields that have an <a href=#autofill-field-name id=the-form-element:autofill-field-name-3>autofill field name</a> other than "<code id=the-form-element:attr-fe-autocomplete-on-2><a href=#attr-fe-autocomplete-on>on</a></code>" or "<code id=the-form-element:attr-fe-autocomplete-off-2><a href=#attr-fe-autocomplete-off>off</a></code>".</p>
<p>The <code id=the-form-element:the-form-element-5><a href=#the-form-element>form</a></code> element will subsequently receive an event, either <code id=the-form-element:event-autocomplete><a href=#event-autocomplete>autocomplete</a></code>, indicating that the fields have been prefilled,
@@ -35693,7 +35700,7 @@
<a href=#activation-behavior id="file-upload-state-(type=file):activation-behavior">activation behavior</a> is to run the following steps:</p>
<ol><li><p>If the algorithm is not <a href=#allowed-to-show-a-popup id="file-upload-state-(type=file):allowed-to-show-a-popup">allowed to show a popup</a>, then abort these steps
- without doing anything else.<li><p>Return, but continue running these steps asynchronously.<li><p>Optionally, wait until any prior execution of this algorithm has terminated.</p>
+ without doing anything else.<li><p>Return, but continue running these steps <a href=#in-parallel id="file-upload-state-(type=file):in-parallel">in parallel</a>.<li><p>Optionally, wait until any prior execution of this algorithm has terminated.</p>
<li><p>Display a prompt to the user requesting that the user specify some files. If the <code id="file-upload-state-(type=file):attr-input-multiple-2"><a href=#attr-input-multiple>multiple</a></code> attribute is not set, there must be no more than one
file selected; otherwise, any number may be selected. Files can be from the filesystem or created
@@ -41683,7 +41690,7 @@
element, or, the element is a <code id=user-interface-for-bulk-autofill:the-select-element><a href=#the-select-element>select</a></code> element<li><p>the element's <code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-3><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute is
wearing the <a href=#autofill-expectation-mantle id=user-interface-for-bulk-autofill:autofill-expectation-mantle>autofill expectation mantle</a><li><p>the element's <a href=#autofill-field-name id=user-interface-for-bulk-autofill:autofill-field-name>autofill field name</a> is neither "<code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>" nor "<code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>"</ul>
- <li><p>Return, but continue running these steps asynchronously.<li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
+ <li><p>Return, but continue running these steps <a href=#in-parallel id=user-interface-for-bulk-autofill:in-parallel>in parallel</a>.<li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
in <var>pending autofills</var>. Await the user's input. The user agent may include additional
(immutable) information, e.g. <a href="#control's-data" id="user-interface-for-bulk-autofill:control's-data">data</a> obtained from elements
with an <code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-4><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute wearing the
@@ -44711,7 +44718,7 @@
<a href=#restrictions-for-contents-of-script-elements id=the-script-element:restrictions-for-contents-of-script-elements>script content restrictions</a>.<dd>If there <em>is</em> a <code id=the-script-element:attr-script-src-2><a href=#attr-script-src>src</a></code>
attribute, the element must be either empty or contain only
<a href=#inline-documentation-for-external-scripts id=the-script-element:inline-documentation-for-external-scripts>script documentation</a> that also matches <a href=#restrictions-for-contents-of-script-elements id=the-script-element:restrictions-for-contents-of-script-elements-2>script
- content restrictions</a>.<dt><a href=#concept-element-tag-omission id=the-script-element:concept-element-tag-omission>Tag omission in text/html</a>:<dd>Neither tag is omissible.<dt><a href=#concept-element-attributes id=the-script-element:concept-element-attributes>Content attributes</a>:<dd><a href=#global-attributes id=the-script-element:global-attributes>Global attributes</a><dd><code id=the-script-element:attr-script-src-3><a href=#attr-script-src>src</a></code> — Address of the resource<dd><code id=the-script-element:attr-script-type-2><a href=#attr-script-type>type</a></code> — Type of embedded resource<dd><code id=the-script-element:attr-script-charset><a href=#attr-script-charset>charset</a></code> — Character encoding of the external script resource<dd><code id=the-script-element:attr-script-async><a href=#attr-script-async>async</a></code> — Execute script asynchronously<dd><code id=the-script-element:attr-script-defer><a href=#attr-script-defer>defer</a
></code> — Defer script execution<dd><code id=the-script-element:attr-script-crossorigin><a href=#attr-script-crossorigin>crossorigin</a></code> — How the element handles crossorigin requests<dt><a href=#concept-element-dom id=the-script-element:concept-element-dom>DOM interface</a>:<dd>
+ content restrictions</a>.<dt><a href=#concept-element-tag-omission id=the-script-element:concept-element-tag-omission>Tag omission in text/html</a>:<dd>Neither tag is omissible.<dt><a href=#concept-element-attributes id=the-script-element:concept-element-attributes>Content attributes</a>:<dd><a href=#global-attributes id=the-script-element:global-attributes>Global attributes</a><dd><code id=the-script-element:attr-script-src-3><a href=#attr-script-src>src</a></code> — Address of the resource<dd><code id=the-script-element:attr-script-type-2><a href=#attr-script-type>type</a></code> — Type of embedded resource<dd><code id=the-script-element:attr-script-charset><a href=#attr-script-charset>charset</a></code> — Character encoding of the external script resource<dd><code id=the-script-element:attr-script-async><a href=#attr-script-async>async</a></code> — Execute script when available, without blocking<dd><code id=the-script-element:attr-script-defer><a href=#attr-scr
ipt-defer>defer</a></code> — Defer script execution<dd><code id=the-script-element:attr-script-crossorigin><a href=#attr-script-crossorigin>crossorigin</a></code> — How the element handles crossorigin requests<dt><a href=#concept-element-dom id=the-script-element:concept-element-dom>DOM interface</a>:<dd>
<pre class=idl>interface <dfn id=htmlscriptelement>HTMLScriptElement</dfn> : <a href=#htmlelement id=the-script-element:htmlelement>HTMLElement</a> {
attribute DOMString <a href=#dom-script-src id=the-script-element:dom-script-src>src</a>;
attribute DOMString <a href=#dom-script-type id=the-script-element:dom-script-type>type</a>;
@@ -44764,7 +44771,7 @@
present.</p>
<p>There are three possible modes that can be selected using these attributes. If the <code id=the-script-element:attr-script-async-3><a href=#attr-script-async>async</a></code> attribute is present, then the script will be executed
- asynchronously, as soon as it is available. If the <code id=the-script-element:attr-script-async-4><a href=#attr-script-async>async</a></code>
+ as soon as it is available, but without blocking further parsing of the page. If the <code id=the-script-element:attr-script-async-4><a href=#attr-script-async>async</a></code>
attribute is not present but the <code id=the-script-element:attr-script-defer-3><a href=#attr-script-defer>defer</a></code> attribute is
present, then the script is executed when the page has finished parsing. If neither attribute is
present, then the script is fetched and executed immediately, before the user agent continues
@@ -44778,7 +44785,7 @@
and <a href=#scriptTagXML>in XML</a>, the rules for the <code id=the-script-element:dom-document-write><a href=#dom-document-write>document.write()</a></code> method, the handling of <a href=#scripting>scripting</a>, etc.</p>
<p>The <code id=the-script-element:attr-script-defer-4><a href=#attr-script-defer>defer</a></code> attribute may be specified even if the <code id=the-script-element:attr-script-async-5><a href=#attr-script-async>async</a></code> attribute is specified, to cause legacy Web browsers that
- only support <code id=the-script-element:attr-script-defer-5><a href=#attr-script-defer>defer</a></code> (and not <code id=the-script-element:attr-script-async-6><a href=#attr-script-async>async</a></code>) to fall back to the <code id=the-script-element:attr-script-defer-6><a href=#attr-script-defer>defer</a></code> behavior instead of the synchronous blocking behavior that
+ only support <code id=the-script-element:attr-script-defer-5><a href=#attr-script-defer>defer</a></code> (and not <code id=the-script-element:attr-script-async-6><a href=#attr-script-async>async</a></code>) to fall back to the <code id=the-script-element:attr-script-defer-6><a href=#attr-script-defer>defer</a></code> behavior instead of the blocking behavior that
is the default.</p>
<p>The <dfn id=attr-script-crossorigin><code>crossorigin</code></dfn> attribute is a
@@ -44802,11 +44809,11 @@
parser</a> and the <a href=#xml-parser id=the-script-element:xml-parser>XML parser</a> on <code id=the-script-element:the-script-element-9><a href=#the-script-element>script</a></code> elements they insert and
affects the processing of those elements.</p>
- <p>The third is a flag indicating whether the element will <dfn id=force-async>"force-async"</dfn>. Initially,
+ <p>The third is a flag indicating whether the element will <dfn id=non-blocking>"non-blocking"</dfn>. Initially,
<code id=the-script-element:the-script-element-10><a href=#the-script-element>script</a></code> elements must have this flag set. It is unset by the <a href=#html-parser id=the-script-element:html-parser-2>HTML parser</a>
and the <a href=#xml-parser id=the-script-element:xml-parser-2>XML parser</a> on <code id=the-script-element:the-script-element-11><a href=#the-script-element>script</a></code> elements they insert. In addition, whenever
- a <code id=the-script-element:the-script-element-12><a href=#the-script-element>script</a></code> element whose <a href=#force-async id=the-script-element:force-async>"force-async"</a> flag is set has a <code id=the-script-element:attr-script-async-8><a href=#attr-script-async>async</a></code> content attribute added, the element's
- <a href=#force-async id=the-script-element:force-async-2>"force-async"</a> flag must be unset.</p>
+ a <code id=the-script-element:the-script-element-12><a href=#the-script-element>script</a></code> element whose <a href=#non-blocking id=the-script-element:non-blocking>"non-blocking"</a> flag is set has a <code id=the-script-element:attr-script-async-8><a href=#attr-script-async>async</a></code> content attribute added, the element's
+ <a href=#non-blocking id=the-script-element:non-blocking-2>"non-blocking"</a> flag must be unset.</p>
<p>The fourth is a flag indicating whether or not the script block is <dfn id=ready-to-be-parser-executed>"ready to be
parser-executed"</dfn>. Initially, <code id=the-script-element:the-script-element-13><a href=#the-script-element>script</a></code> elements must have this flag unset (script
@@ -44822,7 +44829,7 @@
<code id=the-script-element:the-script-element-14><a href=#the-script-element>script</a></code> element's <a id=the-script-element:node-document href=https://dom.spec.whatwg.org/#concept-node-document data-x-internal=node-document>node document</a>.</p>
<p>When a <code id=the-script-element:the-script-element-15><a href=#the-script-element>script</a></code> element that is not marked as being <a href=#parser-inserted id=the-script-element:parser-inserted-2>"parser-inserted"</a>
- experiences one of the events listed in the following list, the user agent must synchronously
+ experiences one of the events listed in the following list, the user agent must <a href=#immediately id=the-script-element:immediately>immediately</a>
<a href=#prepare-a-script id=the-script-element:prepare-a-script>prepare</a> the <code id=the-script-element:the-script-element-16><a href=#the-script-element>script</a></code> element:</p>
<ul><li>The <code id=the-script-element:the-script-element-17><a href=#the-script-element>script</a></code> element gets <a href=#insert-an-element-into-a-document id=the-script-element:insert-an-element-into-a-document>inserted
@@ -44856,11 +44863,11 @@
<li>
<p>If <var>was-parser-inserted</var> is true and the element does not have an <code id=the-script-element:attr-script-async-9><a href=#attr-script-async>async</a></code> attribute, then set the element's
- <a href=#force-async id=the-script-element:force-async-3>"force-async"</a> flag to true.</p>
+ <a href=#non-blocking id=the-script-element:non-blocking-3>"non-blocking"</a> flag to true.</p>
<p class=note>This is done so that if a parser-inserted <code id=the-script-element:the-script-element-25><a href=#the-script-element>script</a></code> element fails to
run when the parser tries to run it, but it is later executed after a script dynamically updates
- it, it will execute asynchronously even if the <code id=the-script-element:attr-script-async-10><a href=#attr-script-async>async</a></code>
+ it, it will execute in a non-blocking fashion even if the <code id=the-script-element:attr-script-async-10><a href=#attr-script-async>async</a></code>
attribute isn't set.</p>
<li id=script-processing-empty>
@@ -44910,7 +44917,7 @@
<li>
<p>If <var>was-parser-inserted</var> is true, then flag the element as
- <a href=#parser-inserted id=the-script-element:parser-inserted-5>"parser-inserted"</a> again, and set the element's <a href=#force-async id=the-script-element:force-async-4>"force-async"</a> flag to
+ <a href=#parser-inserted id=the-script-element:parser-inserted-5>"parser-inserted"</a> again, and set the element's <a href=#non-blocking id=the-script-element:non-blocking-4>"non-blocking"</a> flag to
false.</p>
<li id=script-processing-start>
@@ -45043,7 +45050,7 @@
executing the script.</p>
<dt id=script-processing-src-sync>If the element has a <code id=the-script-element:attr-script-src-18><a href=#attr-script-src>src</a></code> attribute, does not have an <code id=the-script-element:attr-script-async-13><a href=#attr-script-async>async</a></code> attribute, and does not have the
- <a href=#force-async id=the-script-element:force-async-5>"force-async"</a> flag set<dd>
+ <a href=#non-blocking id=the-script-element:non-blocking-5>"non-blocking"</a> flag set<dd>
<p>The element must be added to the end of the <dfn id=list-of-scripts-that-will-execute-in-order-as-soon-as-possible>list of scripts that will execute in order
as soon as possible</dfn> associated with the <a id=the-script-element:node-document-4 href=https://dom.spec.whatwg.org/#concept-node-document data-x-internal=node-document>node document</a> of the <code id=the-script-element:the-script-element-42><a href=#the-script-element>script</a></code>
@@ -45074,7 +45081,7 @@
has completed must <a href=#execute-the-script-block id=the-script-element:execute-the-script-block-2>execute the script block</a> and then remove the element from the
<a href=#set-of-scripts-that-will-execute-as-soon-as-possible id=the-script-element:set-of-scripts-that-will-execute-as-soon-as-possible>set of scripts that will execute as soon as possible</a>.</p>
- <dt id=script-processing-inline>Otherwise<dd>The user agent must immediately <a href=#execute-the-script-block id=the-script-element:execute-the-script-block-3>execute the script block</a>, even if other
+ <dt id=script-processing-inline>Otherwise<dd>The user agent must <a href=#immediately id=the-script-element:immediately-2>immediately</a> <a href=#execute-the-script-block id=the-script-element:execute-the-script-block-3>execute the script block</a>, even if other
scripts are already executing.</dl>
</ol>
@@ -45245,12 +45252,12 @@
<a href=#reflect id=the-script-element:reflect-2>reflect</a> the <code id=the-script-element:attr-script-crossorigin-6><a href=#attr-script-crossorigin>crossorigin</a></code> content attribute.</p>
<p>The <dfn id=dom-script-async><code>async</code></dfn> IDL attribute controls whether the
- element will execute asynchronously or not. If the element's <a href=#force-async id=the-script-element:force-async-6>"force-async"</a> flag is
+ element will execute asynchronously or not. If the element's <a href=#non-blocking id=the-script-element:non-blocking-6>"non-blocking"</a> flag is
set, then, on getting, the <code id=the-script-element:dom-script-async-2><a href=#dom-script-async>async</a></code> IDL attribute must return
- true, and on setting, the <a href=#force-async id=the-script-element:force-async-7>"force-async"</a> flag must first be unset, and then the
+ true, and on setting, the <a href=#non-blocking id=the-script-element:non-blocking-7>"non-blocking"</a> flag must first be unset, and then the
content attribute must be removed if the IDL attribute's new value is false, and must be set to
the empty string if the IDL attribute's new value is true. If the element's
- <a href=#force-async id=the-script-element:force-async-8>"force-async"</a> flag is <em>not</em> set, the IDL attribute must <a href=#reflect id=the-script-element:reflect-3>reflect</a>
+ <a href=#non-blocking id=the-script-element:non-blocking-8>"non-blocking"</a> flag is <em>not</em> set, the IDL attribute must <a href=#reflect id=the-script-element:reflect-3>reflect</a>
the <code id=the-script-element:attr-script-async-14><a href=#attr-script-async>async</a></code> content attribute.</p>
@@ -45276,7 +45283,7 @@
<p class=note>When inserted using the <code id=the-script-element:dom-document-write-2><a href=#dom-document-write>document.write()</a></code>
- method, <code id=the-script-element:the-script-element-58><a href=#the-script-element>script</a></code> elements execute (typically synchronously), but when inserted using
+ method, <code id=the-script-element:the-script-element-58><a href=#the-script-element>script</a></code> elements execute (typically blocking further script execution or HTML parsing), but when inserted using
<code id=the-script-element:dom-innerhtml><a href=#dom-innerhtml>innerHTML</a></code> and <code id=the-script-element:dom-outerhtml><a href=#dom-outerhtml>outerHTML</a></code>
attributes, they do not execute at all.</p>
@@ -45570,7 +45577,7 @@
<ul><li><p>When an XSLT transformation program is triggered by an <code><?xml-stylesheet?></code> processing instruction and the browser implements a
direct-to-DOM transformation, <code id=scriptTagXSLT:the-script-element-3><a href=#the-script-element>script</a></code> elements created by the XSLT processor need to
be marked <a href=#parser-inserted id=scriptTagXSLT:parser-inserted>"parser-inserted"</a> and run in document order (modulo scripts marked <code id=scriptTagXSLT:attr-script-defer><a href=#attr-script-defer>defer</a></code> or <code id=scriptTagXSLT:attr-script-async><a href=#attr-script-async>async</a></code>),
- asynchronously while the transformation is occurring.<li><p>The <code id=scriptTagXSLT:dom-xsltprocessor-transformtodocument><a href=#dom-xsltprocessor-transformtodocument>XSLTProcessor.transformToDocument()</a></code> method
+ <a href=#immediately id=scriptTagXSLT:immediately>immediately</a>, as the transformation is occurring.<li><p>The <code id=scriptTagXSLT:dom-xsltprocessor-transformtodocument><a href=#dom-xsltprocessor-transformtodocument>XSLTProcessor.transformToDocument()</a></code> method
adds elements to a <code id=scriptTagXSLT:document><a href=#document>Document</a></code> that is not in a <a href=#browsing-context id=scriptTagXSLT:browsing-context>browsing context</a>, and,
accordingly, any <code id=scriptTagXSLT:the-script-element-4><a href=#the-script-element>script</a></code> elements they create need to have their <a href=#already-started id=scriptTagXSLT:already-started>"already
started"</a> flag set in the <a href=#prepare-a-script id=scriptTagXSLT:prepare-a-script>prepare a script</a> algorithm and never get executed
@@ -46230,7 +46237,7 @@
<p>Otherwise, let <var>result</var> be a <code id=the-canvas-element:blob-2><a href=#blob>Blob</a></code> object representing <a href=#a-serialisation-of-the-bitmap-as-a-file id=the-canvas-element:a-serialisation-of-the-bitmap-as-a-file-2>a serialisation of the <code>canvas</code> element's
bitmap as a file</a>, using <var>arguments</var>. <a href=#refsFILEAPI>[FILEAPI]</a> </p>
- <li><p>Return, but continue running these steps asynchronously.<li><p>If <var>callback</var> is null, abort these steps.<li><p><a href=#queue-a-task id=the-canvas-element:queue-a-task>Queue a task</a> to invoke the <code id=the-canvas-element:filecallback-2><a href=#filecallback>FileCallback</a></code> <var>callback</var> with
+ <li><p>Return, but continue running these steps <a href=#in-parallel id=the-canvas-element:in-parallel>in parallel</a>.<li><p>If <var>callback</var> is null, abort these steps.<li><p><a href=#queue-a-task id=the-canvas-element:queue-a-task>Queue a task</a> to invoke the <code id=the-canvas-element:filecallback-2><a href=#filecallback>FileCallback</a></code> <var>callback</var> with
<var>result</var> as its argument. The <a href=#task-source id=the-canvas-element:task-source>task source</a> for this task is the <dfn id=canvas-blob-serialisation-task-source>canvas
blob serialisation task source</dfn>.</ol>
@@ -51844,7 +51851,7 @@
<p>This example shows a simple vocabulary used to describe the products of a model railway
manufacturer. The vocabulary has just five property names:</p>
- <dl><dt>product-code<dd>An integer that names the product in the manufacturer's catalog.<dt>name<dd>A brief description of the product.<dt>scale<dd>One of "HO", "1", or "Z" (potentially with leading or trailing
+ <dl><dt>product-code<dd>An integer that names the product in the manufacturer's catalogue.<dt>name<dd>A brief description of the product.<dt>scale<dd>One of "HO", "1", or "Z" (potentially with leading or trailing
whitespace), indicating the scale of the product.<dt>digital<dd>If present, one of "Digital", "Delta", or "Systems"
(potentially with leading or trailing whitespace) indicating that
the product has a digital decoder of the given type.<dt>track-type<dd>For track-specific products, one of "K", "M", "C" (potentially
@@ -54592,7 +54599,7 @@
itself.<li><p>Let <var>new chain</var> be the <a href=#focus-chain id=processing-model-6:focus-chain-2>focus chain</a> of <var>new
focus target</var>.<li><p>Run the <a href=#focus-update-steps id=processing-model-6:focus-update-steps>focus update steps</a> with <var>old chain</var>, <var>new chain</var>, and <var>new focus target</var> respectively.</ol>
- <p>User agents must synchronously run the <a href=#focusing-steps id=processing-model-6:focusing-steps-2>focusing steps</a> for a <a href=#focusable-area id=processing-model-6:focusable-area-10>focusable area</a>,
+ <p>User agents must <a href=#immediately id=processing-model-6:immediately>immediately</a> run the <a href=#focusing-steps id=processing-model-6:focusing-steps-2>focusing steps</a> for a <a href=#focusable-area id=processing-model-6:focusable-area-10>focusable area</a>,
<code id=processing-model-6:the-dialog-element-3><a href=#the-dialog-element>dialog</a></code>, or <a href=#browsing-context id=processing-model-6:browsing-context-4>browsing context</a> <var>candidate</var> whenever the
user attempts to move the focus to <var>candidate</var>.</p>
@@ -54629,7 +54636,7 @@
<p>When the <a href=#currently-focused-area-of-a-top-level-browsing-context id=processing-model-6:currently-focused-area-of-a-top-level-browsing-context-7>currently focused area of a top-level browsing context</a> is somehow
unfocused without another element being explicitly focused in its stead, the user agent must
- synchronously run the <a href=#unfocusing-steps id=processing-model-6:unfocusing-steps>unfocusing steps</a> for that object.</p>
+ <a href=#immediately id=processing-model-6:immediately-2>immediately</a> run the <a href=#unfocusing-steps id=processing-model-6:unfocusing-steps>unfocusing steps</a> for that object.</p>
<p class=note>The <a href=#unfocusing-steps id=processing-model-6:unfocusing-steps-2>unfocusing steps</a> do not always result in the focus changing, even
when applied to the <a href=#currently-focused-area-of-a-top-level-browsing-context id=processing-model-6:currently-focused-area-of-a-top-level-browsing-context-8>currently focused area of a top-level browsing context</a>. For
@@ -55370,7 +55377,7 @@
disabled.</p>
<p>When the <code id=making-entire-documents-editable:-the-designmode-idl-attribute:designMode-8><a href=#designMode>designMode</a></code> changes from being disabled to
- being enabled, the user agent must synchronously reset the document's <a href=#active-range id=making-entire-documents-editable:-the-designmode-idl-attribute:active-range>active range</a>'s
+ being enabled, the user agent must <a href=#immediately id=making-entire-documents-editable:-the-designmode-idl-attribute:immediately>immediately</a> reset the document's <a href=#active-range id=making-entire-documents-editable:-the-designmode-idl-attribute:active-range>active range</a>'s
start and end boundary points to be at the start of the <code id=making-entire-documents-editable:-the-designmode-idl-attribute:document-2><a href=#document>Document</a></code> and then run the
<a href=#focusing-steps id=making-entire-documents-editable:-the-designmode-idl-attribute:focusing-steps>focusing steps</a> for the root element of the <code id=making-entire-documents-editable:-the-designmode-idl-attribute:document-3><a href=#document>Document</a></code>, if any.</p>
@@ -58958,9 +58965,9 @@
<p>Each <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-4>top-level browsing context</a> has a <dfn id=session-history-traversal-queue>session history traversal queue</dfn>,
initially empty, to which <a href=#concept-task id=the-history-interface:concept-task>tasks</a> can be added.</p>
- <p>Each <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-5>top-level browsing context</a>, when created, must asynchronously begin running
+ <p>Each <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-5>top-level browsing context</a>, when created, must begin running
the following algorithm, known as the <dfn id=session-history-event-loop>session history event loop</dfn> for that
- <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-6>top-level browsing context</a>:</p>
+ <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-6>top-level browsing context</a>, <a href=#in-parallel id=the-history-interface:in-parallel>in parallel</a>:</p>
<ol><li><p>Wait until this <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-7>top-level browsing context</a>'s <a href=#session-history-traversal-queue id=the-history-interface:session-history-traversal-queue>session history traversal
queue</a> is not empty.<li><p>Pull the first <a href=#concept-task id=the-history-interface:concept-task-2>task</a> from this <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-8>top-level browsing
@@ -59508,9 +59515,9 @@
<p class=note>The <a href=#navigate-redirect-step><i>handle redirects</i></a> step later in
this algorithm can in certain cases jump back to the step labeled <a href=#navigate-fragid-step><i>fragment identifiers</i></a>. Since, between those two steps,
- this algorithm goes from operating synchronously in the context of the calling <a href=#concept-task id=navigating-across-documents:concept-task-2>task</a> to operating asynchronously independent of the <a href=#event-loop id=navigating-across-documents:event-loop>event
- loop</a>, some of the intervening steps need to be able to handle both being synchronous and
- being asynchronous. The <var>gone async</var> flag is thus used to make these steps
+ this algorithm goes from operating synchronously in the context of the calling <a href=#concept-task id=navigating-across-documents:concept-task-2>task</a> to operating <a href=#in-parallel id=navigating-across-documents:in-parallel>in parallel</a> independent of the <a href=#event-loop id=navigating-across-documents:event-loop>event
+ loop</a>, some of the intervening steps need to be able to handle both being run as part of a <a href=#concept-task id=navigating-across-documents:concept-task-3>task</a> and
+ running <a href=#in-parallel id=navigating-across-documents:in-parallel-2>in parallel</a>. The <var>gone async</var> flag is thus used to make these steps
aware of which mode they are operating in.</p>
<li id=navigate-fragid-step><p><i>Fragment identifiers</i>: If this is not a
@@ -59614,7 +59621,7 @@
</ol>
- <p>The <a href=#task-source id=navigating-across-documents:task-source>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-3>task</a> is the
+ <p>The <a href=#task-source id=navigating-across-documents:task-source>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-4>task</a> is the
<a href=#dom-manipulation-task-source id=navigating-across-documents:dom-manipulation-task-source>DOM manipulation task source</a>.</p>
<div class=example>
@@ -59944,7 +59951,7 @@
indicated part of the document</a>, then return to the <i>fragment identifier loop</i>
step.</ol>
- <p>The <a href=#task-source id=navigating-across-documents:task-source-2>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-4>task</a> is the
+ <p>The <a href=#task-source id=navigating-across-documents:task-source-2>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-5>task</a> is the
<a href=#networking-task-source id=navigating-across-documents:networking-task-source>networking task source</a>.</p>
@@ -60218,7 +60225,7 @@
<a href=#top-level-browsing-context id=scroll-to-fragid:top-level-browsing-context>top-level browsing context</a>'s <a href=#document-family id=scroll-to-fragid:document-family>document family</a>.<li><p>Append a new entry at the end of the <code id=scroll-to-fragid:history-3><a href=#history-3>History</a></code> object representing the new
resource and its <code id=scroll-to-fragid:document-2><a href=#document>Document</a></code> object and related state. Its <a href=#url id=scroll-to-fragid:url>URL</a> must be set
to the address to which the user agent was <a href=#navigate id=scroll-to-fragid:navigate>navigating</a>. The title
- must be left unset.<li><p><a href=#traverse-the-history id=scroll-to-fragid:traverse-the-history>Traverse the history</a> to the new entry, with the <i>asynchronous events</i> flag
+ must be left unset.<li><p><a href=#traverse-the-history id=scroll-to-fragid:traverse-the-history>Traverse the history</a> to the new entry, with the <i>non-blocking events</i> flag
set. This will <a href=#scroll-to-the-fragment-identifier id=scroll-to-fragid:scroll-to-the-fragment-identifier>scroll to the fragment
identifier</a> given in what is now <a id="scroll-to-fragid:the-document's-address" href=https://dom.spec.whatwg.org/#concept-document-url data-x-internal="the-document's-address">the document's address</a>.</ol>
@@ -60281,7 +60288,7 @@
<p>When a user agent is required to <dfn id=traverse-the-history>traverse the history</dfn> to a <var>specified
entry</var>, optionally with <a href=#replacement-enabled id=history-traversal:replacement-enabled>replacement enabled</a>, and optionally with the
- <i>asynchronous events</i> flag set, the user agent must act as follows.</p>
+ <i>non-blocking events</i> flag set, the user agent must act as follows.</p>
<p class=note>This algorithm is not just invoked when <a href=#traverse-the-history-by-a-delta id=history-traversal:traverse-the-history-by-a-delta>explicitly going back or forwards in the session history</a> — it is also invoked
in other situations, for example when <a href=#navigate id=history-traversal:navigate>navigating a browsing context</a>,
@@ -60394,9 +60401,9 @@
<li><p>Let the <a href=#latest-entry id=history-traversal:latest-entry-2>latest entry</a> of the <code id=history-traversal:document-20><a href=#document>Document</a></code> of the <var>specified entry</var> be the <var>specified entry</var>.<li>
- <p>If the <i>asynchronous events</i> flag is not set, then run the following steps
- synchronously. Otherwise, the <i>asynchronous events</i> flag is set; <a href=#queue-a-task id=history-traversal:queue-a-task-2>queue a task</a>
- to run the following substeps.</p>
+ <p>If the <i>non-blocking events</i> flag is not set, then run the following steps
+ <a href=#immediately id=history-traversal:immediately>immediately</a>. Otherwise, the <i>non-blocking events</i> flag is set; <a href=#queue-a-task id=history-traversal:queue-a-task-2>queue a task</a>
+ to run the following substeps instead.</p>
<ol><li><p>If <var>state changed</var> is true, <a href=#concept-event-fire id=history-traversal:concept-event-fire-2>fire</a> a <a href=#concept-events-trusted id=history-traversal:concept-events-trusted-2>trusted</a>
event with the name <code id=history-traversal:event-popstate><a href=#event-popstate>popstate</a></code> at the <code id=history-traversal:window-2><a href=#window>Window</a></code>
@@ -61499,7 +61506,7 @@
identify a <a href=#concept-appcache-manifest id=downloading-or-updating-an-application-cache:concept-appcache-manifest>manifest</a>, or for an <a href=#application-cache-group id=downloading-or-updating-an-application-cache:application-cache-group>application
cache group</a>, potentially given a particular <a href=#cache-host id=downloading-or-updating-an-application-cache:cache-host>cache host</a>, and potentially given
a <a href=#concept-appcache-master id=downloading-or-updating-an-application-cache:concept-appcache-master>master</a> resource, the user agent must run the steps
- below. These steps are always run asynchronously, in parallel with the <a href=#event-loop id=downloading-or-updating-an-application-cache:event-loop>event loop</a>
+ below. These steps are always run <a href=#in-parallel id=downloading-or-updating-an-application-cache:in-parallel>in parallel</a> with the <a href=#event-loop id=downloading-or-updating-an-application-cache:event-loop>event loop</a>
<a href=#concept-task id=downloading-or-updating-an-application-cache:concept-task>tasks</a>.</p>
<p>Some of these steps have requirements that only apply if the user agent <dfn id=shows-caching-progress>shows caching
@@ -61576,7 +61583,7 @@
some sort of user interface indicating to the user that the user agent is checking for the
availability of updates.</ol>
- <p class=note>The remainder of the steps run asynchronously.</p>
+ <p class=note>The remainder of the steps run <a href=#in-parallel id=downloading-or-updating-an-application-cache:in-parallel-2>in parallel</a>.</p>
<p>If <var>cache group</var> already has an <a href=#application-cache id=downloading-or-updating-an-application-cache:application-cache-3>application cache</a> in it, then
this is an <dfn id=concept-appcache-upgrade>upgrade attempt</dfn>. Otherwise, this is a
@@ -61590,7 +61597,7 @@
display of some sort of user interface indicating to the user that the user agent is checking for
the availability of updates.<li>
- <p><i>Fetching the manifest</i>: <a href=#fetch id=downloading-or-updating-an-application-cache:fetch>Fetch</a> the resource from <var>manifest URL</var> with the <i>synchronous flag</i> set, and let <var>manifest</var> be that resource. HTTP caching semantics should be honored for this
+ <p><i>Fetching the manifest</i>: <a href=#fetch id=downloading-or-updating-an-application-cache:fetch>Fetch</a> the resource from <var>manifest URL</var> with the <i>blocking flag</i> set, and let <var>manifest</var> be that resource. HTTP caching semantics should be honored for this
request. The <i>override referrer source</i> must be null.</p>
<p>Parse <var>manifest</var> according to the <a href=#parse-a-manifest id=downloading-or-updating-an-application-cache:parse-a-manifest>rules for
@@ -61730,7 +61737,7 @@
in preparation for updating the application. <a href=#refsXHR>[XHR]</a><li>
<p><a href=#fetch id=downloading-or-updating-an-application-cache:fetch-2>Fetch</a> the resource, from the <a href=#origin-2 id=downloading-or-updating-an-application-cache:origin-2>origin</a> of the
- <a href=#url id=downloading-or-updating-an-application-cache:url-3>URL</a> <var>manifest URL</var>, with the <i>synchronous flag</i> set and
+ <a href=#url id=downloading-or-updating-an-application-cache:url-3>URL</a> <var>manifest URL</var>, with the <i>blocking flag</i> set and
the <i>manual redirect flag</i> set. If this is an <a href=#concept-appcache-upgrade id=downloading-or-updating-an-application-cache:concept-appcache-upgrade-3>upgrade attempt</a>, then use the <a href=#concept-appcache-newer id=downloading-or-updating-an-application-cache:concept-appcache-newer-4>newest</a> <a href=#application-cache id=downloading-or-updating-an-application-cache:application-cache-15>application cache</a> in <var>cache group</var> as an HTTP cache, and honor HTTP caching semantics (such as
expiration, ETags, and so forth) with respect to that cache. User agents may also have other
caches in place that are also honored. The <i>override referrer source</i> must be null.</p>
@@ -61859,7 +61866,7 @@
<li>
<p><a href=#fetch id=downloading-or-updating-an-application-cache:fetch-5>Fetch</a> the resource from <var>manifest URL</var> again, with
- the <i>synchronous flag</i> set, and let <var>second manifest</var> be that resource.
+ the <i>blocking flag</i> set, and let <var>second manifest</var> be that resource.
HTTP caching semantics should again be honored for this request. The <i>override referrer source</i> must be null.</p>
<p class=note>Since caching can be honored, authors are encouraged to avoid setting the cache
@@ -62111,7 +62118,7 @@
<p class=note>How quotas are presented to the user is not defined by this specification. User
agents are encouraged to provide features such as allowing a user to indicate that certain sites
- are trusted to use more than the default quota, e.g. by asynchronously presenting a user interface
+ are trusted to use more than the default quota, e.g. by presenting a non-modal user interface
while a cache is being updated, or by having an explicit whitelist in the user agent's
configuration interface.</p>
@@ -62945,15 +62952,15 @@
<dl><dt>Events<dd>
- <p>Asynchronously dispatching an <code id=definitions-3:event><a href=#event>Event</a></code> object at a particular
+ <p>Dispatching an <code id=definitions-3:event><a href=#event>Event</a></code> object at a particular
<code id=definitions-3:eventtarget><a href=#eventtarget>EventTarget</a></code> object is often done by a dedicated task.</p>
<p class=note>Not all events are dispatched using the <a href=#task-queue id=definitions-3:task-queue-2>task queue</a>, many are
- dispatched synchronously during other tasks.</p>
+ dispatched during other tasks.</p>
<dt>Parsing<dd><p>The <a href=#html-parser id=definitions-3:html-parser>HTML parser</a> tokenizing one or more bytes, and then processing any
- resulting tokens, is typically a task.<dt>Callbacks<dd><p>Calling a callback asynchronously is often done by a dedicated task.<dt>Using a resource<dd><p>When an algorithm <a href=#fetch id=definitions-3:fetch>fetches</a> a resource, if the fetching occurs
- asynchronously then the processing of the resource once some or all of the resource is available
+ resulting tokens, is typically a task.<dt>Callbacks<dd><p>Calling a callback is often done by a dedicated task.<dt>Using a resource<dd><p>When an algorithm <a href=#fetch id=definitions-3:fetch>fetches</a> a resource, if the fetching occurs
+ in a non-blocking fashion then the processing of the resource once some or all of the resource is available
is performed by a task.<dt>Reacting to DOM manipulation<dd><p>Some elements have tasks that trigger in response to DOM manipulation, e.g. when that
element is <a href=#insert-an-element-into-a-document id=definitions-3:insert-an-element-into-a-document>inserted into the document</a>.</p>
@@ -63105,11 +63112,14 @@
<hr>
- <p>When an asynchronously-running algorithm is to <dfn id=await-a-stable-state>await a stable state</dfn>, the user agent
- must <a href=#queue-a-microtask id=processing-model-9:queue-a-microtask>queue a microtask</a> that first runs the algorithm's <dfn id=synchronous-section>synchronous
- section</dfn>, and then resumes running the asynchronous algorithm (if appropriate), as described
- in the algorithm's steps.</p>
+ <p>When an algorithm running <a href=#in-parallel id=processing-model-9:in-parallel>in parallel</a> is to <dfn id=await-a-stable-state>await a stable state</dfn>, the
+ user agent must <a href=#queue-a-microtask id=processing-model-9:queue-a-microtask>queue a microtask</a> that runs the following steps, and must then stop
+ executing (execution of the algorithm resumes when the microtask is run, as described in the
+ following steps):</p>
+ <ol><li><p>Run the algorithm's <dfn id=synchronous-section>synchronous section</dfn>.<li><p>Resumes execution of the algorithm <a href=#in-parallel id=processing-model-9:in-parallel-2>in parallel</a>, if appropriate, as described
+ in the algorithm's steps.</ol>
+
<p class=note>Steps in <a href=#synchronous-section id=processing-model-9:synchronous-section>synchronous sections</a> are marked
with ⌛.</p>
@@ -63132,7 +63142,7 @@
of script settings objects</a>.<li><p>Empty the <a href=#stack-of-script-settings-objects id=processing-model-9:stack-of-script-settings-objects-2>stack of script settings objects</a>.<li><p><a href=#run-the-global-script-clean-up-jobs id=processing-model-9:run-the-global-script-clean-up-jobs>Run the global script clean-up jobs</a>.<li><p><a href=#perform-a-microtask-checkpoint id=processing-model-9:perform-a-microtask-checkpoint-3>Perform a microtask checkpoint</a>.<li>
<p>Stop <var>task</var>, allowing whatever algorithm that invoked it to resume, but
- continue these steps asynchronously.</p>
+ continue these steps <a href=#in-parallel id=processing-model-9:in-parallel-3>in parallel</a>.</p>
<p class=note>This causes one of the following algorithms to continue: the <a href=#event-loop id=processing-model-9:event-loop-25>event
loop</a>'s main set of steps, the <a href=#perform-a-microtask-checkpoint id=processing-model-9:perform-a-microtask-checkpoint-4>perform a microtask checkpoint</a> algorithm, or
@@ -63175,14 +63185,14 @@
<dl><dt>The <dfn id=dom-manipulation-task-source>DOM manipulation task source</dfn><dd>
<p>This <a href=#task-source id=generic-task-sources:task-source-2>task source</a> is used for features that react to DOM manipulations, such as
- things that happen asynchronously when an element is <a href=#insert-an-element-into-a-document id=generic-task-sources:insert-an-element-into-a-document>inserted into the document</a>.</p>
+ things that happen in a non-blocking fashion when an element is <a href=#insert-an-element-into-a-document id=generic-task-sources:insert-an-element-into-a-document>inserted into the document</a>.</p>
<dt>The <dfn id=user-interaction-task-source>user interaction task source</dfn><dd>
<p>This <a href=#task-source id=generic-task-sources:task-source-3>task source</a> is used for features that react to user interaction, for
example keyboard or mouse input.</p>
- <p>Asynchronous events sent in response to user input (e.g. <code id=generic-task-sources:event-click><a href=#event-click>click</a></code> events) must be fired using <a href=#concept-task id=generic-task-sources:concept-task>tasks</a> <a href=#queue-a-task id=generic-task-sources:queue-a-task>queued</a> with the <a href=#user-interaction-task-source id=generic-task-sources:user-interaction-task-source>user
+ <p>Events sent in response to user input (e.g. <code id=generic-task-sources:event-click><a href=#event-click>click</a></code> events) must be fired using <a href=#concept-task id=generic-task-sources:concept-task>tasks</a> <a href=#queue-a-task id=generic-task-sources:queue-a-task>queued</a> with the <a href=#user-interaction-task-source id=generic-task-sources:user-interaction-task-source>user
interaction task source</a>. <a href=#refsDOMEVENTS>[DOMEVENTS]</a></p>
<dt>The <dfn id=networking-task-source>networking task source</dfn><dd>
@@ -64039,7 +64049,7 @@
<p class=note>This basically causes <code id=opening-the-input-stream:dom-document-open-6><a href=#dom-document-open>document.open()</a></code> to
be ignored when it's called in an inline script found during parsing, while still letting it
- have an effect when called asynchronously.</p>
+ have an effect when called from a non-parser task such as a timer callback or event handler.</p>
<li>
@@ -64406,7 +64416,7 @@
by this algorithm, then let <var>nesting level</var> be the <a href=#concept-task id=timers:concept-task-4>task</a>'s <a href=#timer-nesting-level id=timers:timer-nesting-level>timer nesting level</a>. Otherwise, let <var>nesting level</var> be zero.<li><p>If <var>nesting level</var> is greater than 5, and <var>timeout</var> is
less than 4, then increase <var>timeout</var> to 4.<li><p>Increment <var>nesting level</var> by one.<li><p>Let <var>task</var>'s <dfn id=timer-nesting-level>timer nesting level</dfn> be <var>nesting
level</var>.<li><p>Return <var>handle</var>, and then continue running this algorithm
- asynchronously.<li>
+ <a href=#in-parallel id=timers:in-parallel>in parallel</a>.<li>
<p>If <var>method context</var> is a <code id=timers:window-5><a href=#window>Window</a></code> object, wait until the
<code id=timers:document><a href=#document>Document</a></code> associated with <var>method context</var> has been <a href=#fully-active id=timers:fully-active>fully
@@ -64582,7 +64592,7 @@
<p>When the <dfn id=dom-print><code>print()</code></dfn> method is invoked, if the
<code id=printing:document><a href=#document>Document</a></code> is <a href=#ready-for-post-load-tasks id=printing:ready-for-post-load-tasks>ready for post-load tasks</a>, then the user agent must
- synchronously run the <a href=#printing-steps id=printing:printing-steps>printing steps</a>. Otherwise, the user agent must only set the
+ run the <a href=#printing-steps id=printing:printing-steps>printing steps</a> <a href=#in-parallel id=printing:in-parallel>in parallel</a>. Otherwise, the user agent must only set the
<dfn id=print-when-loaded>print when loaded</dfn> flag on the <code id=printing:document-2><a href=#document>Document</a></code>.</p>
@@ -66033,7 +66043,7 @@
image of the animation (the one that the format defines is to be used when animation is not
supported or is disabled), or, if there is no such image, the first frame of the
animation.<li><p>Return a new <code id=images:promise-4><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill>Fulfill</a> the <code id=images:promise-5><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill>Fulfill</a> the <code id=images:promise-5><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver>resolver</a>, with the new
<code id=images:imagebitmap-12><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66051,7 +66061,7 @@
correction has been applied), <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-2>cropped to the source rectangle</a>.</p>
<li><p>Return a new <code id=images:promise-6><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-2>Fulfill</a> the <code id=images:promise-7><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel-2>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-2>Fulfill</a> the <code id=images:promise-7><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-2>resolver</a>, with the new
<code id=images:imagebitmap-15><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66065,7 +66075,7 @@
vertical dimension equal to zero, then throw an <code id=images:invalidstateerror-7><a href=#invalidstateerror>InvalidStateError</a></code> exception and
abort these steps.<li><p>Create a new <code id=images:imagebitmap-16><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-17><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be a copy of the
<code id=images:the-canvas-element-6><a href=#the-canvas-element>canvas</a></code> element's bitmap data, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-3>cropped to the source
- rectangle</a>.<li><p>Return a new <code id=images:promise-8><a href=#promise>Promise</a></code>, but continue running these steps asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-3>Fulfill</a> the <code id=images:promise-9><a href=#promise>Promise</a></code>'s
+ rectangle</a>.<li><p>Return a new <code id=images:promise-8><a href=#promise>Promise</a></code>, but continue running these steps <a href=#in-parallel id=images:in-parallel-3>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-3>Fulfill</a> the <code id=images:promise-9><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-3>resolver</a>, with the new
<code id=images:imagebitmap-18><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66075,7 +66085,7 @@
<ol><li><p>If either the <var>sw</var> or <var>sh</var> arguments are specified
but zero, throw an <code id=images:indexsizeerror-4><a href=#indexsizeerror>IndexSizeError</a></code> exception and abort these steps.<li><p>If the <code id=images:blob-4><a href=#blob>Blob</a></code> object has been disabled through the <code id=images:dom-blob-close><a href=#dom-blob-close>close()</a></code> method, then throw an <code id=images:invalidstateerror-8><a href=#invalidstateerror>InvalidStateError</a></code>
- exception and abort these steps.<li><p>Return a new <code id=images:promise-10><a href=#promise>Promise</a></code>, but continue running these steps asynchronously.<li><p>Read the <code id=images:blob-5><a href=#blob>Blob</a></code> object's data. If an <a href=#file-error-read id=images:file-error-read>error
+ exception and abort these steps.<li><p>Return a new <code id=images:promise-10><a href=#promise>Promise</a></code>, but continue running these steps <a href=#in-parallel id=images:in-parallel-4>in parallel</a>.<li><p>Read the <code id=images:blob-5><a href=#blob>Blob</a></code> object's data. If an <a href=#file-error-read id=images:file-error-read>error
occurs during reading of the object</a>, then <a href=#concept-resolver-reject id=images:concept-resolver-reject>reject</a> the <code id=images:promise-11><a href=#promise>Promise</a></code>'s associated <a href=#concept-resolver id=images:concept-resolver-4>resolver</a>, with null as the value, and abort these
steps.<li><p>Apply the <a href=https://mimesniff.spec.whatwg.org/#rules-for-sniffing-images-specifically id=images:content-type-sniffing:-image data-x-internal=content-type-sniffing:-image>image sniffing rules</a> to
determine the file format of the image data, with MIME type of the <code id=images:blob-6><a href=#blob>Blob</a></code> (as given
@@ -66101,7 +66111,7 @@
but zero, throw an <code id=images:indexsizeerror-5><a href=#indexsizeerror>IndexSizeError</a></code> exception and abort these steps.<li><p>If the <var>image</var> object's <code id=images:dom-imagedata-data-2><a href=#dom-imagedata-data>data</a></code>
attribute has been <a href=#concept-transferable-neutered id=images:concept-transferable-neutered-2>neutered</a>, throw an
<code id=images:invalidstateerror-9><a href=#invalidstateerror>InvalidStateError</a></code> exception and abort these steps.<li><p>Create a new <code id=images:imagebitmap-23><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-24><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be the image data given by the
- <code id=images:imagedata-5><a href=#imagedata>ImageData</a></code> object, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-5>cropped to the source rectangle</a>.<li><p>Return a new <code id=images:promise-14><a href=#promise>Promise</a></code>, but continue running these steps asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-5>Fulfill</a> the <code id=images:promise-15><a href=#promise>Promise</a></code>'s
+ <code id=images:imagedata-5><a href=#imagedata>ImageData</a></code> object, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-5>cropped to the source rectangle</a>.<li><p>Return a new <code id=images:promise-14><a href=#promise>Promise</a></code>, but continue running these steps <a href=#in-parallel id=images:in-parallel-5>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-5>Fulfill</a> the <code id=images:promise-15><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-7>resolver</a>, with the new
<code id=images:imagebitmap-25><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66117,7 +66127,7 @@
<code id=images:invalidstateerror-11><a href=#invalidstateerror>InvalidStateError</a></code> exception and abort these steps.<li><p>Create a new <code id=images:imagebitmap-26><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-27><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be a copy of the
<code id=images:canvasrenderingcontext2d-7><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#scratch-bitmap id=images:scratch-bitmap-3>scratch bitmap</a>, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-6>cropped to
the source rectangle</a>.<li><p>Return a new <code id=images:promise-16><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-6>Fulfill</a> the <code id=images:promise-17><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel-6>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-6>Fulfill</a> the <code id=images:promise-17><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-8>resolver</a>, with the new
<code id=images:imagebitmap-28><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66128,7 +66138,7 @@
<ol><li><p>If either the <var>sw</var> or <var>sh</var> arguments are specified
but zero, throw an <code id=images:indexsizeerror-7><a href=#indexsizeerror>IndexSizeError</a></code> exception and abort these steps.<li><p>Create a new <code id=images:imagebitmap-30><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-31><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be a copy of the <var>image</var> argument's bitmap data, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-7>cropped to the source
rectangle</a>.<li><p>Return a new <code id=images:promise-18><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-7>Fulfill</a> the <code id=images:promise-19><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel-7>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-7>Fulfill</a> the <code id=images:promise-19><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-9>resolver</a>, with the new
<code id=images:imagebitmap-32><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66390,7 +66400,7 @@
these steps.<li><p>Create a new <code id=the-eventsource-interface:eventsource-2><a href=#eventsource>EventSource</a></code> object.<li><p>Let <var>CORS mode</var> be <a href=#attr-crossorigin-anonymous id=the-eventsource-interface:attr-crossorigin-anonymous>Anonymous</a>.<li><p>If the second argument is present, and the <code id=the-eventsource-interface:dom-eventsourceinit-withcredentials><a href=#dom-eventsourceinit-withcredentials>withCredentials</a></code> dictionary member has the
value true, then set <var>CORS mode</var> to <a href=#attr-crossorigin-use-credentials id=the-eventsource-interface:attr-crossorigin-use-credentials>Use Credentials</a> and initialise the new
<code id=the-eventsource-interface:eventsource-3><a href=#eventsource>EventSource</a></code> object's <code id=the-eventsource-interface:dom-eventsource-withcredentials-2><a href=#dom-eventsource-withcredentials>withCredentials</a></code> attribute to true.<li><p>Return the new <code id=the-eventsource-interface:eventsource-4><a href=#eventsource>EventSource</a></code> object, but continue these steps
- asynchronously.<li>
+ <a href=#in-parallel id=the-eventsource-interface:in-parallel>in parallel</a>.<li>
<p>Do a <a href=#potentially-cors-enabled-fetch id=the-eventsource-interface:potentially-cors-enabled-fetch>potentially CORS-enabled fetch</a> of the resulting <a href=#absolute-url id=the-eventsource-interface:absolute-url>absolute
URL</a> using the <a href=#api-referrer-source id=the-eventsource-interface:api-referrer-source>API referrer source</a> specified by the <a href=#entry-settings-object id=the-eventsource-interface:entry-settings-object-2>entry settings
@@ -66488,7 +66498,7 @@
<p>The <a href=#concept-task id=processing-model-10:concept-task-2>task</a> that the <a href=#networking-task-source id=processing-model-10:networking-task-source-2>networking task source</a> places
on the <a href=#task-queue id=processing-model-10:task-queue>task queue</a> once the <a href=#fetch id=processing-model-10:fetch-2>fetching algorithm</a> for such a
resource (with the correct <a href=#mime-type id=processing-model-10:mime-type-3>MIME type</a>) has completed must cause the user agent to
- asynchronously <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection>reestablish the connection</a>. This applies whether the connection is
+ <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection>reestablish the connection</a> <a href=#in-parallel id=processing-model-10:in-parallel>in parallel</a>. This applies whether the connection is
closed gracefully or unexpectedly (but does not apply when the <a href=#fetch id=processing-model-10:fetch-3>fetch</a> algorithm is
canceled by the user agent, e.g. in response to <code id=processing-model-10:dom-window-stop><a href=#dom-window-stop>window.stop()</a></code>,
since in those cases the final <a href=#concept-task id=processing-model-10:concept-task-3>task</a> is actually discarded).
@@ -66510,7 +66520,7 @@
<p id=event-source-network-errors-reconnect>Network errors that prevents the connection from
being established in the first place (e.g. DNS errors), must cause the user agent to
- asynchronously <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection-2>reestablish the connection</a>.</p>
+ <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection-2>reestablish the connection</a> <a href=#in-parallel id=processing-model-10:in-parallel-2>in parallel</a>.</p>
<p id=event-source-fail-reasons>Any other HTTP response code not listed here, as well as the
cancelation of the <a href=#fetch id=processing-model-10:fetch-5>fetch</a> algorithm by the user agent (e.g. in response to <code id=processing-model-10:dom-window-stop-2><a href=#dom-window-stop>window.stop()</a></code> or the user canceling the network connection
@@ -66527,8 +66537,8 @@
object.</p>
<p>When a user agent is to <dfn id=reestablish-the-connection>reestablish the connection</dfn>, the user agent must run the
- following steps. These steps are run asynchronously, not as part of a <a href=#concept-task id=processing-model-10:concept-task-4>task</a>. (The tasks that it queues, of course, are run like normal tasks
- and not asynchronously.)</p>
+ following steps. These steps are run <a href=#in-parallel id=processing-model-10:in-parallel-3>in parallel</a>, not as part of a <a href=#concept-task id=processing-model-10:concept-task-4>task</a>. (The tasks that it queues, of course, are run like normal tasks
+ and not themselves <a href=#in-parallel id=processing-model-10:in-parallel-4>in parallel</a>.)</p>
<ol><li>
@@ -67026,7 +67036,7 @@
steps. <a href=#refsWSP>[WSP]</a><li><p>Let <var>origin</var> be the <a href=#ascii-serialisation-of-an-origin id=the-websocket-interface:ascii-serialisation-of-an-origin>ASCII
serialisation</a> of the <a href=#origin-2 id=the-websocket-interface:origin-2-2>origin</a> specified by the <a href=#entry-settings-object id=the-websocket-interface:entry-settings-object-2>entry settings
object</a>, <a href=#converted-to-ascii-lowercase id=the-websocket-interface:converted-to-ascii-lowercase>converted to ASCII lowercase</a>.<li><p>Return a new <code id=the-websocket-interface:websocket-2><a href=#websocket>WebSocket</a></code> object, but continue these steps
- asynchronously.<li><p>Let the new object's <dfn id=client-specified-protocols>client-specified protocols</dfn> be the values (if any) given in
+ <a href=#in-parallel id=the-websocket-interface:in-parallel>in parallel</a>.<li><p>Let the new object's <dfn id=client-specified-protocols>client-specified protocols</dfn> be the values (if any) given in
<var>protocols</var>.<li>
<p><i id=the-websocket-interface:concept-websocket-establish><a href=#concept-websocket-establish>Establish a WebSocket connection</a></i> given the set
@@ -67165,7 +67175,7 @@
using <code id=the-websocket-interface:dom-websocket-send-5><a href=#dom-websocket-send>send()</a></code> but that, as of the last time the
<a href=#event-loop id=the-websocket-interface:event-loop>event loop</a> reached step 1, had not yet been transmitted to the network. (This thus
includes any text sent during the execution of the current task, regardless of whether the user
- agent is able to transmit text asynchronously with script execution.) This does not include
+ agent is able to transmit text in the background <a href=#in-parallel id=the-websocket-interface:in-parallel-2>in parallel</a> with script execution.) This does not include
framing overhead incurred by the protocol, or buffering done by the operating system or network
hardware. If the connection is closed, this attribute's value will only increase with each call to
the <code id=the-websocket-interface:dom-websocket-send-6><a href=#dom-websocket-send>send()</a></code> method (the number does not reset to zero once
@@ -67734,7 +67744,7 @@
<li><p>Make <var>new ports</var> into a <a href=#dfn-read-only-array id=posting-messages:dfn-read-only-array>read
only</a> array.<li><p>Return from the <code id=posting-messages:dom-window-postmessage-2><a href=#dom-window-postmessage>postMessage()</a></code> method, but
- asynchronously continue running these steps.<li>
+ <a href=#in-parallel id=posting-messages:in-parallel>in parallel</a> continue running these steps.<li>
<p>If the <var>targetOrigin</var> argument is a single literal U+002F SOLIDUS
character (/), and the <code id=posting-messages:document-3><a href=#document>Document</a></code> of the <code id=posting-messages:window-5><a href=#window>Window</a></code> object on which the
@@ -67779,7 +67789,7 @@
<p>Communication channels in this mechanism are implemented as two-ways pipes, with a port at each
end. Messages sent in one port are delivered at the other port, and vice-versa. Messages are
- asynchronous, and delivered as DOM events.</p>
+ delivered as DOM events, without interrupting or blocking running <a href=#concept-task id=introduction-14:concept-task>tasks</a>.</p>
<p>To create a connection (two "entangled" ports), the <code>MessageChannel()</code>
constructor is called:</p>
@@ -68128,7 +68138,7 @@
is entangled, if any.<li>
<p>Let <var>doomed</var> be false. It is set to true if a condition is detected that
- will make this message cause the port to be unusable; specifically, if the message contains <var>target port</var> as one of the objects being <a href=#transfer-a-transferable-object id=message-ports:transfer-a-transferable-object-3>transferred</a>. (This condition cannot necessarily be detected synchronously.)</p>
+ will make this message cause the port to be unusable; specifically, if the message contains <var>target port</var> as one of the objects being <a href=#transfer-a-transferable-object id=message-ports:transfer-a-transferable-object-3>transferred</a>. (This condition cannot necessarily be detected when the method is called.)</p>
<li>
@@ -69490,7 +69500,7 @@
<p>Once the <code id=worker-event-loop:workerglobalscope-3><a href=#workerglobalscope>WorkerGlobalScope</a></code>'s <a href=#dom-workerglobalscope-closing id=worker-event-loop:dom-workerglobalscope-closing>closing</a> flag is set to true, the <a href=#event-loop id=worker-event-loop:event-loop-4>event
loop</a>'s <a href=#task-queue id=worker-event-loop:task-queue-2>task queues</a> must discard any further <a href=#concept-task id=worker-event-loop:concept-task-2>tasks</a> that would be added to them (tasks already on the queue are
unaffected except where otherwise specified). Effectively, once the <a href=#dom-workerglobalscope-closing id=worker-event-loop:dom-workerglobalscope-closing-2>closing</a> flag is true, timers stop firing,
- notifications for all pending asynchronous operations are dropped, etc.</p>
+ notifications for all pending background operations are dropped, etc.</p>
@@ -69558,7 +69568,7 @@
<ol><li id=worker-processing-model-top>
<p>Create a separate parallel execution environment (i.e. a separate thread or process or
- equivalent construct), and run the rest of these steps asynchronously in that context.</p>
+ equivalent construct), and run the rest of these steps in that context.</p>
<p>For the purposes of timing APIs, this is the <dfn id=official-moment-of-creation>official moment of creation</dfn> of the
worker.</p>
@@ -69574,7 +69584,7 @@
<p>Attempt to <a href=#fetch id=processing-model-11:fetch>fetch</a> the resource identified by <var>url</var>, from the
<a href=#origin-2 id=processing-model-11:origin-2>origin</a> specified by <var>settings object</var>, using the <a href=#responsible-document id=processing-model-11:responsible-document>responsible
document</a> specified by <var>settings object</var> as the <a href=#referrer-source id=processing-model-11:referrer-source>referrer source</a> (not
- the specified <a href=#api-referrer-source id=processing-model-11:api-referrer-source>API referrer source</a>!), and with the <i>synchronous flag</i> set and
+ the specified <a href=#api-referrer-source id=processing-model-11:api-referrer-source>API referrer source</a>!), and with the <i>blocking flag</i> set and
the <i>force same-origin flag</i> set.</p>
<p>If the attempt fails, then for each <code id=processing-model-11:worker><a href=#worker>Worker</a></code> or <code id=processing-model-11:sharedworker><a href=#sharedworker>SharedWorker</a></code> object
@@ -69882,7 +69892,7 @@
and <var>worker URL</var>, and let <var>settings object</var> be the result.<li><p>Create a new <code id=dedicated-workers-and-the-worker-interface:worker-8><a href=#worker>Worker</a></code> object, associated with <var>worker global scope</var>.
Let <var>worker</var> be this new object.<li><p><a href=#create-a-new-messageport-object id=dedicated-workers-and-the-worker-interface:create-a-new-messageport-object>Create a new <code>MessagePort</code> object</a> whose <a href=#concept-port-owner id=dedicated-workers-and-the-worker-interface:concept-port-owner>owner</a> is the <a href=#incumbent-settings-object id=dedicated-workers-and-the-worker-interface:incumbent-settings-object-2>incumbent settings object</a>. Let this
be the <var>outside port</var>.<li><p>Associate the <var>outside port</var> with <var>worker</var>.<li><p><a href=#create-a-new-messageport-object id=dedicated-workers-and-the-worker-interface:create-a-new-messageport-object-2>Create a new <code>MessagePort</code> object</a> whose <a href=#concept-port-owner id=dedicated-workers-and-the-worker-interface:concept-port-owner-2>owner</a> is <var>settings object</var>. Let <var>inside
- port</var> be this new object.<li><p>Associate <var>inside port</var> with <var>worker global scope</var>.<li><p><a href=#entangle id=dedicated-workers-and-the-worker-interface:entangle>Entangle</a> <var>outside port</var> and <var>inside port</var>.<li><p>Return <var>worker</var>, and run the following steps asynchronously.<li><p>Enable <var>outside port</var>'s <a href=#port-message-queue id=dedicated-workers-and-the-worker-interface:port-message-queue>port message queue</a>.<li><p>Let <var>docs</var> be the <a href=#list-of-relevant-document-objects-to-add id=dedicated-workers-and-the-worker-interface:list-of-relevant-document-objects-to-add>list of relevant <code>Document</code> objects to
+ port</var> be this new object.<li><p>Associate <var>inside port</var> with <var>worker global scope</var>.<li><p><a href=#entangle id=dedicated-workers-and-the-worker-interface:entangle>Entangle</a> <var>outside port</var> and <var>inside port</var>.<li><p>Return <var>worker</var>, and run the following steps <a href=#in-parallel id=dedicated-workers-and-the-worker-interface:in-parallel>in parallel</a>.<li><p>Enable <var>outside port</var>'s <a href=#port-message-queue id=dedicated-workers-and-the-worker-interface:port-message-queue>port message queue</a>.<li><p>Let <var>docs</var> be the <a href=#list-of-relevant-document-objects-to-add id=dedicated-workers-and-the-worker-interface:list-of-relevant-document-objects-to-add>list of relevant <code>Document</code> objects to
add</a> given the <a href=#incumbent-settings-object id=dedicated-workers-and-the-worker-interface:incumbent-settings-object-3>incumbent settings object</a>.<li><p><a href="#add-a-document-to-the-worker's-documents" id="dedicated-workers-and-the-worker-interface:add-a-document-to-the-worker's-documents">Add to <var>worker global
scope</var>'s list of <span>the worker's <code>Document</code>s</span></a> the
<code id=dedicated-workers-and-the-worker-interface:document><a href=#document>Document</a></code> objects in <var>docs</var>.<li><p>If the <a href=#global-object id=dedicated-workers-and-the-worker-interface:global-object>global object</a> specified by the <a href=#incumbent-settings-object id=dedicated-workers-and-the-worker-interface:incumbent-settings-object-4>incumbent settings object</a>
@@ -70003,7 +70013,7 @@
<var>worker global scope</var> to <var>name</var>.<li><p><a href=#create-a-new-messageport-object id=shared-workers-and-the-sharedworker-interface:create-a-new-messageport-object-3>Create a new <code>MessagePort</code> object</a> whose <a href=#concept-port-owner id=shared-workers-and-the-sharedworker-interface:concept-port-owner-3>owner</a> is <var>settings object</var>. Let <var>inside
port</var> be this new object.<li><p><a href=#entangle id=shared-workers-and-the-sharedworker-interface:entangle-2>Entangle</a> <var>outside port</var> and <var>inside port</var>.</ol>
- <li><p>Return <var>worker</var> and perform the remaining steps asynchronously.<li><p>Create a <a href=#concept-events-trusted id=shared-workers-and-the-sharedworker-interface:concept-events-trusted-2>trusted</a> event that uses the
+ <li><p>Return <var>worker</var> and perform the remaining steps <a href=#in-parallel id=shared-workers-and-the-sharedworker-interface:in-parallel>in parallel</a>.<li><p>Create a <a href=#concept-events-trusted id=shared-workers-and-the-sharedworker-interface:concept-events-trusted-2>trusted</a> event that uses the
<code id=shared-workers-and-the-sharedworker-interface:messageevent-2><a href=#messageevent>MessageEvent</a></code> interface, with the name <code id=shared-workers-and-the-sharedworker-interface:event-workerglobalscope-connect-2><a href=#event-workerglobalscope-connect>connect</a></code>, which does not bubble, is not
cancelable, has no default action, has a <code id=shared-workers-and-the-sharedworker-interface:dom-messageevent-data-2><a href=#dom-messageevent-data>data</a></code>
attribute whose value is initialised to the empty string, has a <code id=shared-workers-and-the-sharedworker-interface:dom-messageevent-ports-2><a href=#dom-messageevent-ports>ports</a></code> attribute whose value is initialised to a <a href=#dfn-read-only-array id=shared-workers-and-the-sharedworker-interface:dfn-read-only-array-2>read only</a> array containing only the newly created port, and
@@ -70053,7 +70063,7 @@
<ol><li><p>If there are no arguments, return without doing anything. Abort these steps.<li><p>Let <var>settings object</var> be the <a href=#incumbent-settings-object id=importing-scripts-and-libraries:incumbent-settings-object>incumbent settings
object</a>.<li><p><a href=#resolve-a-url id=importing-scripts-and-libraries:resolve-a-url>Resolve</a> each argument.<li><p>If any fail, throw a <code id=importing-scripts-and-libraries:syntaxerror><a href=#syntaxerror>SyntaxError</a></code> exception and abort these steps.<li>
- <p>Attempt to <a href=#fetch id=importing-scripts-and-libraries:fetch>fetch</a> each resource identified by the resulting <a href=#absolute-url id=importing-scripts-and-libraries:absolute-url>absolute URLs</a>, from the <a href=#origin-2 id=importing-scripts-and-libraries:origin-2>origin</a> specified by <var>settings object</var>, using the <a href=#api-referrer-source id=importing-scripts-and-libraries:api-referrer-source>API referrer source</a> specified by <var>settings object</var>, and with the <i>synchronous flag</i> set.</p>
+ <p>Attempt to <a href=#fetch id=importing-scripts-and-libraries:fetch>fetch</a> each resource identified by the resulting <a href=#absolute-url id=importing-scripts-and-libraries:absolute-url>absolute URLs</a>, from the <a href=#origin-2 id=importing-scripts-and-libraries:origin-2>origin</a> specified by <var>settings object</var>, using the <a href=#api-referrer-source id=importing-scripts-and-libraries:api-referrer-source>API referrer source</a> specified by <var>settings object</var>, and with the <i>blocking flag</i> set.</p>
<li>
@@ -74377,7 +74387,7 @@
location</var> finds itself.<li>
<p>Mark the element as being <a href=#parser-inserted id=parsing-main-inhead:parser-inserted>"parser-inserted"</a> and unset the element's
- <a href=#force-async id=parsing-main-inhead:force-async>"force-async"</a> flag.</p>
+ <a href=#non-blocking id=parsing-main-inhead:non-blocking>"non-blocking"</a> flag.</p>
<p class=note>This ensures that, if the script is external, any <code id=parsing-main-inhead:dom-document-write><a href=#dom-document-write>document.write()</a></code> calls in the script will execute in-line,
instead of blowing the document away, as would happen in most other cases. It also prevents
@@ -77403,7 +77413,7 @@
<p id=scriptTagXML>When an <a href=#xml-parser id=parsing-xhtml-documents:xml-parser-3>XML parser</a> with <a href=#xml-scripting-support-enabled id=parsing-xhtml-documents:xml-scripting-support-enabled-2>XML scripting support enabled</a>
creates a <code id=parsing-xhtml-documents:the-script-element><a href=#the-script-element>script</a></code> element, it
- must be marked as being <a href=#parser-inserted id=parsing-xhtml-documents:parser-inserted>"parser-inserted"</a> and its <a href=#force-async id=parsing-xhtml-documents:force-async>"force-async"</a> flag
+ must be marked as being <a href=#parser-inserted id=parsing-xhtml-documents:parser-inserted>"parser-inserted"</a> and its <a href=#non-blocking id=parsing-xhtml-documents:non-blocking>"non-blocking"</a> flag
must be unset. If the parser was originally created for the <a href=#xml-fragment-parsing-algorithm id=parsing-xhtml-documents:xml-fragment-parsing-algorithm>XML fragment parsing
algorithm</a>, then the element must be marked as <a href=#already-started id=parsing-xhtml-documents:already-started>"already started"</a> also. When the
element's end tag is subsequently parsed, the user agent must <a href=#perform-a-microtask-checkpoint id=parsing-xhtml-documents:perform-a-microtask-checkpoint>perform a microtask checkpoint</a>, and
@@ -79545,8 +79555,8 @@
determinate and indeterminate progress bars. User agents are also expected to vary the
presentation based on the dimensions of the element.</p>
- <p class=example>For example, on some platforms for showing indeterminate progress there is an
- asynchronous progress indicator with square dimensions, which could be used when the element is
+ <p class=example>For example, on some platforms for showing indeterminate progress there is a
+ "spinner" progress indicator with square dimensions, which could be used when the element is
square, and an indeterminate progress bar, which could be used when the element is wide.</p>
<p class=note>Requirements for how to determine if the progress bar is determinate or
@@ -82629,7 +82639,7 @@
<td> <a href=#attribute-text>Text</a>*
<tr><th> <code>async</code>
<td> <code id=attributes-3:attr-script-async><a href=#attr-script-async>script</a></code>
- <td> Execute script asynchronously
+ <td> Execute script when available, without blocking
<td> <a href=#boolean-attribute id=attributes-3:boolean-attribute-2>Boolean attribute</a>
<tr><th> <code>autocomplete</code>
<td> <code id=attributes-3:attr-form-autocomplete><a href=#attr-form-autocomplete>form</a></code>
Modified: index
===================================================================
--- index 2014-09-19 21:41:15 UTC (rev 8798)
+++ index 2014-09-19 23:19:48 UTC (rev 8799)
@@ -1066,7 +1066,7 @@
the script uninterrupted before doing anything else, such as firing further events or continuing
to parse the document.</p>
- <p>On the other hand, parsing of HTML files happens asynchronously and incrementally, meaning that
+ <p>On the other hand, parsing of HTML files happens incrementally, meaning that
the parser can pause at any point to let scripts run. This is generally a good thing, but it does
mean that authors need to be careful to avoid hooking event handlers after the events could have
possibly fired.</p>
@@ -1493,7 +1493,7 @@
migrating between HTML and XHTML.</p>
<p class=example>For example, there are somewhat complicated rules surrounding the <code id=restrictions-on-content-models-and-on-attribute-values:attr-lang><a href=#attr-lang>lang</a></code> and <code id=restrictions-on-content-models-and-on-attribute-values:attr-xml-lang><a href=#attr-xml-lang>xml:lang</a></code> attributes
- intended to keep the two synchronized.</p>
+ intended to keep the two synchronised.</p>
<p class=example>Another example would be the restrictions on the values of <code>xmlns</code> attributes in the HTML serialisation, which are intended to ensure that
elements in conforming documents end up in the same namespaces whether processed as HTML or
@@ -1603,7 +1603,14 @@
<p>When an algorithm B says to return to another algorithm A, it implies that A called B. Upon
- returning to A, the implementation must continue from where it left off in calling B.</p>
+ returning to A, the implementation must continue from where it left off in calling B. Some
+ algorithms run <dfn id=in-parallel>in parallel</dfn>; this means that the algorithm's subsequent steps are to be
+ run, one after another, at the same time as other logic in the specification (e.g. at the same
+ time as the <a href=#event-loop id=terminology:event-loop>event loop</a>). This specification does not define the precise mechanism by
+ which this is achieved, be it time-sharing cooperative multitasking, fibers, threads, processes,
+ using different hyperthreads, cores, CPUs, machines, etc. By contrast, an operation that is to run
+ <dfn id=immediately>immediately</dfn> must interrupt the currently running task, run itself, and then resume the
+ previously running task.</p>
@@ -4458,7 +4465,7 @@
<p>When a user agent is to <dfn id=fetch>fetch</dfn> a resource or <a href=#url id=processing-model:url>URL</a>, optionally
<strong>from</strong> an origin <i>origin</i>, optionally <strong>using</strong> a
specific <a href=#referrer-source id=processing-model:referrer-source>referrer source</a> as an <i>override referrer source</i>, and optionally with
- any of a <i>synchronous flag</i>, a <i>manual redirect flag</i>, a <i>force same-origin flag</i>,
+ any of a <i>blocking flag</i>, a <i>manual redirect flag</i>, a <i>force same-origin flag</i>,
and a <i>block cookies flag</i>, the following steps must be run. (When a
<em><a href=#url id=processing-model:url-2>URL</a></em> is to be fetched, the URL identifies a resource to be obtained.)</p>
@@ -4514,8 +4521,8 @@
<p>Otherwise, the <code id=processing-model:http-referer-2><a href=#http-referer>Referer</a></code> (sic) header must be omitted,
regardless of its value.</p>
- <li><p>If the algorithm was not invoked with the <i>synchronous flag</i>, perform the remaining
- steps asynchronously.<li><p>If the <code id=processing-model:document-2><a href=#document>Document</a></code> with which any <a href=#concept-task id=processing-model:concept-task>tasks</a> <a href=#queue-a-task id=processing-model:queue-a-task>queued</a> by this algorithm would be associated doesn't have an
+ <li><p>If the algorithm was not invoked with the <i>blocking flag</i>, perform the remaining
+ steps <a href=#in-parallel id=processing-model:in-parallel>in parallel</a>.<li><p>If the <code id=processing-model:document-2><a href=#document>Document</a></code> with which any <a href=#concept-task id=processing-model:concept-task>tasks</a> <a href=#queue-a-task id=processing-model:queue-a-task>queued</a> by this algorithm would be associated doesn't have an
associated <a href=#browsing-context id=processing-model:browsing-context-2>browsing context</a>, then abort these steps.<li>
<p>This is the <i>main step</i>.</p>
@@ -4597,7 +4604,7 @@
<li>
- <p>If the algorithm was not invoked with the <i>synchronous flag</i>: When the resource is
+ <p>If the algorithm was not invoked with the <i>blocking flag</i>: When the resource is
available, or if there is an error of some description, <a href=#queue-a-task id=processing-model:queue-a-task-2>queue a task</a> that uses the
resource as appropriate. If the resource can be processed incrementally, as, for instance, with
a progressively interlaced JPEG or an HTML file, additional tasks may be queued to process the
@@ -6358,10 +6365,10 @@
successful, throw a <code id=loading-xml-documents:syntaxerror><a href=#syntaxerror>SyntaxError</a></code> exception and abort these steps. Otherwise, let <var>url</var> be the resulting <a href=#absolute-url id=loading-xml-documents:absolute-url>absolute URL</a>.<li><p>If the <a href=#origin-2 id=loading-xml-documents:origin-2>origin</a> of <var>url</var> is not the same as the
<a href=#origin-2 id=loading-xml-documents:origin-2-2>origin</a> of <var>document</var>, throw a <code id=loading-xml-documents:securityerror><a href=#securityerror>SecurityError</a></code> exception
and abort these steps.<li><p>Remove all child nodes of <var>document</var>, without firing any mutation
- events.<li><p>Set the <a href=#current-document-readiness id=loading-xml-documents:current-document-readiness>current document readiness</a> of <var>document</var> to "<code>loading</code>".<li><p> Run the remainder of these steps asynchronously, and return true from the
+ events.<li><p>Set the <a href=#current-document-readiness id=loading-xml-documents:current-document-readiness>current document readiness</a> of <var>document</var> to "<code>loading</code>".<li><p> Run the remainder of these steps <a href=#in-parallel id=loading-xml-documents:in-parallel>in parallel</a>, and return true from the
method.<li><p>Let <var>result</var> be a <code id=loading-xml-documents:document><a href=#document>Document</a></code> object.<li><p>Let <var>success</var> be false.<li><p><a href=#fetch id=loading-xml-documents:fetch>Fetch</a> <var>url</var> from the <a href=#origin-2 id=loading-xml-documents:origin-2-3>origin</a> of
<var>document</var>, using the <a href=#api-referrer-source id=loading-xml-documents:api-referrer-source>API referrer source</a> specified by the
- <a href=#entry-settings-object id=loading-xml-documents:entry-settings-object-2>entry settings object</a>, with the <i>synchronous flag</i> set and the <i>force same-origin flag</i> set.<li>
+ <a href=#entry-settings-object id=loading-xml-documents:entry-settings-object-2>entry settings object</a>, with the <i>blocking flag</i> set and the <i>force same-origin flag</i> set.<li>
<p>If the fetch attempt was successful, and the resource's <a href=#content-type id=loading-xml-documents:content-type>Content-Type metadata</a> is an <a href=#xml-mime-type id=loading-xml-documents:xml-mime-type>XML MIME type</a>, then run
these substeps:</p>
@@ -8995,7 +9002,7 @@
<p class=note>If there are multiple <code id=the-base-element:the-base-element-9><a href=#the-base-element>base</a></code> elements with <code id=the-base-element:attr-base-target-4><a href=#attr-base-target>target</a></code> attributes, all but the first are ignored.</p>
<p>A <code id=the-base-element:the-base-element-10><a href=#the-base-element>base</a></code> element that is the first <code id=the-base-element:the-base-element-11><a href=#the-base-element>base</a></code> element with an <code id=the-base-element:attr-base-href-5><a href=#attr-base-href>href</a></code> content attribute in a particular <code id=the-base-element:document-2><a href=#document>Document</a></code> has a
- <dfn id=frozen-base-url>frozen base URL</dfn>. The <a href=#frozen-base-url id=the-base-element:frozen-base-url>frozen base URL</a> must be <a href=#set-the-frozen-base-url id=the-base-element:set-the-frozen-base-url>set</a>, synchronously, whenever any of the following situations occur:</p>
+ <dfn id=frozen-base-url>frozen base URL</dfn>. The <a href=#frozen-base-url id=the-base-element:frozen-base-url>frozen base URL</a> must be <a href=#immediately id=the-base-element:immediately>immediately</a> <a href=#set-the-frozen-base-url id=the-base-element:set-the-frozen-base-url>set</a> whenever any of the following situations occur:</p>
<ul class=brief><li>The <code id=the-base-element:the-base-element-12><a href=#the-base-element>base</a></code> element becomes the first <code id=the-base-element:the-base-element-13><a href=#the-base-element>base</a></code> element in <a href=#tree-order id=the-base-element:tree-order>tree
order</a> with an <code id=the-base-element:attr-base-href-6><a href=#attr-base-href>href</a></code> content attribute in its
@@ -10214,7 +10221,7 @@
<p>When a style sheet is ready to be applied, its <a href=#style-sheet-ready id=interactions-of-styling-and-scripting:style-sheet-ready>style sheet ready</a> flag must be set.
If the style sheet referenced no other resources (e.g. it was an internal style sheet given by a
<code id=interactions-of-styling-and-scripting:the-style-element-2><a href=#the-style-element>style</a></code> element with no <code>@import</code> rules), then the style rules must
- be synchronously made available to script; otherwise, the style rules must only be made available
+ be <a href=#immediately id=interactions-of-styling-and-scripting:immediately>immediately</a> made available to script; otherwise, the style rules must only be made available
to script once the <a href=#event-loop id=interactions-of-styling-and-scripting:event-loop>event loop</a> reaches its <i>update the rendering</i> step.</p>
<p>A style sheet in the context of the <code id=interactions-of-styling-and-scripting:document><a href=#document>Document</a></code> of an <a href=#html-parser id=interactions-of-styling-and-scripting:html-parser>HTML parser</a> or
@@ -16034,7 +16041,7 @@
<li><p>Otherwise, let <var>URL</var> be the resulting <a href=#absolute-url id=downloading-resources:absolute-url>absolute
URL</a>.<li><p>In the case of server-side image maps, append the <var id=downloading-resources:hyperlink-suffix><a href=#hyperlink-suffix>hyperlink
suffix</a></var> to <var>URL</var>.<li><p>Return to whatever algorithm invoked these steps and continue
- these steps asynchronously.<li><p><a href=#fetch id=downloading-resources:fetch>Fetch</a> <var>URL</var> and handle the resulting resource
+ these steps <a href=#in-parallel id=downloading-resources:in-parallel>in parallel</a>.<li><p><a href=#fetch id=downloading-resources:fetch>Fetch</a> <var>URL</var> and handle the resulting resource
<a href=#as-a-download id=downloading-resources:as-a-download>as a download</a>.</ol>
<p>When a user agent is to handle a resource obtained from a <a href=#fetch id=downloading-resources:fetch-2>fetch</a> algorithm <dfn id=as-a-download>as
@@ -20074,7 +20081,7 @@
with <a href=#replacement-enabled id=the-iframe-element:replacement-enabled-2>replacement enabled</a>.</p>
<p>When a <code id=the-iframe-element:document-6><a href=#document>Document</a></code> in an <code id=the-iframe-element:the-iframe-element-14><a href=#the-iframe-element>iframe</a></code> is marked as <a href=#completely-loaded id=the-iframe-element:completely-loaded-2>completely
- loaded</a>, the user agent must synchronously run the <a href=#iframe-load-event-steps id=the-iframe-element:iframe-load-event-steps-2>iframe load event steps</a>.</p>
+ loaded</a>, the user agent must run the <a href=#iframe-load-event-steps id=the-iframe-element:iframe-load-event-steps-2>iframe load event steps</a> <a href=#in-parallel id=the-iframe-element:in-parallel>in parallel</a>.</p>
<p class=note>A <code id=the-iframe-element:event-load><a href=#event-load>load</a></code> event is also fired at the
<code id=the-iframe-element:the-iframe-element-15><a href=#the-iframe-element>iframe</a></code> element when it is created if no other data is loaded in it.</p>
@@ -21396,7 +21403,7 @@
and those with other physical or cognitive disabilities, a variety of features are available.
Captions can be provided, either embedded in the video stream or as external files using the
<code id=the-video-element:the-track-element-3><a href=#the-track-element>track</a></code> element. Sign-language tracks can be provided, again either embedded in the
- video stream or by synchronizing multiple <code id=the-video-element:the-video-element-4><a href=#the-video-element>video</a></code> elements using the <code id=the-video-element:attr-media-mediagroup-2><a href=#attr-media-mediagroup>mediagroup</a></code> attribute or a <code id=the-video-element:mediacontroller-2><a href=#mediacontroller>MediaController</a></code>
+ video stream or by synchronising multiple <code id=the-video-element:the-video-element-4><a href=#the-video-element>video</a></code> elements using the <code id=the-video-element:attr-media-mediagroup-2><a href=#attr-media-mediagroup>mediagroup</a></code> attribute or a <code id=the-video-element:mediacontroller-2><a href=#mediacontroller>MediaController</a></code>
object. Audio descriptions can be provided, either as a separate track embedded in the video
stream, or a separate audio track in an <code id=the-video-element:the-audio-element><a href=#the-audio-element>audio</a></code> element <a href=#slaved-media-elements id=the-video-element:slaved-media-elements>slaved</a> to the same controller as the <code id=the-video-element:the-video-element-5><a href=#the-video-element>video</a></code> element(s), or in text
form using a <a href=#webvtt-file id=the-video-element:webvtt-file>WebVTT file</a> referenced using the <code id=the-video-element:the-track-element-4><a href=#the-track-element>track</a></code> element and
@@ -22132,7 +22139,7 @@
<p id=concept-media-load-algorithm-at-creation>If a <a href=#media-element id=location-of-the-media-resource:media-element-4>media element</a> is created with a
- <code id=location-of-the-media-resource:attr-media-src-2><a href=#attr-media-src>src</a></code> attribute, the user agent must synchronously invoke the
+ <code id=location-of-the-media-resource:attr-media-src-2><a href=#attr-media-src>src</a></code> attribute, the user agent must <a href=#immediately id=location-of-the-media-resource:immediately>immediately</a> invoke the
<a href=#media-element id=location-of-the-media-resource:media-element-5>media element</a>'s <a href=#concept-media-load-algorithm id=location-of-the-media-resource:concept-media-load-algorithm>resource selection
algorithm</a>.</p>
@@ -22380,15 +22387,15 @@
</ol>
<p>The <dfn id=concept-media-load-algorithm>resource selection algorithm</dfn> for a
- <a href=#media-element id=loading-the-media-resource:media-element-11>media element</a> is as follows. This algorithm is always invoked synchronously, but one
+ <a href=#media-element id=loading-the-media-resource:media-element-11>media element</a> is as follows. This algorithm is always invoked as part of a <a href=#concept-task id=loading-the-media-resource:concept-task-2>task</a>, but one
of the first steps in the algorithm is to return and continue running the remaining steps
- asynchronously, meaning that it runs in the background with scripts and other <a href=#concept-task id=loading-the-media-resource:concept-task-2>tasks</a> running in parallel. In addition, this algorithm interacts
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel>in parallel</a>. In addition, this algorithm interacts
closely with the <a href=#event-loop id=loading-the-media-resource:event-loop>event loop</a> mechanism; in particular, it has <a href=#synchronous-section id=loading-the-media-resource:synchronous-section>synchronous sections</a> (which are triggered as part of the <a href=#event-loop id=loading-the-media-resource:event-loop-2>event loop</a>
algorithm). Steps in such sections are marked with ⌛.</p>
<ol><li><p>Set the element's <code id=loading-the-media-resource:dom-media-networkstate-3><a href=#dom-media-networkstate>networkState</a></code> attribute to
the <code id=loading-the-media-resource:dom-media-network_no_source><a href=#dom-media-network_no_source>NETWORK_NO_SOURCE</a></code> value.<li><p>Set the element's <a href=#show-poster-flag id=loading-the-media-resource:show-poster-flag>show poster flag</a> to true.<li><p>Set the <a href=#media-element id=loading-the-media-resource:media-element-12>media element</a>'s <a href=#delaying-the-load-event-flag id=loading-the-media-resource:delaying-the-load-event-flag-2>delaying-the-load-event flag</a> to true
- (this <a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-2>delays the load event</a>).<li><p>Asynchronously <a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state>await a stable state</a>, allowing the <a href=#concept-task id=loading-the-media-resource:concept-task-3>task</a> that invoked this algorithm to continue. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-2>synchronous
+ (this <a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-2>delays the load event</a>).<li><p><a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state>Await a stable state</a>, allowing the <a href=#concept-task id=loading-the-media-resource:concept-task-3>task</a> that invoked this algorithm to continue. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-2>synchronous
section</a> consists of all the remaining steps of this algorithm until the algorithm says the
<a href=#synchronous-section id=loading-the-media-resource:synchronous-section-3>synchronous section</a> has ended. (Steps in <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-4>synchronous sections</a> are marked with ⌛.)<li>
@@ -22422,7 +22429,7 @@
<ol><li><p>⌛ Set the <code id=loading-the-media-resource:dom-media-currentsrc><a href=#dom-media-currentsrc>currentSrc</a></code> attribute to
the empty string.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-6>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource>resource fetch algorithm</a>
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-2>in parallel</a>.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource>resource fetch algorithm</a>
with the <a href=#assigned-media-provider-object id=loading-the-media-resource:assigned-media-provider-object-5>assigned media provider object</a>. If that algorithm returns without
aborting <em>this</em> one, then the load failed.<li><p><i>Failed with media provider</i>: Reaching this step indicates that the media
resource failed to load. <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-5>Queue a task</a> to run the <a href=#dedicated-media-source-failure-steps id=loading-the-media-resource:dedicated-media-source-failure-steps>dedicated media source
@@ -22442,7 +22449,7 @@
<li><p>⌛ If <var>absolute URL</var> was obtained successfully, set the <code id=loading-the-media-resource:dom-media-currentsrc-2><a href=#dom-media-currentsrc>currentSrc</a></code> attribute to <var>absolute
URL</var>.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-8>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>If <var>absolute URL</var> was obtained successfully, run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-2>resource fetch algorithm</a> with <var>absolute
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-3>in parallel</a>.<li><p>If <var>absolute URL</var> was obtained successfully, run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-2>resource fetch algorithm</a> with <var>absolute
URL</var>. If that algorithm returns without aborting <em>this</em> one, then the load
failed.<li><p><i>Failed with attribute</i>: Reaching this step indicates that the media resource
failed to load or that the given <a href=#url id=loading-the-media-resource:url-2>URL</a> could not be <a href=#resolve-a-url id=loading-the-media-resource:resolve-a-url-2>resolved</a>. <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-6>Queue a task</a> to run the <a href=#dedicated-media-source-failure-steps id=loading-the-media-resource:dedicated-media-source-failure-steps-2>dedicated media source
@@ -22484,10 +22491,10 @@
type</a> (including any codecs described by the <code>codecs</code> parameter, for
types that define that parameter), represents <a href=#a-type-that-the-user-agent-knows-it-cannot-render id=loading-the-media-resource:a-type-that-the-user-agent-knows-it-cannot-render>a type that the user agent knows it cannot
render</a>, then end the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-11>synchronous section</a>, and jump down to the <i>failed with elements</i> step below.<li><p>⌛ Set the <code id=loading-the-media-resource:dom-media-currentsrc-3><a href=#dom-media-currentsrc>currentSrc</a></code> attribute to <var>absolute URL</var>.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-12>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-3>resource fetch algorithm</a> with
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-4>in parallel</a>.<li><p>Run the <a href=#concept-media-load-resource id=loading-the-media-resource:concept-media-load-resource-3>resource fetch algorithm</a> with
<var>absolute URL</var>. If that algorithm returns without aborting <em>this</em> one,
then the load failed.<li><p><i>Failed with elements</i>: <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-7>Queue a task</a> to <a href=#fire-a-simple-event id=loading-the-media-resource:fire-a-simple-event-5>fire a simple
- event</a> named <code id=loading-the-media-resource:event-error><a href=#event-error>error</a></code> at the <var>candidate</var> element.<li><p>Asynchronously <a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-2>await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-13>synchronous section</a>
+ event</a> named <code id=loading-the-media-resource:event-error><a href=#event-error>error</a></code> at the <var>candidate</var> element.<li><p><a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-2>Await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-13>synchronous section</a>
consists of all the remaining steps of this algorithm until the algorithm says the
<a href=#synchronous-section id=loading-the-media-resource:synchronous-section-14>synchronous section</a> has ended. (Steps in <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-15>synchronous sections</a> are marked with ⌛.)<li><p>⌛ <a href="#forget-the-media-element's-media-resource-specific-tracks" id="loading-the-media-resource:forget-the-media-element's-media-resource-specific-tracks-2">Forget the media element's media-resource-specific
tracks</a>.<li><p>⌛ <i>Find next candidate</i>: Let <var>candidate</var> be
@@ -22498,8 +22505,8 @@
loop</i> step. Otherwise, jump back to the <i>process candidate</i> step.<li><p>⌛ <i>Waiting</i>: Set the element's <code id=loading-the-media-resource:dom-media-networkstate-6><a href=#dom-media-networkstate>networkState</a></code> attribute to the <code id=loading-the-media-resource:dom-media-network_no_source-2><a href=#dom-media-network_no_source>NETWORK_NO_SOURCE</a></code> value.<li><p>⌛ Set the element's <a href=#show-poster-flag id=loading-the-media-resource:show-poster-flag-2>show poster flag</a> to true.<li><p>⌛ <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-8>Queue a task</a> to set the element's <a href=#delaying-the-load-event-flag id=loading-the-media-resource:delaying-the-load-event-flag-3>delaying-the-load-event
flag</a> to false. This stops <a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-3>delaying the load
event</a>.<li><p>End the <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-16>synchronous section</a>, continuing the remaining steps
- asynchronously.<li><p>Wait until the node after <var>pointer</var> is a node other than the end of
- the list. (This step might wait forever.)<li><p>Asynchronously <a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-3>await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-17>synchronous section</a>
+ <a href=#in-parallel id=loading-the-media-resource:in-parallel-5>in parallel</a>.<li><p>Wait until the node after <var>pointer</var> is a node other than the end of
+ the list. (This step might wait forever.)<li><p><a href=#await-a-stable-state id=loading-the-media-resource:await-a-stable-state-3>Await a stable state</a>. The <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-17>synchronous section</a>
consists of all the remaining steps of this algorithm until the algorithm says the
<a href=#synchronous-section id=loading-the-media-resource:synchronous-section-18>synchronous section</a> has ended. (Steps in <a href=#synchronous-section id=loading-the-media-resource:synchronous-section-19>synchronous sections</a> are marked with ⌛.)<li><p>⌛ Set the element's <a href=#delaying-the-load-event-flag id=loading-the-media-resource:delaying-the-load-event-flag-4>delaying-the-load-event flag</a> back to true (this
<a href=#delay-the-load-event id=loading-the-media-resource:delay-the-load-event-4>delays the load event</a> again, in case it hasn't been
@@ -22611,7 +22618,7 @@
event</a> named <code id=loading-the-media-resource:event-media-progress-2><a href=#event-media-progress>progress</a></code> at the element.</p>
<p>The <a href=#networking-task-source id=loading-the-media-resource:networking-task-source>networking task source</a> <a href=#concept-task id=loading-the-media-resource:concept-task-6>tasks</a> to
- process the data as it is being fetched must each immediately <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-16>queue a task</a> to
+ process the data as it is being fetched must each <a href=#immediately id=loading-the-media-resource:immediately>immediately</a> <a href=#queue-a-task id=loading-the-media-resource:queue-a-task-16>queue a task</a> to
run the first appropriate steps from the <a href=#media-data-processing-steps-list id=loading-the-media-resource:media-data-processing-steps-list>media data processing steps list</a>
below. (A new task is used for this so that the work described below occurs relative to the
<a href=#media-element-event-task-source id=loading-the-media-resource:media-element-event-task-source-2>media element event task source</a> rather than the <a href=#networking-task-source id=loading-the-media-resource:networking-task-source-2>networking task
@@ -23782,7 +23789,7 @@
<p>If the time was reached through the usual monotonic increase of the <a href=#current-playback-position id=playing-the-media-resource:current-playback-position-21>current playback
position</a> during normal playback, and there are <a href=#text-track-cue id=playing-the-media-resource:text-track-cue-14>cues</a>
in <var>other cues</var> that have their <a href=#text-track-cue-pause-on-exit-flag id=playing-the-media-resource:text-track-cue-pause-on-exit-flag>text track cue pause-on-exit flag</a>
- set and that either have their <a href=#text-track-cue-active-flag id=playing-the-media-resource:text-track-cue-active-flag-3>text track cue active flag</a> set or are also in <var>missed cues</var>, then immediately <a href=#dom-media-pause id=playing-the-media-resource:dom-media-pause-2>pause</a> the
+ set and that either have their <a href=#text-track-cue-active-flag id=playing-the-media-resource:text-track-cue-active-flag-3>text track cue active flag</a> set or are also in <var>missed cues</var>, then <a href=#immediately id=playing-the-media-resource:immediately>immediately</a> <a href=#dom-media-pause id=playing-the-media-resource:dom-media-pause-2>pause</a> the
<a href=#media-element id=playing-the-media-resource:media-element-72>media element</a>. </p>
<p class=note>In the other cases, such as explicit seeks, playback is not paused by going past
@@ -23850,7 +23857,7 @@
<p>When a <a href=#media-element id=playing-the-media-resource:media-element-75>media element</a> is <a href=#remove-an-element-from-a-document id=playing-the-media-resource:remove-an-element-from-a-document>removed
from a <code>Document</code></a>, the user agent must run the following steps:</p>
- <ol><li><p>Asynchronously <a href=#await-a-stable-state id=playing-the-media-resource:await-a-stable-state-2>await a stable state</a>, allowing the <a href=#concept-task id=playing-the-media-resource:concept-task-13>task</a> that removed the <a href=#media-element id=playing-the-media-resource:media-element-76>media element</a> from the
+ <ol><li><p><a href=#await-a-stable-state id=playing-the-media-resource:await-a-stable-state-2>Await a stable state</a>, allowing the <a href=#concept-task id=playing-the-media-resource:concept-task-13>task</a> that removed the <a href=#media-element id=playing-the-media-resource:media-element-76>media element</a> from the
<code id=playing-the-media-resource:document-3><a href=#document>Document</a></code> to continue. The <a href=#synchronous-section id=playing-the-media-resource:synchronous-section>synchronous section</a> consists of all the
remaining steps of this algorithm. (Steps in the <a href=#synchronous-section id=playing-the-media-resource:synchronous-section-2>synchronous section</a> are marked with
⌛.)<li><p>⌛ If the <a href=#media-element id=playing-the-media-resource:media-element-77>media element</a> is <a href=#in-a-document id=playing-the-media-resource:in-a-document-2>in a <code>Document</code></a>,
@@ -23900,7 +23907,7 @@
is <code id=seeking:dom-media-have_nothing><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, abort these steps.<li><p>If the element's <code id=seeking:dom-media-seeking-2><a href=#dom-media-seeking>seeking</a></code> IDL attribute is true,
then another instance of this algorithm is already running. Abort that other instance of the
algorithm without waiting for the step that it is running to complete.<li><p>Set the <code id=seeking:dom-media-seeking-3><a href=#dom-media-seeking>seeking</a></code> IDL attribute to true.<li><p>If the seek was in response to a DOM method call or setting of an IDL attribute, then
- continue the script. The remainder of these steps must be run asynchronously. With the exception
+ continue the script. The remainder of these steps must be run <a href=#in-parallel id=seeking:in-parallel>in parallel</a>. With the exception
of the steps marked with ⌛, they could be aborted at any time by another instance of this
algorithm being invoked.<li><p>If the <var>new playback position</var> is later than the end of the <a href=#media-resource id=seeking:media-resource-3>media
resource</a>, then let it be the end of the <a href=#media-resource id=seeking:media-resource-4>media resource</a> instead.<li><p>If the <var>new playback position</var> is less than the <a href=#earliest-possible-position id=seeking:earliest-possible-position>earliest possible
@@ -24382,7 +24389,7 @@
<p>Each <a href=#media-element id=introduction-4:media-element>media element</a> can have a <code id=introduction-4:mediacontroller><a href=#mediacontroller>MediaController</a></code>. A
<code id=introduction-4:mediacontroller-2><a href=#mediacontroller>MediaController</a></code> is an object that coordinates the playback of multiple <a href=#media-element id=introduction-4:media-element-2>media elements</a>, for instance so that a sign-language interpreter
- track can be overlaid on a video track, with the two being kept in sync.</p>
+ track can be overlaid on a video track, with the two being kept synchronised.</p>
<p>By default, a <a href=#media-element id=introduction-4:media-element-3>media element</a> has no <code id=introduction-4:mediacontroller-3><a href=#mediacontroller>MediaController</a></code>. An implicit
<code id=introduction-4:mediacontroller-4><a href=#mediacontroller>MediaController</a></code> can be assigned using the <code id=introduction-4:attr-media-mediagroup><a href=#attr-media-mediagroup>mediagroup</a></code> content attribute. An explicit
@@ -24618,7 +24625,7 @@
task</a> to <a href=#fire-a-simple-event id=media-controllers:fire-a-simple-event>fire a simple event</a> named <code id=media-controllers:event-mediacontroller-durationchange><a href=#event-mediacontroller-durationchange>durationchange</a></code> at the
<code id=media-controllers:mediacontroller-15><a href=#mediacontroller>MediaController</a></code>. If the <code id=media-controllers:mediacontroller-16><a href=#mediacontroller>MediaController</a></code>'s <a href=#media-controller-duration id=media-controllers:media-controller-duration-3>media controller
duration</a> decreases such that the <a href=#media-controller-position id=media-controllers:media-controller-position>media controller position</a> is greater than the
- <a href=#media-controller-duration id=media-controllers:media-controller-duration-4>media controller duration</a>, the user agent must immediately <a href=#seek-the-media-controller id=media-controllers:seek-the-media-controller>seek the media
+ <a href=#media-controller-duration id=media-controllers:media-controller-duration-4>media controller duration</a>, the user agent must <a href=#immediately id=media-controllers:immediately>immediately</a> <a href=#seek-the-media-controller id=media-controllers:seek-the-media-controller>seek the media
controller</a> to <a href=#media-controller-duration id=media-controllers:media-controller-duration-5>media controller duration</a>.</p>
<p>The <dfn id=dom-mediacontroller-currenttime><code>currentTime</code></dfn> attribute must
@@ -25533,13 +25540,13 @@
track</a> and its <code id=sourcing-out-of-band-text-tracks:the-track-element-14><a href=#the-track-element>track</a></code> element, abort these steps, letting that other algorithm
take care of this element.<li><p>If the <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-17>text track</a>'s <a href=#text-track-mode id=sourcing-out-of-band-text-tracks:text-track-mode-9>text track mode</a> is not set to one of <a href=#text-track-hidden id=sourcing-out-of-band-text-tracks:text-track-hidden-2>hidden</a> or <a href=#text-track-showing id=sourcing-out-of-band-text-tracks:text-track-showing-4>showing</a>, abort
these steps.<li><p>If the <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-18>text track</a>'s <code id=sourcing-out-of-band-text-tracks:the-track-element-15><a href=#the-track-element>track</a></code> element does not have a <a href=#media-element id=sourcing-out-of-band-text-tracks:media-element-13>media
- element</a> as a parent, abort these steps.<li><p>Run the remainder of these steps asynchronously, allowing whatever caused these steps to
+ element</a> as a parent, abort these steps.<li><p>Run the remainder of these steps <a href=#in-parallel id=sourcing-out-of-band-text-tracks:in-parallel>in parallel</a>, allowing whatever caused these steps to
run to continue.<li><p><i>Top</i>: <a href=#await-a-stable-state id=sourcing-out-of-band-text-tracks:await-a-stable-state>Await a stable state</a>. The <a href=#synchronous-section id=sourcing-out-of-band-text-tracks:synchronous-section-2>synchronous section</a>
consists of the following steps. (The steps in the <a href=#synchronous-section id=sourcing-out-of-band-text-tracks:synchronous-section-3>synchronous section</a> are marked
with ⌛.)<li><p>⌛ Set the <a href=#text-track-readiness-state id=sourcing-out-of-band-text-tracks:text-track-readiness-state-2>text track readiness state</a> to <a href=#text-track-loading id=sourcing-out-of-band-text-tracks:text-track-loading>loading</a>.<li><p>⌛ Let <var>URL</var> be the <a href=#track-url id=sourcing-out-of-band-text-tracks:track-url-2>track URL</a> of the
<code id=sourcing-out-of-band-text-tracks:the-track-element-16><a href=#the-track-element>track</a></code> element.<li><p>⌛ If the <code id=sourcing-out-of-band-text-tracks:the-track-element-17><a href=#the-track-element>track</a></code> element's parent is a <a href=#media-element id=sourcing-out-of-band-text-tracks:media-element-14>media element</a> then
let <var>CORS mode</var> be the state of the parent <a href=#media-element id=sourcing-out-of-band-text-tracks:media-element-15>media element</a>'s <code id=sourcing-out-of-band-text-tracks:attr-media-crossorigin><a href=#attr-media-crossorigin>crossorigin</a></code> content attribute. Otherwise, let <var>CORS mode</var> be <a href=#attr-crossorigin-none id=sourcing-out-of-band-text-tracks:attr-crossorigin-none>No CORS</a>.<li><p>End the <a href=#synchronous-section id=sourcing-out-of-band-text-tracks:synchronous-section-4>synchronous section</a>, continuing the remaining steps
- asynchronously.<li>
+ <a href=#in-parallel id=sourcing-out-of-band-text-tracks:in-parallel-2>in parallel</a>.<li>
<p>If <var>URL</var> is not the empty string, perform a <a href=#potentially-cors-enabled-fetch id=sourcing-out-of-band-text-tracks:potentially-cors-enabled-fetch>potentially CORS-enabled
fetch</a> of <var>URL</var>, with the <i>mode</i> being <var>CORS mode</var>, the <i>origin</i> being the <a href=#origin-2 id=sourcing-out-of-band-text-tracks:origin-2>origin</a> of the
@@ -25558,10 +25565,10 @@
the <a href=#webvtt-parser id=sourcing-out-of-band-text-tracks:webvtt-parser>WebVTT parser</a>) as it is received, with the <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-2>text track list of cues</a> being used for
that parser's output. <a href=#refsWEBVTT>[WEBVTT]</a></p>
- <p class=note>The appropriate parser will synchronously (during these <a href=#networking-task-source id=sourcing-out-of-band-text-tracks:networking-task-source-2>networking task
- source</a> <a href=#concept-task id=sourcing-out-of-band-text-tracks:concept-task-2>tasks</a>) and incrementally (as each such task is
- run with whatever data has been received from the network) update the <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-3>text track list of
- cues</a>.</p>
+ <p class=note>The appropriate parser will incrementally update the <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-3>text track list of
+ cues</a> during these <a href=#networking-task-source id=sourcing-out-of-band-text-tracks:networking-task-source-2>networking task
+ source</a> <a href=#concept-task id=sourcing-out-of-band-text-tracks:concept-task-2>tasks</a>, as each such task is
+ run with whatever data has been received from the network).</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
@@ -25608,7 +25615,7 @@
the same time as the <a href=#text-track-mode id=sourcing-out-of-band-text-tracks:text-track-mode-12>text track mode</a> is set to <a href=#text-track-hidden id=sourcing-out-of-band-text-tracks:text-track-hidden-5>hidden</a> or <a href=#text-track-showing id=sourcing-out-of-band-text-tracks:text-track-showing-7>showing</a>.<li><p>Jump to the step labeled <i>top</i>.</ol>
<p>Whenever a <code id=sourcing-out-of-band-text-tracks:the-track-element-23><a href=#the-track-element>track</a></code> element has its <code id=sourcing-out-of-band-text-tracks:attr-track-src><a href=#attr-track-src>src</a></code> attribute
- set, changed, or removed, the user agent must synchronously empty the element's <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-19>text
+ set, changed, or removed, the user agent must <a href=#immediately id=sourcing-out-of-band-text-tracks:immediately>immediately</a> empty the element's <a href=#text-track id=sourcing-out-of-band-text-tracks:text-track-19>text
track</a>'s <a href=#text-track-list-of-cues id=sourcing-out-of-band-text-tracks:text-track-list-of-cues-5>text track list of cues</a>. (This also causes the algorithm above to stop
adding cues from the resource being obtained using the previously given URL, if any.)</p>
@@ -31416,7 +31423,7 @@
<dt><var>form</var> . <code id=the-form-element:dom-form-requestautocomplete-2><a href=#dom-form-requestautocomplete>requestAutocomplete</a></code>()<dd>
- <p>Triggers a user-agent-specific asynchronous user interface to help the user fill in any
+ <p>Triggers a user-agent-specific user interface to help the user fill in any
fields that have an <a href=#autofill-field-name id=the-form-element:autofill-field-name-3>autofill field name</a> other than "<code id=the-form-element:attr-fe-autocomplete-on-2><a href=#attr-fe-autocomplete-on>on</a></code>" or "<code id=the-form-element:attr-fe-autocomplete-off-2><a href=#attr-fe-autocomplete-off>off</a></code>".</p>
<p>The <code id=the-form-element:the-form-element-5><a href=#the-form-element>form</a></code> element will subsequently receive an event, either <code id=the-form-element:event-autocomplete><a href=#event-autocomplete>autocomplete</a></code>, indicating that the fields have been prefilled,
@@ -35693,7 +35700,7 @@
<a href=#activation-behavior id="file-upload-state-(type=file):activation-behavior">activation behavior</a> is to run the following steps:</p>
<ol><li><p>If the algorithm is not <a href=#allowed-to-show-a-popup id="file-upload-state-(type=file):allowed-to-show-a-popup">allowed to show a popup</a>, then abort these steps
- without doing anything else.<li><p>Return, but continue running these steps asynchronously.<li><p>Optionally, wait until any prior execution of this algorithm has terminated.</p>
+ without doing anything else.<li><p>Return, but continue running these steps <a href=#in-parallel id="file-upload-state-(type=file):in-parallel">in parallel</a>.<li><p>Optionally, wait until any prior execution of this algorithm has terminated.</p>
<li><p>Display a prompt to the user requesting that the user specify some files. If the <code id="file-upload-state-(type=file):attr-input-multiple-2"><a href=#attr-input-multiple>multiple</a></code> attribute is not set, there must be no more than one
file selected; otherwise, any number may be selected. Files can be from the filesystem or created
@@ -41683,7 +41690,7 @@
element, or, the element is a <code id=user-interface-for-bulk-autofill:the-select-element><a href=#the-select-element>select</a></code> element<li><p>the element's <code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-3><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute is
wearing the <a href=#autofill-expectation-mantle id=user-interface-for-bulk-autofill:autofill-expectation-mantle>autofill expectation mantle</a><li><p>the element's <a href=#autofill-field-name id=user-interface-for-bulk-autofill:autofill-field-name>autofill field name</a> is neither "<code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-off><a href=#attr-fe-autocomplete-off>off</a></code>" nor "<code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-on><a href=#attr-fe-autocomplete-on>on</a></code>"</ul>
- <li><p>Return, but continue running these steps asynchronously.<li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
+ <li><p>Return, but continue running these steps <a href=#in-parallel id=user-interface-for-bulk-autofill:in-parallel>in parallel</a>.<li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
in <var>pending autofills</var>. Await the user's input. The user agent may include additional
(immutable) information, e.g. <a href="#control's-data" id="user-interface-for-bulk-autofill:control's-data">data</a> obtained from elements
with an <code id=user-interface-for-bulk-autofill:attr-fe-autocomplete-4><a href=#attr-fe-autocomplete>autocomplete</a></code> attribute wearing the
@@ -44711,7 +44718,7 @@
<a href=#restrictions-for-contents-of-script-elements id=the-script-element:restrictions-for-contents-of-script-elements>script content restrictions</a>.<dd>If there <em>is</em> a <code id=the-script-element:attr-script-src-2><a href=#attr-script-src>src</a></code>
attribute, the element must be either empty or contain only
<a href=#inline-documentation-for-external-scripts id=the-script-element:inline-documentation-for-external-scripts>script documentation</a> that also matches <a href=#restrictions-for-contents-of-script-elements id=the-script-element:restrictions-for-contents-of-script-elements-2>script
- content restrictions</a>.<dt><a href=#concept-element-tag-omission id=the-script-element:concept-element-tag-omission>Tag omission in text/html</a>:<dd>Neither tag is omissible.<dt><a href=#concept-element-attributes id=the-script-element:concept-element-attributes>Content attributes</a>:<dd><a href=#global-attributes id=the-script-element:global-attributes>Global attributes</a><dd><code id=the-script-element:attr-script-src-3><a href=#attr-script-src>src</a></code> — Address of the resource<dd><code id=the-script-element:attr-script-type-2><a href=#attr-script-type>type</a></code> — Type of embedded resource<dd><code id=the-script-element:attr-script-charset><a href=#attr-script-charset>charset</a></code> — Character encoding of the external script resource<dd><code id=the-script-element:attr-script-async><a href=#attr-script-async>async</a></code> — Execute script asynchronously<dd><code id=the-script-element:attr-script-defer><a href=#attr-script-defer>defer</a
></code> — Defer script execution<dd><code id=the-script-element:attr-script-crossorigin><a href=#attr-script-crossorigin>crossorigin</a></code> — How the element handles crossorigin requests<dt><a href=#concept-element-dom id=the-script-element:concept-element-dom>DOM interface</a>:<dd>
+ content restrictions</a>.<dt><a href=#concept-element-tag-omission id=the-script-element:concept-element-tag-omission>Tag omission in text/html</a>:<dd>Neither tag is omissible.<dt><a href=#concept-element-attributes id=the-script-element:concept-element-attributes>Content attributes</a>:<dd><a href=#global-attributes id=the-script-element:global-attributes>Global attributes</a><dd><code id=the-script-element:attr-script-src-3><a href=#attr-script-src>src</a></code> — Address of the resource<dd><code id=the-script-element:attr-script-type-2><a href=#attr-script-type>type</a></code> — Type of embedded resource<dd><code id=the-script-element:attr-script-charset><a href=#attr-script-charset>charset</a></code> — Character encoding of the external script resource<dd><code id=the-script-element:attr-script-async><a href=#attr-script-async>async</a></code> — Execute script when available, without blocking<dd><code id=the-script-element:attr-script-defer><a href=#attr-scr
ipt-defer>defer</a></code> — Defer script execution<dd><code id=the-script-element:attr-script-crossorigin><a href=#attr-script-crossorigin>crossorigin</a></code> — How the element handles crossorigin requests<dt><a href=#concept-element-dom id=the-script-element:concept-element-dom>DOM interface</a>:<dd>
<pre class=idl>interface <dfn id=htmlscriptelement>HTMLScriptElement</dfn> : <a href=#htmlelement id=the-script-element:htmlelement>HTMLElement</a> {
attribute DOMString <a href=#dom-script-src id=the-script-element:dom-script-src>src</a>;
attribute DOMString <a href=#dom-script-type id=the-script-element:dom-script-type>type</a>;
@@ -44764,7 +44771,7 @@
present.</p>
<p>There are three possible modes that can be selected using these attributes. If the <code id=the-script-element:attr-script-async-3><a href=#attr-script-async>async</a></code> attribute is present, then the script will be executed
- asynchronously, as soon as it is available. If the <code id=the-script-element:attr-script-async-4><a href=#attr-script-async>async</a></code>
+ as soon as it is available, but without blocking further parsing of the page. If the <code id=the-script-element:attr-script-async-4><a href=#attr-script-async>async</a></code>
attribute is not present but the <code id=the-script-element:attr-script-defer-3><a href=#attr-script-defer>defer</a></code> attribute is
present, then the script is executed when the page has finished parsing. If neither attribute is
present, then the script is fetched and executed immediately, before the user agent continues
@@ -44778,7 +44785,7 @@
and <a href=#scriptTagXML>in XML</a>, the rules for the <code id=the-script-element:dom-document-write><a href=#dom-document-write>document.write()</a></code> method, the handling of <a href=#scripting>scripting</a>, etc.</p>
<p>The <code id=the-script-element:attr-script-defer-4><a href=#attr-script-defer>defer</a></code> attribute may be specified even if the <code id=the-script-element:attr-script-async-5><a href=#attr-script-async>async</a></code> attribute is specified, to cause legacy Web browsers that
- only support <code id=the-script-element:attr-script-defer-5><a href=#attr-script-defer>defer</a></code> (and not <code id=the-script-element:attr-script-async-6><a href=#attr-script-async>async</a></code>) to fall back to the <code id=the-script-element:attr-script-defer-6><a href=#attr-script-defer>defer</a></code> behavior instead of the synchronous blocking behavior that
+ only support <code id=the-script-element:attr-script-defer-5><a href=#attr-script-defer>defer</a></code> (and not <code id=the-script-element:attr-script-async-6><a href=#attr-script-async>async</a></code>) to fall back to the <code id=the-script-element:attr-script-defer-6><a href=#attr-script-defer>defer</a></code> behavior instead of the blocking behavior that
is the default.</p>
<p>The <dfn id=attr-script-crossorigin><code>crossorigin</code></dfn> attribute is a
@@ -44802,11 +44809,11 @@
parser</a> and the <a href=#xml-parser id=the-script-element:xml-parser>XML parser</a> on <code id=the-script-element:the-script-element-9><a href=#the-script-element>script</a></code> elements they insert and
affects the processing of those elements.</p>
- <p>The third is a flag indicating whether the element will <dfn id=force-async>"force-async"</dfn>. Initially,
+ <p>The third is a flag indicating whether the element will <dfn id=non-blocking>"non-blocking"</dfn>. Initially,
<code id=the-script-element:the-script-element-10><a href=#the-script-element>script</a></code> elements must have this flag set. It is unset by the <a href=#html-parser id=the-script-element:html-parser-2>HTML parser</a>
and the <a href=#xml-parser id=the-script-element:xml-parser-2>XML parser</a> on <code id=the-script-element:the-script-element-11><a href=#the-script-element>script</a></code> elements they insert. In addition, whenever
- a <code id=the-script-element:the-script-element-12><a href=#the-script-element>script</a></code> element whose <a href=#force-async id=the-script-element:force-async>"force-async"</a> flag is set has a <code id=the-script-element:attr-script-async-8><a href=#attr-script-async>async</a></code> content attribute added, the element's
- <a href=#force-async id=the-script-element:force-async-2>"force-async"</a> flag must be unset.</p>
+ a <code id=the-script-element:the-script-element-12><a href=#the-script-element>script</a></code> element whose <a href=#non-blocking id=the-script-element:non-blocking>"non-blocking"</a> flag is set has a <code id=the-script-element:attr-script-async-8><a href=#attr-script-async>async</a></code> content attribute added, the element's
+ <a href=#non-blocking id=the-script-element:non-blocking-2>"non-blocking"</a> flag must be unset.</p>
<p>The fourth is a flag indicating whether or not the script block is <dfn id=ready-to-be-parser-executed>"ready to be
parser-executed"</dfn>. Initially, <code id=the-script-element:the-script-element-13><a href=#the-script-element>script</a></code> elements must have this flag unset (script
@@ -44822,7 +44829,7 @@
<code id=the-script-element:the-script-element-14><a href=#the-script-element>script</a></code> element's <a id=the-script-element:node-document href=https://dom.spec.whatwg.org/#concept-node-document data-x-internal=node-document>node document</a>.</p>
<p>When a <code id=the-script-element:the-script-element-15><a href=#the-script-element>script</a></code> element that is not marked as being <a href=#parser-inserted id=the-script-element:parser-inserted-2>"parser-inserted"</a>
- experiences one of the events listed in the following list, the user agent must synchronously
+ experiences one of the events listed in the following list, the user agent must <a href=#immediately id=the-script-element:immediately>immediately</a>
<a href=#prepare-a-script id=the-script-element:prepare-a-script>prepare</a> the <code id=the-script-element:the-script-element-16><a href=#the-script-element>script</a></code> element:</p>
<ul><li>The <code id=the-script-element:the-script-element-17><a href=#the-script-element>script</a></code> element gets <a href=#insert-an-element-into-a-document id=the-script-element:insert-an-element-into-a-document>inserted
@@ -44856,11 +44863,11 @@
<li>
<p>If <var>was-parser-inserted</var> is true and the element does not have an <code id=the-script-element:attr-script-async-9><a href=#attr-script-async>async</a></code> attribute, then set the element's
- <a href=#force-async id=the-script-element:force-async-3>"force-async"</a> flag to true.</p>
+ <a href=#non-blocking id=the-script-element:non-blocking-3>"non-blocking"</a> flag to true.</p>
<p class=note>This is done so that if a parser-inserted <code id=the-script-element:the-script-element-25><a href=#the-script-element>script</a></code> element fails to
run when the parser tries to run it, but it is later executed after a script dynamically updates
- it, it will execute asynchronously even if the <code id=the-script-element:attr-script-async-10><a href=#attr-script-async>async</a></code>
+ it, it will execute in a non-blocking fashion even if the <code id=the-script-element:attr-script-async-10><a href=#attr-script-async>async</a></code>
attribute isn't set.</p>
<li id=script-processing-empty>
@@ -44910,7 +44917,7 @@
<li>
<p>If <var>was-parser-inserted</var> is true, then flag the element as
- <a href=#parser-inserted id=the-script-element:parser-inserted-5>"parser-inserted"</a> again, and set the element's <a href=#force-async id=the-script-element:force-async-4>"force-async"</a> flag to
+ <a href=#parser-inserted id=the-script-element:parser-inserted-5>"parser-inserted"</a> again, and set the element's <a href=#non-blocking id=the-script-element:non-blocking-4>"non-blocking"</a> flag to
false.</p>
<li id=script-processing-start>
@@ -45043,7 +45050,7 @@
executing the script.</p>
<dt id=script-processing-src-sync>If the element has a <code id=the-script-element:attr-script-src-18><a href=#attr-script-src>src</a></code> attribute, does not have an <code id=the-script-element:attr-script-async-13><a href=#attr-script-async>async</a></code> attribute, and does not have the
- <a href=#force-async id=the-script-element:force-async-5>"force-async"</a> flag set<dd>
+ <a href=#non-blocking id=the-script-element:non-blocking-5>"non-blocking"</a> flag set<dd>
<p>The element must be added to the end of the <dfn id=list-of-scripts-that-will-execute-in-order-as-soon-as-possible>list of scripts that will execute in order
as soon as possible</dfn> associated with the <a id=the-script-element:node-document-4 href=https://dom.spec.whatwg.org/#concept-node-document data-x-internal=node-document>node document</a> of the <code id=the-script-element:the-script-element-42><a href=#the-script-element>script</a></code>
@@ -45074,7 +45081,7 @@
has completed must <a href=#execute-the-script-block id=the-script-element:execute-the-script-block-2>execute the script block</a> and then remove the element from the
<a href=#set-of-scripts-that-will-execute-as-soon-as-possible id=the-script-element:set-of-scripts-that-will-execute-as-soon-as-possible>set of scripts that will execute as soon as possible</a>.</p>
- <dt id=script-processing-inline>Otherwise<dd>The user agent must immediately <a href=#execute-the-script-block id=the-script-element:execute-the-script-block-3>execute the script block</a>, even if other
+ <dt id=script-processing-inline>Otherwise<dd>The user agent must <a href=#immediately id=the-script-element:immediately-2>immediately</a> <a href=#execute-the-script-block id=the-script-element:execute-the-script-block-3>execute the script block</a>, even if other
scripts are already executing.</dl>
</ol>
@@ -45245,12 +45252,12 @@
<a href=#reflect id=the-script-element:reflect-2>reflect</a> the <code id=the-script-element:attr-script-crossorigin-6><a href=#attr-script-crossorigin>crossorigin</a></code> content attribute.</p>
<p>The <dfn id=dom-script-async><code>async</code></dfn> IDL attribute controls whether the
- element will execute asynchronously or not. If the element's <a href=#force-async id=the-script-element:force-async-6>"force-async"</a> flag is
+ element will execute asynchronously or not. If the element's <a href=#non-blocking id=the-script-element:non-blocking-6>"non-blocking"</a> flag is
set, then, on getting, the <code id=the-script-element:dom-script-async-2><a href=#dom-script-async>async</a></code> IDL attribute must return
- true, and on setting, the <a href=#force-async id=the-script-element:force-async-7>"force-async"</a> flag must first be unset, and then the
+ true, and on setting, the <a href=#non-blocking id=the-script-element:non-blocking-7>"non-blocking"</a> flag must first be unset, and then the
content attribute must be removed if the IDL attribute's new value is false, and must be set to
the empty string if the IDL attribute's new value is true. If the element's
- <a href=#force-async id=the-script-element:force-async-8>"force-async"</a> flag is <em>not</em> set, the IDL attribute must <a href=#reflect id=the-script-element:reflect-3>reflect</a>
+ <a href=#non-blocking id=the-script-element:non-blocking-8>"non-blocking"</a> flag is <em>not</em> set, the IDL attribute must <a href=#reflect id=the-script-element:reflect-3>reflect</a>
the <code id=the-script-element:attr-script-async-14><a href=#attr-script-async>async</a></code> content attribute.</p>
@@ -45276,7 +45283,7 @@
<p class=note>When inserted using the <code id=the-script-element:dom-document-write-2><a href=#dom-document-write>document.write()</a></code>
- method, <code id=the-script-element:the-script-element-58><a href=#the-script-element>script</a></code> elements execute (typically synchronously), but when inserted using
+ method, <code id=the-script-element:the-script-element-58><a href=#the-script-element>script</a></code> elements execute (typically blocking further script execution or HTML parsing), but when inserted using
<code id=the-script-element:dom-innerhtml><a href=#dom-innerhtml>innerHTML</a></code> and <code id=the-script-element:dom-outerhtml><a href=#dom-outerhtml>outerHTML</a></code>
attributes, they do not execute at all.</p>
@@ -45570,7 +45577,7 @@
<ul><li><p>When an XSLT transformation program is triggered by an <code><?xml-stylesheet?></code> processing instruction and the browser implements a
direct-to-DOM transformation, <code id=scriptTagXSLT:the-script-element-3><a href=#the-script-element>script</a></code> elements created by the XSLT processor need to
be marked <a href=#parser-inserted id=scriptTagXSLT:parser-inserted>"parser-inserted"</a> and run in document order (modulo scripts marked <code id=scriptTagXSLT:attr-script-defer><a href=#attr-script-defer>defer</a></code> or <code id=scriptTagXSLT:attr-script-async><a href=#attr-script-async>async</a></code>),
- asynchronously while the transformation is occurring.<li><p>The <code id=scriptTagXSLT:dom-xsltprocessor-transformtodocument><a href=#dom-xsltprocessor-transformtodocument>XSLTProcessor.transformToDocument()</a></code> method
+ <a href=#immediately id=scriptTagXSLT:immediately>immediately</a>, as the transformation is occurring.<li><p>The <code id=scriptTagXSLT:dom-xsltprocessor-transformtodocument><a href=#dom-xsltprocessor-transformtodocument>XSLTProcessor.transformToDocument()</a></code> method
adds elements to a <code id=scriptTagXSLT:document><a href=#document>Document</a></code> that is not in a <a href=#browsing-context id=scriptTagXSLT:browsing-context>browsing context</a>, and,
accordingly, any <code id=scriptTagXSLT:the-script-element-4><a href=#the-script-element>script</a></code> elements they create need to have their <a href=#already-started id=scriptTagXSLT:already-started>"already
started"</a> flag set in the <a href=#prepare-a-script id=scriptTagXSLT:prepare-a-script>prepare a script</a> algorithm and never get executed
@@ -46230,7 +46237,7 @@
<p>Otherwise, let <var>result</var> be a <code id=the-canvas-element:blob-2><a href=#blob>Blob</a></code> object representing <a href=#a-serialisation-of-the-bitmap-as-a-file id=the-canvas-element:a-serialisation-of-the-bitmap-as-a-file-2>a serialisation of the <code>canvas</code> element's
bitmap as a file</a>, using <var>arguments</var>. <a href=#refsFILEAPI>[FILEAPI]</a> </p>
- <li><p>Return, but continue running these steps asynchronously.<li><p>If <var>callback</var> is null, abort these steps.<li><p><a href=#queue-a-task id=the-canvas-element:queue-a-task>Queue a task</a> to invoke the <code id=the-canvas-element:filecallback-2><a href=#filecallback>FileCallback</a></code> <var>callback</var> with
+ <li><p>Return, but continue running these steps <a href=#in-parallel id=the-canvas-element:in-parallel>in parallel</a>.<li><p>If <var>callback</var> is null, abort these steps.<li><p><a href=#queue-a-task id=the-canvas-element:queue-a-task>Queue a task</a> to invoke the <code id=the-canvas-element:filecallback-2><a href=#filecallback>FileCallback</a></code> <var>callback</var> with
<var>result</var> as its argument. The <a href=#task-source id=the-canvas-element:task-source>task source</a> for this task is the <dfn id=canvas-blob-serialisation-task-source>canvas
blob serialisation task source</dfn>.</ol>
@@ -51844,7 +51851,7 @@
<p>This example shows a simple vocabulary used to describe the products of a model railway
manufacturer. The vocabulary has just five property names:</p>
- <dl><dt>product-code<dd>An integer that names the product in the manufacturer's catalog.<dt>name<dd>A brief description of the product.<dt>scale<dd>One of "HO", "1", or "Z" (potentially with leading or trailing
+ <dl><dt>product-code<dd>An integer that names the product in the manufacturer's catalogue.<dt>name<dd>A brief description of the product.<dt>scale<dd>One of "HO", "1", or "Z" (potentially with leading or trailing
whitespace), indicating the scale of the product.<dt>digital<dd>If present, one of "Digital", "Delta", or "Systems"
(potentially with leading or trailing whitespace) indicating that
the product has a digital decoder of the given type.<dt>track-type<dd>For track-specific products, one of "K", "M", "C" (potentially
@@ -54592,7 +54599,7 @@
itself.<li><p>Let <var>new chain</var> be the <a href=#focus-chain id=processing-model-6:focus-chain-2>focus chain</a> of <var>new
focus target</var>.<li><p>Run the <a href=#focus-update-steps id=processing-model-6:focus-update-steps>focus update steps</a> with <var>old chain</var>, <var>new chain</var>, and <var>new focus target</var> respectively.</ol>
- <p>User agents must synchronously run the <a href=#focusing-steps id=processing-model-6:focusing-steps-2>focusing steps</a> for a <a href=#focusable-area id=processing-model-6:focusable-area-10>focusable area</a>,
+ <p>User agents must <a href=#immediately id=processing-model-6:immediately>immediately</a> run the <a href=#focusing-steps id=processing-model-6:focusing-steps-2>focusing steps</a> for a <a href=#focusable-area id=processing-model-6:focusable-area-10>focusable area</a>,
<code id=processing-model-6:the-dialog-element-3><a href=#the-dialog-element>dialog</a></code>, or <a href=#browsing-context id=processing-model-6:browsing-context-4>browsing context</a> <var>candidate</var> whenever the
user attempts to move the focus to <var>candidate</var>.</p>
@@ -54629,7 +54636,7 @@
<p>When the <a href=#currently-focused-area-of-a-top-level-browsing-context id=processing-model-6:currently-focused-area-of-a-top-level-browsing-context-7>currently focused area of a top-level browsing context</a> is somehow
unfocused without another element being explicitly focused in its stead, the user agent must
- synchronously run the <a href=#unfocusing-steps id=processing-model-6:unfocusing-steps>unfocusing steps</a> for that object.</p>
+ <a href=#immediately id=processing-model-6:immediately-2>immediately</a> run the <a href=#unfocusing-steps id=processing-model-6:unfocusing-steps>unfocusing steps</a> for that object.</p>
<p class=note>The <a href=#unfocusing-steps id=processing-model-6:unfocusing-steps-2>unfocusing steps</a> do not always result in the focus changing, even
when applied to the <a href=#currently-focused-area-of-a-top-level-browsing-context id=processing-model-6:currently-focused-area-of-a-top-level-browsing-context-8>currently focused area of a top-level browsing context</a>. For
@@ -55370,7 +55377,7 @@
disabled.</p>
<p>When the <code id=making-entire-documents-editable:-the-designmode-idl-attribute:designMode-8><a href=#designMode>designMode</a></code> changes from being disabled to
- being enabled, the user agent must synchronously reset the document's <a href=#active-range id=making-entire-documents-editable:-the-designmode-idl-attribute:active-range>active range</a>'s
+ being enabled, the user agent must <a href=#immediately id=making-entire-documents-editable:-the-designmode-idl-attribute:immediately>immediately</a> reset the document's <a href=#active-range id=making-entire-documents-editable:-the-designmode-idl-attribute:active-range>active range</a>'s
start and end boundary points to be at the start of the <code id=making-entire-documents-editable:-the-designmode-idl-attribute:document-2><a href=#document>Document</a></code> and then run the
<a href=#focusing-steps id=making-entire-documents-editable:-the-designmode-idl-attribute:focusing-steps>focusing steps</a> for the root element of the <code id=making-entire-documents-editable:-the-designmode-idl-attribute:document-3><a href=#document>Document</a></code>, if any.</p>
@@ -58958,9 +58965,9 @@
<p>Each <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-4>top-level browsing context</a> has a <dfn id=session-history-traversal-queue>session history traversal queue</dfn>,
initially empty, to which <a href=#concept-task id=the-history-interface:concept-task>tasks</a> can be added.</p>
- <p>Each <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-5>top-level browsing context</a>, when created, must asynchronously begin running
+ <p>Each <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-5>top-level browsing context</a>, when created, must begin running
the following algorithm, known as the <dfn id=session-history-event-loop>session history event loop</dfn> for that
- <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-6>top-level browsing context</a>:</p>
+ <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-6>top-level browsing context</a>, <a href=#in-parallel id=the-history-interface:in-parallel>in parallel</a>:</p>
<ol><li><p>Wait until this <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-7>top-level browsing context</a>'s <a href=#session-history-traversal-queue id=the-history-interface:session-history-traversal-queue>session history traversal
queue</a> is not empty.<li><p>Pull the first <a href=#concept-task id=the-history-interface:concept-task-2>task</a> from this <a href=#top-level-browsing-context id=the-history-interface:top-level-browsing-context-8>top-level browsing
@@ -59508,9 +59515,9 @@
<p class=note>The <a href=#navigate-redirect-step><i>handle redirects</i></a> step later in
this algorithm can in certain cases jump back to the step labeled <a href=#navigate-fragid-step><i>fragment identifiers</i></a>. Since, between those two steps,
- this algorithm goes from operating synchronously in the context of the calling <a href=#concept-task id=navigating-across-documents:concept-task-2>task</a> to operating asynchronously independent of the <a href=#event-loop id=navigating-across-documents:event-loop>event
- loop</a>, some of the intervening steps need to be able to handle both being synchronous and
- being asynchronous. The <var>gone async</var> flag is thus used to make these steps
+ this algorithm goes from operating synchronously in the context of the calling <a href=#concept-task id=navigating-across-documents:concept-task-2>task</a> to operating <a href=#in-parallel id=navigating-across-documents:in-parallel>in parallel</a> independent of the <a href=#event-loop id=navigating-across-documents:event-loop>event
+ loop</a>, some of the intervening steps need to be able to handle both being run as part of a <a href=#concept-task id=navigating-across-documents:concept-task-3>task</a> and
+ running <a href=#in-parallel id=navigating-across-documents:in-parallel-2>in parallel</a>. The <var>gone async</var> flag is thus used to make these steps
aware of which mode they are operating in.</p>
<li id=navigate-fragid-step><p><i>Fragment identifiers</i>: If this is not a
@@ -59614,7 +59621,7 @@
</ol>
- <p>The <a href=#task-source id=navigating-across-documents:task-source>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-3>task</a> is the
+ <p>The <a href=#task-source id=navigating-across-documents:task-source>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-4>task</a> is the
<a href=#dom-manipulation-task-source id=navigating-across-documents:dom-manipulation-task-source>DOM manipulation task source</a>.</p>
<div class=example>
@@ -59944,7 +59951,7 @@
indicated part of the document</a>, then return to the <i>fragment identifier loop</i>
step.</ol>
- <p>The <a href=#task-source id=navigating-across-documents:task-source-2>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-4>task</a> is the
+ <p>The <a href=#task-source id=navigating-across-documents:task-source-2>task source</a> for this <a href=#concept-task id=navigating-across-documents:concept-task-5>task</a> is the
<a href=#networking-task-source id=navigating-across-documents:networking-task-source>networking task source</a>.</p>
@@ -60218,7 +60225,7 @@
<a href=#top-level-browsing-context id=scroll-to-fragid:top-level-browsing-context>top-level browsing context</a>'s <a href=#document-family id=scroll-to-fragid:document-family>document family</a>.<li><p>Append a new entry at the end of the <code id=scroll-to-fragid:history-3><a href=#history-3>History</a></code> object representing the new
resource and its <code id=scroll-to-fragid:document-2><a href=#document>Document</a></code> object and related state. Its <a href=#url id=scroll-to-fragid:url>URL</a> must be set
to the address to which the user agent was <a href=#navigate id=scroll-to-fragid:navigate>navigating</a>. The title
- must be left unset.<li><p><a href=#traverse-the-history id=scroll-to-fragid:traverse-the-history>Traverse the history</a> to the new entry, with the <i>asynchronous events</i> flag
+ must be left unset.<li><p><a href=#traverse-the-history id=scroll-to-fragid:traverse-the-history>Traverse the history</a> to the new entry, with the <i>non-blocking events</i> flag
set. This will <a href=#scroll-to-the-fragment-identifier id=scroll-to-fragid:scroll-to-the-fragment-identifier>scroll to the fragment
identifier</a> given in what is now <a id="scroll-to-fragid:the-document's-address" href=https://dom.spec.whatwg.org/#concept-document-url data-x-internal="the-document's-address">the document's address</a>.</ol>
@@ -60281,7 +60288,7 @@
<p>When a user agent is required to <dfn id=traverse-the-history>traverse the history</dfn> to a <var>specified
entry</var>, optionally with <a href=#replacement-enabled id=history-traversal:replacement-enabled>replacement enabled</a>, and optionally with the
- <i>asynchronous events</i> flag set, the user agent must act as follows.</p>
+ <i>non-blocking events</i> flag set, the user agent must act as follows.</p>
<p class=note>This algorithm is not just invoked when <a href=#traverse-the-history-by-a-delta id=history-traversal:traverse-the-history-by-a-delta>explicitly going back or forwards in the session history</a> — it is also invoked
in other situations, for example when <a href=#navigate id=history-traversal:navigate>navigating a browsing context</a>,
@@ -60394,9 +60401,9 @@
<li><p>Let the <a href=#latest-entry id=history-traversal:latest-entry-2>latest entry</a> of the <code id=history-traversal:document-20><a href=#document>Document</a></code> of the <var>specified entry</var> be the <var>specified entry</var>.<li>
- <p>If the <i>asynchronous events</i> flag is not set, then run the following steps
- synchronously. Otherwise, the <i>asynchronous events</i> flag is set; <a href=#queue-a-task id=history-traversal:queue-a-task-2>queue a task</a>
- to run the following substeps.</p>
+ <p>If the <i>non-blocking events</i> flag is not set, then run the following steps
+ <a href=#immediately id=history-traversal:immediately>immediately</a>. Otherwise, the <i>non-blocking events</i> flag is set; <a href=#queue-a-task id=history-traversal:queue-a-task-2>queue a task</a>
+ to run the following substeps instead.</p>
<ol><li><p>If <var>state changed</var> is true, <a href=#concept-event-fire id=history-traversal:concept-event-fire-2>fire</a> a <a href=#concept-events-trusted id=history-traversal:concept-events-trusted-2>trusted</a>
event with the name <code id=history-traversal:event-popstate><a href=#event-popstate>popstate</a></code> at the <code id=history-traversal:window-2><a href=#window>Window</a></code>
@@ -61499,7 +61506,7 @@
identify a <a href=#concept-appcache-manifest id=downloading-or-updating-an-application-cache:concept-appcache-manifest>manifest</a>, or for an <a href=#application-cache-group id=downloading-or-updating-an-application-cache:application-cache-group>application
cache group</a>, potentially given a particular <a href=#cache-host id=downloading-or-updating-an-application-cache:cache-host>cache host</a>, and potentially given
a <a href=#concept-appcache-master id=downloading-or-updating-an-application-cache:concept-appcache-master>master</a> resource, the user agent must run the steps
- below. These steps are always run asynchronously, in parallel with the <a href=#event-loop id=downloading-or-updating-an-application-cache:event-loop>event loop</a>
+ below. These steps are always run <a href=#in-parallel id=downloading-or-updating-an-application-cache:in-parallel>in parallel</a> with the <a href=#event-loop id=downloading-or-updating-an-application-cache:event-loop>event loop</a>
<a href=#concept-task id=downloading-or-updating-an-application-cache:concept-task>tasks</a>.</p>
<p>Some of these steps have requirements that only apply if the user agent <dfn id=shows-caching-progress>shows caching
@@ -61576,7 +61583,7 @@
some sort of user interface indicating to the user that the user agent is checking for the
availability of updates.</ol>
- <p class=note>The remainder of the steps run asynchronously.</p>
+ <p class=note>The remainder of the steps run <a href=#in-parallel id=downloading-or-updating-an-application-cache:in-parallel-2>in parallel</a>.</p>
<p>If <var>cache group</var> already has an <a href=#application-cache id=downloading-or-updating-an-application-cache:application-cache-3>application cache</a> in it, then
this is an <dfn id=concept-appcache-upgrade>upgrade attempt</dfn>. Otherwise, this is a
@@ -61590,7 +61597,7 @@
display of some sort of user interface indicating to the user that the user agent is checking for
the availability of updates.<li>
- <p><i>Fetching the manifest</i>: <a href=#fetch id=downloading-or-updating-an-application-cache:fetch>Fetch</a> the resource from <var>manifest URL</var> with the <i>synchronous flag</i> set, and let <var>manifest</var> be that resource. HTTP caching semantics should be honored for this
+ <p><i>Fetching the manifest</i>: <a href=#fetch id=downloading-or-updating-an-application-cache:fetch>Fetch</a> the resource from <var>manifest URL</var> with the <i>blocking flag</i> set, and let <var>manifest</var> be that resource. HTTP caching semantics should be honored for this
request. The <i>override referrer source</i> must be null.</p>
<p>Parse <var>manifest</var> according to the <a href=#parse-a-manifest id=downloading-or-updating-an-application-cache:parse-a-manifest>rules for
@@ -61730,7 +61737,7 @@
in preparation for updating the application. <a href=#refsXHR>[XHR]</a><li>
<p><a href=#fetch id=downloading-or-updating-an-application-cache:fetch-2>Fetch</a> the resource, from the <a href=#origin-2 id=downloading-or-updating-an-application-cache:origin-2>origin</a> of the
- <a href=#url id=downloading-or-updating-an-application-cache:url-3>URL</a> <var>manifest URL</var>, with the <i>synchronous flag</i> set and
+ <a href=#url id=downloading-or-updating-an-application-cache:url-3>URL</a> <var>manifest URL</var>, with the <i>blocking flag</i> set and
the <i>manual redirect flag</i> set. If this is an <a href=#concept-appcache-upgrade id=downloading-or-updating-an-application-cache:concept-appcache-upgrade-3>upgrade attempt</a>, then use the <a href=#concept-appcache-newer id=downloading-or-updating-an-application-cache:concept-appcache-newer-4>newest</a> <a href=#application-cache id=downloading-or-updating-an-application-cache:application-cache-15>application cache</a> in <var>cache group</var> as an HTTP cache, and honor HTTP caching semantics (such as
expiration, ETags, and so forth) with respect to that cache. User agents may also have other
caches in place that are also honored. The <i>override referrer source</i> must be null.</p>
@@ -61859,7 +61866,7 @@
<li>
<p><a href=#fetch id=downloading-or-updating-an-application-cache:fetch-5>Fetch</a> the resource from <var>manifest URL</var> again, with
- the <i>synchronous flag</i> set, and let <var>second manifest</var> be that resource.
+ the <i>blocking flag</i> set, and let <var>second manifest</var> be that resource.
HTTP caching semantics should again be honored for this request. The <i>override referrer source</i> must be null.</p>
<p class=note>Since caching can be honored, authors are encouraged to avoid setting the cache
@@ -62111,7 +62118,7 @@
<p class=note>How quotas are presented to the user is not defined by this specification. User
agents are encouraged to provide features such as allowing a user to indicate that certain sites
- are trusted to use more than the default quota, e.g. by asynchronously presenting a user interface
+ are trusted to use more than the default quota, e.g. by presenting a non-modal user interface
while a cache is being updated, or by having an explicit whitelist in the user agent's
configuration interface.</p>
@@ -62945,15 +62952,15 @@
<dl><dt>Events<dd>
- <p>Asynchronously dispatching an <code id=definitions-3:event><a href=#event>Event</a></code> object at a particular
+ <p>Dispatching an <code id=definitions-3:event><a href=#event>Event</a></code> object at a particular
<code id=definitions-3:eventtarget><a href=#eventtarget>EventTarget</a></code> object is often done by a dedicated task.</p>
<p class=note>Not all events are dispatched using the <a href=#task-queue id=definitions-3:task-queue-2>task queue</a>, many are
- dispatched synchronously during other tasks.</p>
+ dispatched during other tasks.</p>
<dt>Parsing<dd><p>The <a href=#html-parser id=definitions-3:html-parser>HTML parser</a> tokenizing one or more bytes, and then processing any
- resulting tokens, is typically a task.<dt>Callbacks<dd><p>Calling a callback asynchronously is often done by a dedicated task.<dt>Using a resource<dd><p>When an algorithm <a href=#fetch id=definitions-3:fetch>fetches</a> a resource, if the fetching occurs
- asynchronously then the processing of the resource once some or all of the resource is available
+ resulting tokens, is typically a task.<dt>Callbacks<dd><p>Calling a callback is often done by a dedicated task.<dt>Using a resource<dd><p>When an algorithm <a href=#fetch id=definitions-3:fetch>fetches</a> a resource, if the fetching occurs
+ in a non-blocking fashion then the processing of the resource once some or all of the resource is available
is performed by a task.<dt>Reacting to DOM manipulation<dd><p>Some elements have tasks that trigger in response to DOM manipulation, e.g. when that
element is <a href=#insert-an-element-into-a-document id=definitions-3:insert-an-element-into-a-document>inserted into the document</a>.</p>
@@ -63105,11 +63112,14 @@
<hr>
- <p>When an asynchronously-running algorithm is to <dfn id=await-a-stable-state>await a stable state</dfn>, the user agent
- must <a href=#queue-a-microtask id=processing-model-9:queue-a-microtask>queue a microtask</a> that first runs the algorithm's <dfn id=synchronous-section>synchronous
- section</dfn>, and then resumes running the asynchronous algorithm (if appropriate), as described
- in the algorithm's steps.</p>
+ <p>When an algorithm running <a href=#in-parallel id=processing-model-9:in-parallel>in parallel</a> is to <dfn id=await-a-stable-state>await a stable state</dfn>, the
+ user agent must <a href=#queue-a-microtask id=processing-model-9:queue-a-microtask>queue a microtask</a> that runs the following steps, and must then stop
+ executing (execution of the algorithm resumes when the microtask is run, as described in the
+ following steps):</p>
+ <ol><li><p>Run the algorithm's <dfn id=synchronous-section>synchronous section</dfn>.<li><p>Resumes execution of the algorithm <a href=#in-parallel id=processing-model-9:in-parallel-2>in parallel</a>, if appropriate, as described
+ in the algorithm's steps.</ol>
+
<p class=note>Steps in <a href=#synchronous-section id=processing-model-9:synchronous-section>synchronous sections</a> are marked
with ⌛.</p>
@@ -63132,7 +63142,7 @@
of script settings objects</a>.<li><p>Empty the <a href=#stack-of-script-settings-objects id=processing-model-9:stack-of-script-settings-objects-2>stack of script settings objects</a>.<li><p><a href=#run-the-global-script-clean-up-jobs id=processing-model-9:run-the-global-script-clean-up-jobs>Run the global script clean-up jobs</a>.<li><p><a href=#perform-a-microtask-checkpoint id=processing-model-9:perform-a-microtask-checkpoint-3>Perform a microtask checkpoint</a>.<li>
<p>Stop <var>task</var>, allowing whatever algorithm that invoked it to resume, but
- continue these steps asynchronously.</p>
+ continue these steps <a href=#in-parallel id=processing-model-9:in-parallel-3>in parallel</a>.</p>
<p class=note>This causes one of the following algorithms to continue: the <a href=#event-loop id=processing-model-9:event-loop-25>event
loop</a>'s main set of steps, the <a href=#perform-a-microtask-checkpoint id=processing-model-9:perform-a-microtask-checkpoint-4>perform a microtask checkpoint</a> algorithm, or
@@ -63175,14 +63185,14 @@
<dl><dt>The <dfn id=dom-manipulation-task-source>DOM manipulation task source</dfn><dd>
<p>This <a href=#task-source id=generic-task-sources:task-source-2>task source</a> is used for features that react to DOM manipulations, such as
- things that happen asynchronously when an element is <a href=#insert-an-element-into-a-document id=generic-task-sources:insert-an-element-into-a-document>inserted into the document</a>.</p>
+ things that happen in a non-blocking fashion when an element is <a href=#insert-an-element-into-a-document id=generic-task-sources:insert-an-element-into-a-document>inserted into the document</a>.</p>
<dt>The <dfn id=user-interaction-task-source>user interaction task source</dfn><dd>
<p>This <a href=#task-source id=generic-task-sources:task-source-3>task source</a> is used for features that react to user interaction, for
example keyboard or mouse input.</p>
- <p>Asynchronous events sent in response to user input (e.g. <code id=generic-task-sources:event-click><a href=#event-click>click</a></code> events) must be fired using <a href=#concept-task id=generic-task-sources:concept-task>tasks</a> <a href=#queue-a-task id=generic-task-sources:queue-a-task>queued</a> with the <a href=#user-interaction-task-source id=generic-task-sources:user-interaction-task-source>user
+ <p>Events sent in response to user input (e.g. <code id=generic-task-sources:event-click><a href=#event-click>click</a></code> events) must be fired using <a href=#concept-task id=generic-task-sources:concept-task>tasks</a> <a href=#queue-a-task id=generic-task-sources:queue-a-task>queued</a> with the <a href=#user-interaction-task-source id=generic-task-sources:user-interaction-task-source>user
interaction task source</a>. <a href=#refsDOMEVENTS>[DOMEVENTS]</a></p>
<dt>The <dfn id=networking-task-source>networking task source</dfn><dd>
@@ -64039,7 +64049,7 @@
<p class=note>This basically causes <code id=opening-the-input-stream:dom-document-open-6><a href=#dom-document-open>document.open()</a></code> to
be ignored when it's called in an inline script found during parsing, while still letting it
- have an effect when called asynchronously.</p>
+ have an effect when called from a non-parser task such as a timer callback or event handler.</p>
<li>
@@ -64406,7 +64416,7 @@
by this algorithm, then let <var>nesting level</var> be the <a href=#concept-task id=timers:concept-task-4>task</a>'s <a href=#timer-nesting-level id=timers:timer-nesting-level>timer nesting level</a>. Otherwise, let <var>nesting level</var> be zero.<li><p>If <var>nesting level</var> is greater than 5, and <var>timeout</var> is
less than 4, then increase <var>timeout</var> to 4.<li><p>Increment <var>nesting level</var> by one.<li><p>Let <var>task</var>'s <dfn id=timer-nesting-level>timer nesting level</dfn> be <var>nesting
level</var>.<li><p>Return <var>handle</var>, and then continue running this algorithm
- asynchronously.<li>
+ <a href=#in-parallel id=timers:in-parallel>in parallel</a>.<li>
<p>If <var>method context</var> is a <code id=timers:window-5><a href=#window>Window</a></code> object, wait until the
<code id=timers:document><a href=#document>Document</a></code> associated with <var>method context</var> has been <a href=#fully-active id=timers:fully-active>fully
@@ -64582,7 +64592,7 @@
<p>When the <dfn id=dom-print><code>print()</code></dfn> method is invoked, if the
<code id=printing:document><a href=#document>Document</a></code> is <a href=#ready-for-post-load-tasks id=printing:ready-for-post-load-tasks>ready for post-load tasks</a>, then the user agent must
- synchronously run the <a href=#printing-steps id=printing:printing-steps>printing steps</a>. Otherwise, the user agent must only set the
+ run the <a href=#printing-steps id=printing:printing-steps>printing steps</a> <a href=#in-parallel id=printing:in-parallel>in parallel</a>. Otherwise, the user agent must only set the
<dfn id=print-when-loaded>print when loaded</dfn> flag on the <code id=printing:document-2><a href=#document>Document</a></code>.</p>
@@ -66033,7 +66043,7 @@
image of the animation (the one that the format defines is to be used when animation is not
supported or is disabled), or, if there is no such image, the first frame of the
animation.<li><p>Return a new <code id=images:promise-4><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill>Fulfill</a> the <code id=images:promise-5><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill>Fulfill</a> the <code id=images:promise-5><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver>resolver</a>, with the new
<code id=images:imagebitmap-12><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66051,7 +66061,7 @@
correction has been applied), <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-2>cropped to the source rectangle</a>.</p>
<li><p>Return a new <code id=images:promise-6><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-2>Fulfill</a> the <code id=images:promise-7><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel-2>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-2>Fulfill</a> the <code id=images:promise-7><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-2>resolver</a>, with the new
<code id=images:imagebitmap-15><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66065,7 +66075,7 @@
vertical dimension equal to zero, then throw an <code id=images:invalidstateerror-7><a href=#invalidstateerror>InvalidStateError</a></code> exception and
abort these steps.<li><p>Create a new <code id=images:imagebitmap-16><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-17><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be a copy of the
<code id=images:the-canvas-element-6><a href=#the-canvas-element>canvas</a></code> element's bitmap data, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-3>cropped to the source
- rectangle</a>.<li><p>Return a new <code id=images:promise-8><a href=#promise>Promise</a></code>, but continue running these steps asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-3>Fulfill</a> the <code id=images:promise-9><a href=#promise>Promise</a></code>'s
+ rectangle</a>.<li><p>Return a new <code id=images:promise-8><a href=#promise>Promise</a></code>, but continue running these steps <a href=#in-parallel id=images:in-parallel-3>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-3>Fulfill</a> the <code id=images:promise-9><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-3>resolver</a>, with the new
<code id=images:imagebitmap-18><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66075,7 +66085,7 @@
<ol><li><p>If either the <var>sw</var> or <var>sh</var> arguments are specified
but zero, throw an <code id=images:indexsizeerror-4><a href=#indexsizeerror>IndexSizeError</a></code> exception and abort these steps.<li><p>If the <code id=images:blob-4><a href=#blob>Blob</a></code> object has been disabled through the <code id=images:dom-blob-close><a href=#dom-blob-close>close()</a></code> method, then throw an <code id=images:invalidstateerror-8><a href=#invalidstateerror>InvalidStateError</a></code>
- exception and abort these steps.<li><p>Return a new <code id=images:promise-10><a href=#promise>Promise</a></code>, but continue running these steps asynchronously.<li><p>Read the <code id=images:blob-5><a href=#blob>Blob</a></code> object's data. If an <a href=#file-error-read id=images:file-error-read>error
+ exception and abort these steps.<li><p>Return a new <code id=images:promise-10><a href=#promise>Promise</a></code>, but continue running these steps <a href=#in-parallel id=images:in-parallel-4>in parallel</a>.<li><p>Read the <code id=images:blob-5><a href=#blob>Blob</a></code> object's data. If an <a href=#file-error-read id=images:file-error-read>error
occurs during reading of the object</a>, then <a href=#concept-resolver-reject id=images:concept-resolver-reject>reject</a> the <code id=images:promise-11><a href=#promise>Promise</a></code>'s associated <a href=#concept-resolver id=images:concept-resolver-4>resolver</a>, with null as the value, and abort these
steps.<li><p>Apply the <a href=https://mimesniff.spec.whatwg.org/#rules-for-sniffing-images-specifically id=images:content-type-sniffing:-image data-x-internal=content-type-sniffing:-image>image sniffing rules</a> to
determine the file format of the image data, with MIME type of the <code id=images:blob-6><a href=#blob>Blob</a></code> (as given
@@ -66101,7 +66111,7 @@
but zero, throw an <code id=images:indexsizeerror-5><a href=#indexsizeerror>IndexSizeError</a></code> exception and abort these steps.<li><p>If the <var>image</var> object's <code id=images:dom-imagedata-data-2><a href=#dom-imagedata-data>data</a></code>
attribute has been <a href=#concept-transferable-neutered id=images:concept-transferable-neutered-2>neutered</a>, throw an
<code id=images:invalidstateerror-9><a href=#invalidstateerror>InvalidStateError</a></code> exception and abort these steps.<li><p>Create a new <code id=images:imagebitmap-23><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-24><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be the image data given by the
- <code id=images:imagedata-5><a href=#imagedata>ImageData</a></code> object, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-5>cropped to the source rectangle</a>.<li><p>Return a new <code id=images:promise-14><a href=#promise>Promise</a></code>, but continue running these steps asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-5>Fulfill</a> the <code id=images:promise-15><a href=#promise>Promise</a></code>'s
+ <code id=images:imagedata-5><a href=#imagedata>ImageData</a></code> object, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-5>cropped to the source rectangle</a>.<li><p>Return a new <code id=images:promise-14><a href=#promise>Promise</a></code>, but continue running these steps <a href=#in-parallel id=images:in-parallel-5>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-5>Fulfill</a> the <code id=images:promise-15><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-7>resolver</a>, with the new
<code id=images:imagebitmap-25><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66117,7 +66127,7 @@
<code id=images:invalidstateerror-11><a href=#invalidstateerror>InvalidStateError</a></code> exception and abort these steps.<li><p>Create a new <code id=images:imagebitmap-26><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-27><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be a copy of the
<code id=images:canvasrenderingcontext2d-7><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object's <a href=#scratch-bitmap id=images:scratch-bitmap-3>scratch bitmap</a>, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-6>cropped to
the source rectangle</a>.<li><p>Return a new <code id=images:promise-16><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-6>Fulfill</a> the <code id=images:promise-17><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel-6>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-6>Fulfill</a> the <code id=images:promise-17><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-8>resolver</a>, with the new
<code id=images:imagebitmap-28><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66128,7 +66138,7 @@
<ol><li><p>If either the <var>sw</var> or <var>sh</var> arguments are specified
but zero, throw an <code id=images:indexsizeerror-7><a href=#indexsizeerror>IndexSizeError</a></code> exception and abort these steps.<li><p>Create a new <code id=images:imagebitmap-30><a href=#imagebitmap>ImageBitmap</a></code> object.<li><p>Let the <code id=images:imagebitmap-31><a href=#imagebitmap>ImageBitmap</a></code> object's bitmap data be a copy of the <var>image</var> argument's bitmap data, <a href=#cropped-to-the-source-rectangle id=images:cropped-to-the-source-rectangle-7>cropped to the source
rectangle</a>.<li><p>Return a new <code id=images:promise-18><a href=#promise>Promise</a></code>, but continue running these steps
- asynchronously.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-7>Fulfill</a> the <code id=images:promise-19><a href=#promise>Promise</a></code>'s
+ <a href=#in-parallel id=images:in-parallel-7>in parallel</a>.<li><p><a href=#concept-resolver-fulfill id=images:concept-resolver-fulfill-7>Fulfill</a> the <code id=images:promise-19><a href=#promise>Promise</a></code>'s
associated <a href=#concept-resolver id=images:concept-resolver-9>resolver</a>, with the new
<code id=images:imagebitmap-32><a href=#imagebitmap>ImageBitmap</a></code> object as the value.</ol>
@@ -66390,7 +66400,7 @@
these steps.<li><p>Create a new <code id=the-eventsource-interface:eventsource-2><a href=#eventsource>EventSource</a></code> object.<li><p>Let <var>CORS mode</var> be <a href=#attr-crossorigin-anonymous id=the-eventsource-interface:attr-crossorigin-anonymous>Anonymous</a>.<li><p>If the second argument is present, and the <code id=the-eventsource-interface:dom-eventsourceinit-withcredentials><a href=#dom-eventsourceinit-withcredentials>withCredentials</a></code> dictionary member has the
value true, then set <var>CORS mode</var> to <a href=#attr-crossorigin-use-credentials id=the-eventsource-interface:attr-crossorigin-use-credentials>Use Credentials</a> and initialise the new
<code id=the-eventsource-interface:eventsource-3><a href=#eventsource>EventSource</a></code> object's <code id=the-eventsource-interface:dom-eventsource-withcredentials-2><a href=#dom-eventsource-withcredentials>withCredentials</a></code> attribute to true.<li><p>Return the new <code id=the-eventsource-interface:eventsource-4><a href=#eventsource>EventSource</a></code> object, but continue these steps
- asynchronously.<li>
+ <a href=#in-parallel id=the-eventsource-interface:in-parallel>in parallel</a>.<li>
<p>Do a <a href=#potentially-cors-enabled-fetch id=the-eventsource-interface:potentially-cors-enabled-fetch>potentially CORS-enabled fetch</a> of the resulting <a href=#absolute-url id=the-eventsource-interface:absolute-url>absolute
URL</a> using the <a href=#api-referrer-source id=the-eventsource-interface:api-referrer-source>API referrer source</a> specified by the <a href=#entry-settings-object id=the-eventsource-interface:entry-settings-object-2>entry settings
@@ -66488,7 +66498,7 @@
<p>The <a href=#concept-task id=processing-model-10:concept-task-2>task</a> that the <a href=#networking-task-source id=processing-model-10:networking-task-source-2>networking task source</a> places
on the <a href=#task-queue id=processing-model-10:task-queue>task queue</a> once the <a href=#fetch id=processing-model-10:fetch-2>fetching algorithm</a> for such a
resource (with the correct <a href=#mime-type id=processing-model-10:mime-type-3>MIME type</a>) has completed must cause the user agent to
- asynchronously <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection>reestablish the connection</a>. This applies whether the connection is
+ <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection>reestablish the connection</a> <a href=#in-parallel id=processing-model-10:in-parallel>in parallel</a>. This applies whether the connection is
closed gracefully or unexpectedly (but does not apply when the <a href=#fetch id=processing-model-10:fetch-3>fetch</a> algorithm is
canceled by the user agent, e.g. in response to <code id=processing-model-10:dom-window-stop><a href=#dom-window-stop>window.stop()</a></code>,
since in those cases the final <a href=#concept-task id=processing-model-10:concept-task-3>task</a> is actually discarded).
@@ -66510,7 +66520,7 @@
<p id=event-source-network-errors-reconnect>Network errors that prevents the connection from
being established in the first place (e.g. DNS errors), must cause the user agent to
- asynchronously <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection-2>reestablish the connection</a>.</p>
+ <a href=#reestablish-the-connection id=processing-model-10:reestablish-the-connection-2>reestablish the connection</a> <a href=#in-parallel id=processing-model-10:in-parallel-2>in parallel</a>.</p>
<p id=event-source-fail-reasons>Any other HTTP response code not listed here, as well as the
cancelation of the <a href=#fetch id=processing-model-10:fetch-5>fetch</a> algorithm by the user agent (e.g. in response to <code id=processing-model-10:dom-window-stop-2><a href=#dom-window-stop>window.stop()</a></code> or the user canceling the network connection
@@ -66527,8 +66537,8 @@
object.</p>
<p>When a user agent is to <dfn id=reestablish-the-connection>reestablish the connection</dfn>, the user agent must run the
- following steps. These steps are run asynchronously, not as part of a <a href=#concept-task id=processing-model-10:concept-task-4>task</a>. (The tasks that it queues, of course, are run like normal tasks
- and not asynchronously.)</p>
+ following steps. These steps are run <a href=#in-parallel id=processing-model-10:in-parallel-3>in parallel</a>, not as part of a <a href=#concept-task id=processing-model-10:concept-task-4>task</a>. (The tasks that it queues, of course, are run like normal tasks
+ and not themselves <a href=#in-parallel id=processing-model-10:in-parallel-4>in parallel</a>.)</p>
<ol><li>
@@ -67026,7 +67036,7 @@
steps. <a href=#refsWSP>[WSP]</a><li><p>Let <var>origin</var> be the <a href=#ascii-serialisation-of-an-origin id=the-websocket-interface:ascii-serialisation-of-an-origin>ASCII
serialisation</a> of the <a href=#origin-2 id=the-websocket-interface:origin-2-2>origin</a> specified by the <a href=#entry-settings-object id=the-websocket-interface:entry-settings-object-2>entry settings
object</a>, <a href=#converted-to-ascii-lowercase id=the-websocket-interface:converted-to-ascii-lowercase>converted to ASCII lowercase</a>.<li><p>Return a new <code id=the-websocket-interface:websocket-2><a href=#websocket>WebSocket</a></code> object, but continue these steps
- asynchronously.<li><p>Let the new object's <dfn id=client-specified-protocols>client-specified protocols</dfn> be the values (if any) given in
+ <a href=#in-parallel id=the-websocket-interface:in-parallel>in parallel</a>.<li><p>Let the new object's <dfn id=client-specified-protocols>client-specified protocols</dfn> be the values (if any) given in
<var>protocols</var>.<li>
<p><i id=the-websocket-interface:concept-websocket-establish><a href=#concept-websocket-establish>Establish a WebSocket connection</a></i> given the set
@@ -67165,7 +67175,7 @@
using <code id=the-websocket-interface:dom-websocket-send-5><a href=#dom-websocket-send>send()</a></code> but that, as of the last time the
<a href=#event-loop id=the-websocket-interface:event-loop>event loop</a> reached step 1, had not yet been transmitted to the network. (This thus
includes any text sent during the execution of the current task, regardless of whether the user
- agent is able to transmit text asynchronously with script execution.) This does not include
+ agent is able to transmit text in the background <a href=#in-parallel id=the-websocket-interface:in-parallel-2>in parallel</a> with script execution.) This does not include
framing overhead incurred by the protocol, or buffering done by the operating system or network
hardware. If the connection is closed, this attribute's value will only increase with each call to
the <code id=the-websocket-interface:dom-websocket-send-6><a href=#dom-websocket-send>send()</a></code> method (the number does not reset to zero once
@@ -67734,7 +67744,7 @@
<li><p>Make <var>new ports</var> into a <a href=#dfn-read-only-array id=posting-messages:dfn-read-only-array>read
only</a> array.<li><p>Return from the <code id=posting-messages:dom-window-postmessage-2><a href=#dom-window-postmessage>postMessage()</a></code> method, but
- asynchronously continue running these steps.<li>
+ <a href=#in-parallel id=posting-messages:in-parallel>in parallel</a> continue running these steps.<li>
<p>If the <var>targetOrigin</var> argument is a single literal U+002F SOLIDUS
character (/), and the <code id=posting-messages:document-3><a href=#document>Document</a></code> of the <code id=posting-messages:window-5><a href=#window>Window</a></code> object on which the
@@ -67779,7 +67789,7 @@
<p>Communication channels in this mechanism are implemented as two-ways pipes, with a port at each
end. Messages sent in one port are delivered at the other port, and vice-versa. Messages are
- asynchronous, and delivered as DOM events.</p>
+ delivered as DOM events, without interrupting or blocking running <a href=#concept-task id=introduction-14:concept-task>tasks</a>.</p>
<p>To create a connection (two "entangled" ports), the <code>MessageChannel()</code>
constructor is called:</p>
@@ -68128,7 +68138,7 @@
is entangled, if any.<li>
<p>Let <var>doomed</var> be false. It is set to true if a condition is detected that
- will make this message cause the port to be unusable; specifically, if the message contains <var>target port</var> as one of the objects being <a href=#transfer-a-transferable-object id=message-ports:transfer-a-transferable-object-3>transferred</a>. (This condition cannot necessarily be detected synchronously.)</p>
+ will make this message cause the port to be unusable; specifically, if the message contains <var>target port</var> as one of the objects being <a href=#transfer-a-transferable-object id=message-ports:transfer-a-transferable-object-3>transferred</a>. (This condition cannot necessarily be detected when the method is called.)</p>
<li>
@@ -69490,7 +69500,7 @@
<p>Once the <code id=worker-event-loop:workerglobalscope-3><a href=#workerglobalscope>WorkerGlobalScope</a></code>'s <a href=#dom-workerglobalscope-closing id=worker-event-loop:dom-workerglobalscope-closing>closing</a> flag is set to true, the <a href=#event-loop id=worker-event-loop:event-loop-4>event
loop</a>'s <a href=#task-queue id=worker-event-loop:task-queue-2>task queues</a> must discard any further <a href=#concept-task id=worker-event-loop:concept-task-2>tasks</a> that would be added to them (tasks already on the queue are
unaffected except where otherwise specified). Effectively, once the <a href=#dom-workerglobalscope-closing id=worker-event-loop:dom-workerglobalscope-closing-2>closing</a> flag is true, timers stop firing,
- notifications for all pending asynchronous operations are dropped, etc.</p>
+ notifications for all pending background operations are dropped, etc.</p>
@@ -69558,7 +69568,7 @@
<ol><li id=worker-processing-model-top>
<p>Create a separate parallel execution environment (i.e. a separate thread or process or
- equivalent construct), and run the rest of these steps asynchronously in that context.</p>
+ equivalent construct), and run the rest of these steps in that context.</p>
<p>For the purposes of timing APIs, this is the <dfn id=official-moment-of-creation>official moment of creation</dfn> of the
worker.</p>
@@ -69574,7 +69584,7 @@
<p>Attempt to <a href=#fetch id=processing-model-11:fetch>fetch</a> the resource identified by <var>url</var>, from the
<a href=#origin-2 id=processing-model-11:origin-2>origin</a> specified by <var>settings object</var>, using the <a href=#responsible-document id=processing-model-11:responsible-document>responsible
document</a> specified by <var>settings object</var> as the <a href=#referrer-source id=processing-model-11:referrer-source>referrer source</a> (not
- the specified <a href=#api-referrer-source id=processing-model-11:api-referrer-source>API referrer source</a>!), and with the <i>synchronous flag</i> set and
+ the specified <a href=#api-referrer-source id=processing-model-11:api-referrer-source>API referrer source</a>!), and with the <i>blocking flag</i> set and
the <i>force same-origin flag</i> set.</p>
<p>If the attempt fails, then for each <code id=processing-model-11:worker><a href=#worker>Worker</a></code> or <code id=processing-model-11:sharedworker><a href=#sharedworker>SharedWorker</a></code> object
@@ -69882,7 +69892,7 @@
and <var>worker URL</var>, and let <var>settings object</var> be the result.<li><p>Create a new <code id=dedicated-workers-and-the-worker-interface:worker-8><a href=#worker>Worker</a></code> object, associated with <var>worker global scope</var>.
Let <var>worker</var> be this new object.<li><p><a href=#create-a-new-messageport-object id=dedicated-workers-and-the-worker-interface:create-a-new-messageport-object>Create a new <code>MessagePort</code> object</a> whose <a href=#concept-port-owner id=dedicated-workers-and-the-worker-interface:concept-port-owner>owner</a> is the <a href=#incumbent-settings-object id=dedicated-workers-and-the-worker-interface:incumbent-settings-object-2>incumbent settings object</a>. Let this
be the <var>outside port</var>.<li><p>Associate the <var>outside port</var> with <var>worker</var>.<li><p><a href=#create-a-new-messageport-object id=dedicated-workers-and-the-worker-interface:create-a-new-messageport-object-2>Create a new <code>MessagePort</code> object</a> whose <a href=#concept-port-owner id=dedicated-workers-and-the-worker-interface:concept-port-owner-2>owner</a> is <var>settings object</var>. Let <var>inside
- port</var> be this new object.<li><p>Associate <var>inside port</var> with <var>worker global scope</var>.<li><p><a href=#entangle id=dedicated-workers-and-the-worker-interface:entangle>Entangle</a> <var>outside port</var> and <var>inside port</var>.<li><p>Return <var>worker</var>, and run the following steps asynchronously.<li><p>Enable <var>outside port</var>'s <a href=#port-message-queue id=dedicated-workers-and-the-worker-interface:port-message-queue>port message queue</a>.<li><p>Let <var>docs</var> be the <a href=#list-of-relevant-document-objects-to-add id=dedicated-workers-and-the-worker-interface:list-of-relevant-document-objects-to-add>list of relevant <code>Document</code> objects to
+ port</var> be this new object.<li><p>Associate <var>inside port</var> with <var>worker global scope</var>.<li><p><a href=#entangle id=dedicated-workers-and-the-worker-interface:entangle>Entangle</a> <var>outside port</var> and <var>inside port</var>.<li><p>Return <var>worker</var>, and run the following steps <a href=#in-parallel id=dedicated-workers-and-the-worker-interface:in-parallel>in parallel</a>.<li><p>Enable <var>outside port</var>'s <a href=#port-message-queue id=dedicated-workers-and-the-worker-interface:port-message-queue>port message queue</a>.<li><p>Let <var>docs</var> be the <a href=#list-of-relevant-document-objects-to-add id=dedicated-workers-and-the-worker-interface:list-of-relevant-document-objects-to-add>list of relevant <code>Document</code> objects to
add</a> given the <a href=#incumbent-settings-object id=dedicated-workers-and-the-worker-interface:incumbent-settings-object-3>incumbent settings object</a>.<li><p><a href="#add-a-document-to-the-worker's-documents" id="dedicated-workers-and-the-worker-interface:add-a-document-to-the-worker's-documents">Add to <var>worker global
scope</var>'s list of <span>the worker's <code>Document</code>s</span></a> the
<code id=dedicated-workers-and-the-worker-interface:document><a href=#document>Document</a></code> objects in <var>docs</var>.<li><p>If the <a href=#global-object id=dedicated-workers-and-the-worker-interface:global-object>global object</a> specified by the <a href=#incumbent-settings-object id=dedicated-workers-and-the-worker-interface:incumbent-settings-object-4>incumbent settings object</a>
@@ -70003,7 +70013,7 @@
<var>worker global scope</var> to <var>name</var>.<li><p><a href=#create-a-new-messageport-object id=shared-workers-and-the-sharedworker-interface:create-a-new-messageport-object-3>Create a new <code>MessagePort</code> object</a> whose <a href=#concept-port-owner id=shared-workers-and-the-sharedworker-interface:concept-port-owner-3>owner</a> is <var>settings object</var>. Let <var>inside
port</var> be this new object.<li><p><a href=#entangle id=shared-workers-and-the-sharedworker-interface:entangle-2>Entangle</a> <var>outside port</var> and <var>inside port</var>.</ol>
- <li><p>Return <var>worker</var> and perform the remaining steps asynchronously.<li><p>Create a <a href=#concept-events-trusted id=shared-workers-and-the-sharedworker-interface:concept-events-trusted-2>trusted</a> event that uses the
+ <li><p>Return <var>worker</var> and perform the remaining steps <a href=#in-parallel id=shared-workers-and-the-sharedworker-interface:in-parallel>in parallel</a>.<li><p>Create a <a href=#concept-events-trusted id=shared-workers-and-the-sharedworker-interface:concept-events-trusted-2>trusted</a> event that uses the
<code id=shared-workers-and-the-sharedworker-interface:messageevent-2><a href=#messageevent>MessageEvent</a></code> interface, with the name <code id=shared-workers-and-the-sharedworker-interface:event-workerglobalscope-connect-2><a href=#event-workerglobalscope-connect>connect</a></code>, which does not bubble, is not
cancelable, has no default action, has a <code id=shared-workers-and-the-sharedworker-interface:dom-messageevent-data-2><a href=#dom-messageevent-data>data</a></code>
attribute whose value is initialised to the empty string, has a <code id=shared-workers-and-the-sharedworker-interface:dom-messageevent-ports-2><a href=#dom-messageevent-ports>ports</a></code> attribute whose value is initialised to a <a href=#dfn-read-only-array id=shared-workers-and-the-sharedworker-interface:dfn-read-only-array-2>read only</a> array containing only the newly created port, and
@@ -70053,7 +70063,7 @@
<ol><li><p>If there are no arguments, return without doing anything. Abort these steps.<li><p>Let <var>settings object</var> be the <a href=#incumbent-settings-object id=importing-scripts-and-libraries:incumbent-settings-object>incumbent settings
object</a>.<li><p><a href=#resolve-a-url id=importing-scripts-and-libraries:resolve-a-url>Resolve</a> each argument.<li><p>If any fail, throw a <code id=importing-scripts-and-libraries:syntaxerror><a href=#syntaxerror>SyntaxError</a></code> exception and abort these steps.<li>
- <p>Attempt to <a href=#fetch id=importing-scripts-and-libraries:fetch>fetch</a> each resource identified by the resulting <a href=#absolute-url id=importing-scripts-and-libraries:absolute-url>absolute URLs</a>, from the <a href=#origin-2 id=importing-scripts-and-libraries:origin-2>origin</a> specified by <var>settings object</var>, using the <a href=#api-referrer-source id=importing-scripts-and-libraries:api-referrer-source>API referrer source</a> specified by <var>settings object</var>, and with the <i>synchronous flag</i> set.</p>
+ <p>Attempt to <a href=#fetch id=importing-scripts-and-libraries:fetch>fetch</a> each resource identified by the resulting <a href=#absolute-url id=importing-scripts-and-libraries:absolute-url>absolute URLs</a>, from the <a href=#origin-2 id=importing-scripts-and-libraries:origin-2>origin</a> specified by <var>settings object</var>, using the <a href=#api-referrer-source id=importing-scripts-and-libraries:api-referrer-source>API referrer source</a> specified by <var>settings object</var>, and with the <i>blocking flag</i> set.</p>
<li>
@@ -74377,7 +74387,7 @@
location</var> finds itself.<li>
<p>Mark the element as being <a href=#parser-inserted id=parsing-main-inhead:parser-inserted>"parser-inserted"</a> and unset the element's
- <a href=#force-async id=parsing-main-inhead:force-async>"force-async"</a> flag.</p>
+ <a href=#non-blocking id=parsing-main-inhead:non-blocking>"non-blocking"</a> flag.</p>
<p class=note>This ensures that, if the script is external, any <code id=parsing-main-inhead:dom-document-write><a href=#dom-document-write>document.write()</a></code> calls in the script will execute in-line,
instead of blowing the document away, as would happen in most other cases. It also prevents
@@ -77403,7 +77413,7 @@
<p id=scriptTagXML>When an <a href=#xml-parser id=parsing-xhtml-documents:xml-parser-3>XML parser</a> with <a href=#xml-scripting-support-enabled id=parsing-xhtml-documents:xml-scripting-support-enabled-2>XML scripting support enabled</a>
creates a <code id=parsing-xhtml-documents:the-script-element><a href=#the-script-element>script</a></code> element, it
- must be marked as being <a href=#parser-inserted id=parsing-xhtml-documents:parser-inserted>"parser-inserted"</a> and its <a href=#force-async id=parsing-xhtml-documents:force-async>"force-async"</a> flag
+ must be marked as being <a href=#parser-inserted id=parsing-xhtml-documents:parser-inserted>"parser-inserted"</a> and its <a href=#non-blocking id=parsing-xhtml-documents:non-blocking>"non-blocking"</a> flag
must be unset. If the parser was originally created for the <a href=#xml-fragment-parsing-algorithm id=parsing-xhtml-documents:xml-fragment-parsing-algorithm>XML fragment parsing
algorithm</a>, then the element must be marked as <a href=#already-started id=parsing-xhtml-documents:already-started>"already started"</a> also. When the
element's end tag is subsequently parsed, the user agent must <a href=#perform-a-microtask-checkpoint id=parsing-xhtml-documents:perform-a-microtask-checkpoint>perform a microtask checkpoint</a>, and
@@ -79545,8 +79555,8 @@
determinate and indeterminate progress bars. User agents are also expected to vary the
presentation based on the dimensions of the element.</p>
- <p class=example>For example, on some platforms for showing indeterminate progress there is an
- asynchronous progress indicator with square dimensions, which could be used when the element is
+ <p class=example>For example, on some platforms for showing indeterminate progress there is a
+ "spinner" progress indicator with square dimensions, which could be used when the element is
square, and an indeterminate progress bar, which could be used when the element is wide.</p>
<p class=note>Requirements for how to determine if the progress bar is determinate or
@@ -82629,7 +82639,7 @@
<td> <a href=#attribute-text>Text</a>*
<tr><th> <code>async</code>
<td> <code id=attributes-3:attr-script-async><a href=#attr-script-async>script</a></code>
- <td> Execute script asynchronously
+ <td> Execute script when available, without blocking
<td> <a href=#boolean-attribute id=attributes-3:boolean-attribute-2>Boolean attribute</a>
<tr><th> <code>autocomplete</code>
<td> <code id=attributes-3:attr-form-autocomplete><a href=#attr-form-autocomplete>form</a></code>
Modified: source
===================================================================
--- source 2014-09-19 21:41:15 UTC (rev 8798)
+++ source 2014-09-19 23:19:48 UTC (rev 8799)
@@ -1267,7 +1267,7 @@
the script uninterrupted before doing anything else, such as firing further events or continuing
to parse the document.</p>
- <p>On the other hand, parsing of HTML files happens asynchronously and incrementally, meaning that
+ <p>On the other hand, parsing of HTML files happens incrementally, meaning that
the parser can pause at any point to let scripts run. This is generally a good thing, but it does
mean that authors need to be careful to avoid hooking event handlers after the events could have
possibly fired.</p>
@@ -1833,7 +1833,7 @@
<p class="example">For example, there are somewhat complicated rules surrounding the <code
data-x="attr-lang">lang</code> and <code data-x="attr-xml-lang">xml:lang</code> attributes
- intended to keep the two synchronized.</p>
+ intended to keep the two synchronised.</p>
<p class="example">Another example would be the restrictions on the values of <code
data-x="">xmlns</code> attributes in the HTML serialisation, which are intended to ensure that
@@ -1982,7 +1982,14 @@
<div w-nodev>
<p>When an algorithm B says to return to another algorithm A, it implies that A called B. Upon
- returning to A, the implementation must continue from where it left off in calling B.</p>
+ returning to A, the implementation must continue from where it left off in calling B. Some
+ algorithms run <dfn>in parallel</dfn>; this means that the algorithm's subsequent steps are to be
+ run, one after another, at the same time as other logic in the specification (e.g. at the same
+ time as the <span>event loop</span>). This specification does not define the precise mechanism by
+ which this is achieved, be it time-sharing cooperative multitasking, fibers, threads, processes,
+ using different hyperthreads, cores, CPUs, machines, etc. By contrast, an operation that is to run
+ <dfn>immediately</dfn> must interrupt the currently running task, run itself, and then resume the
+ previously running task.</p>
</div>
@@ -6633,13 +6640,13 @@
<p>When a user agent is to <dfn>fetch</dfn><!--FETCH--> a resource or <span>URL</span>, optionally
<strong>from</strong> an origin <i>origin</i>, optionally <strong>using</strong> a
specific <span>referrer source</span> as an <i>override referrer source</i>, and optionally with
- any of a <i>synchronous flag</i>, a <i>manual redirect flag</i>, a <i>force same-origin flag</i>,
+ any of a <i>blocking flag</i>, a <i>manual redirect flag</i>, a <i>force same-origin flag</i>,
and a <i>block cookies flag</i>, the following steps must be run. (When a
<em><span>URL</span></em> is to be fetched, the URL identifies a resource to be obtained.)</p>
- <!-- if invoked with the synchronous flag, make sure to release the storage mutex first -->
+ <!-- if invoked with the blocking flag, make sure to release the storage mutex first -->
- <!-- synchronous flag is only to be used in algorithms that are themselves asynchronous! Only
+ <!-- blocking flag is only to be used in algorithms that are themselves running in parallel! Only
sync-XHR is allowed to make the mistake of screwing that up. :-P -->
<!-- the force same-origin flag is for use in places where we'll be moving to CORS one day; when
@@ -6733,8 +6740,8 @@
</li>
- <li><p>If the algorithm was not invoked with the <i>synchronous flag</i>, perform the remaining
- steps asynchronously.</p></li>
+ <li><p>If the algorithm was not invoked with the <i>blocking flag</i>, perform the remaining
+ steps <span>in parallel</span>.</p></li>
<li><p>If the <code>Document</code> with which any <span data-x="concept-task">tasks</span> <span
data-x="queue a task">queued</span> by this algorithm would be associated doesn't have an
@@ -6862,7 +6869,7 @@
<li>
- <p>If the algorithm was not invoked with the <i>synchronous flag</i>: When the resource is
+ <p>If the algorithm was not invoked with the <i>blocking flag</i>: When the resource is
available, or if there is an error of some description, <span>queue a task</span> that uses the
resource as appropriate. If the resource can be processed incrementally, as, for instance, with
a progressively interlaced JPEG or an HTML file, additional tasks may be queued to process the
@@ -9387,7 +9394,7 @@
data-x="">loading</code>".</p></li>
<li><p><!--SYNCLOAD If <code data-x="dom-XMLDocument-async">async</code> is set to true, then
- run--> Run the remainder of these steps asynchronously, and return true from the
+ run--> Run the remainder of these steps <span>in parallel</span>, and return true from the
method.<!--SYNCLOAD Otherwise, continue running these steps without yet returning.--></p></li>
<li><p>Let <var>result</var> be a <code>Document</code> object.</p></li>
@@ -9396,7 +9403,7 @@
<li><p><span>Fetch</span><!--FETCH--> <var>url</var> from the <span>origin</span> of
<var>document</var>, using the <span>API referrer source</span> specified by the
- <span>entry settings object</span>, with the <i>synchronous flag</i> set and the <i>force same-origin flag</i> set.</p></li>
+ <span>entry settings object</span>, with the <i>blocking flag</i> set and the <i>force same-origin flag</i> set.</p></li>
<li>
@@ -13214,8 +13221,8 @@
<p>A <code>base</code> element that is the first <code>base</code> element with an <code
data-x="attr-base-href">href</code> content attribute in a particular <code>Document</code> has a
- <dfn>frozen base URL</dfn>. The <span>frozen base URL</span> must be <span data-x="set the frozen
- base URL">set</span>, synchronously, whenever any of the following situations occur:</p>
+ <dfn>frozen base URL</dfn>. The <span>frozen base URL</span> must be <span>immediately</span> <span data-x="set the frozen
+ base URL">set</span> whenever any of the following situations occur:</p>
<ul class="brief">
@@ -14977,7 +14984,7 @@
<p>When a style sheet is ready to be applied, its <span>style sheet ready</span> flag must be set.
If the style sheet referenced no other resources (e.g. it was an internal style sheet given by a
<code>style</code> element with no <code data-x="">@import</code> rules), then the style rules must
- be synchronously made available to script; otherwise, the style rules must only be made available
+ be <span>immediately</span> made available to script; otherwise, the style rules must only be made available
to script once the <span>event loop</span> reaches its <i>update the rendering</i> step.</p>
<p>A style sheet in the context of the <code>Document</code> of an <span>HTML parser</span> or
@@ -22090,7 +22097,7 @@
suffix</var> to <var>URL</var>.</p></li>
<li><p>Return to whatever algorithm invoked these steps and continue
- these steps asynchronously.</p></li>
+ these steps <span>in parallel</span>.</p></li>
<li><p><span>Fetch</span><!--FETCH--> <var>URL</var> and handle the resulting resource
<span>as a download</span>.</p></li> <!-- http-origin privacy sensitive -->
@@ -25084,7 +25091,7 @@
location.assign() method -->
<p>When a <code>Document</code> in an <code>iframe</code> is marked as <span>completely
- loaded</span>, the user agent must synchronously run the <span>iframe load event steps</span>.</p>
+ loaded</span>, the user agent must run the <span>iframe load event steps</span> <span>in parallel</span>.</p>
<p class="note">A <code data-x="event-load">load</code> event is also fired at the
<code>iframe</code> element when it is created if no other data is loaded in it.</p>
@@ -26913,7 +26920,7 @@
and those with other physical or cognitive disabilities, a variety of features are available.
Captions can be provided, either embedded in the video stream or as external files using the
<code>track</code> element. Sign-language tracks can be provided, again either embedded in the
- video stream or by synchronizing multiple <code>video</code> elements using the <code
+ video stream or by synchronising multiple <code>video</code> elements using the <code
data-x="attr-media-mediagroup">mediagroup</code> attribute or a <code>MediaController</code>
object. Audio descriptions can be provided, either as a separate track embedded in the video
stream, or a separate audio track in an <code>audio</code> element <span data-x="slaved media
@@ -28047,7 +28054,7 @@
<div w-nodev>
<p id="concept-media-load-algorithm-at-creation">If a <span>media element</span> is created with a
- <code data-x="attr-media-src">src</code> attribute, the user agent must synchronously invoke the
+ <code data-x="attr-media-src">src</code> attribute, the user agent must <span>immediately</span> invoke the
<span>media element</span>'s <span data-x="concept-media-load-algorithm">resource selection
algorithm</span>.</p>
@@ -28346,7 +28353,7 @@
<li><p>If a fetching process is in progress for the <span>media
element</span>, the user agent should stop it.</p></li>
- <!--(no point doing this, since we always call the resource selection algorithm synchronously
+ <!--(no point doing this, since we always call the resource selection algorithm immediately
at the end of this algorithm, and that switches it to NETWORK_NO_SOURCE and sets the flag)
<li><p>Set the <code data-x="dom-media-networkState">networkState</code> attribute to <code
data-x="dom-media-NETWORK_EMPTY">NETWORK_EMPTY</code>.</p></li>
@@ -28415,10 +28422,9 @@
</ol>
<p>The <dfn data-x="concept-media-load-algorithm">resource selection algorithm</dfn> for a
- <span>media element</span> is as follows. This algorithm is always invoked synchronously, but one
+ <span>media element</span> is as follows. This algorithm is always invoked as part of a <span data-x="concept-task">task</span>, but one
of the first steps in the algorithm is to return and continue running the remaining steps
- asynchronously, meaning that it runs in the background with scripts and other <span
- data-x="concept-task">tasks</span> running in parallel. In addition, this algorithm interacts
+ <span>in parallel</span>. In addition, this algorithm interacts
closely with the <span>event loop</span> mechanism; in particular, it has <span data-x="synchronous
section">synchronous sections</span> (which are triggered as part of the <span>event loop</span>
algorithm). Steps in such sections are marked with ⌛.</p>
@@ -28436,7 +28442,7 @@
<li><p>Set the <span>media element</span>'s <span>delaying-the-load-event flag</span> to true
(this <span data-x="delay the load event">delays the load event</span>).</p></li>
- <li><p>Asynchronously <span>await a stable state</span>, allowing the <span
+ <li><p><span>Await a stable state</span>, allowing the <span
data-x="concept-task">task</span> that invoked this algorithm to continue. The <span>synchronous
section</span> consists of all the remaining steps of this algorithm until the algorithm says the
<span>synchronous section</span> has ended. (Steps in <span data-x="synchronous
@@ -28497,7 +28503,7 @@
the empty string.</p></li>
<li><p>End the <span>synchronous section</span>, continuing the remaining steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p>Run the <span data-x="concept-media-load-resource">resource fetch algorithm</span>
with the <span>assigned media provider object</span>. If that algorithm returns without
@@ -28538,7 +28544,7 @@
URL</var>.</p></li>
<li><p>End the <span>synchronous section</span>, continuing the remaining steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p>If <var>absolute URL</var> was obtained successfully, run the <span
data-x="concept-media-load-resource">resource fetch algorithm</span> with <var>absolute
@@ -28627,7 +28633,7 @@
<li><p>⌛ Set the <code data-x="dom-media-currentSrc">currentSrc</code> attribute to <var>absolute URL</var>.</p></li>
<li><p>End the <span>synchronous section</span>, continuing the remaining steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p>Run the <span data-x="concept-media-load-resource">resource fetch algorithm</span> with
<var>absolute URL</var>. If that algorithm returns without aborting <em>this</em> one,
@@ -28636,7 +28642,7 @@
<li><p><i>Failed with elements</i>: <span>Queue a task</span> to <span>fire a simple
event</span> named <code data-x="event-error">error</code> at the <var>candidate</var> element.</p></li>
- <li><p>Asynchronously <span>await a stable state</span>. The <span>synchronous section</span>
+ <li><p><span>Await a stable state</span>. The <span>synchronous section</span>
consists of all the remaining steps of this algorithm until the algorithm says the
<span>synchronous section</span> has ended. (Steps in <span data-x="synchronous
section">synchronous sections</span> are marked with ⌛.)</p></li>
@@ -28670,12 +28676,12 @@
event</span>.</p></li>
<li><p>End the <span>synchronous section</span>, continuing the remaining steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p>Wait until the node after <var>pointer</var> is a node other than the end of
the list. (This step might wait forever.)</p></li>
- <li><p>Asynchronously <span>await a stable state</span>. The <span>synchronous section</span>
+ <li><p><span>Await a stable state</span>. The <span>synchronous section</span>
consists of all the remaining steps of this algorithm until the algorithm says the
<span>synchronous section</span> has ended. (Steps in <span data-x="synchronous
section">synchronous sections</span> are marked with ⌛.)</p></li>
@@ -28853,7 +28859,7 @@
event</span> named <code data-x="event-media-progress">progress</code> at the element.</p>
<p>The <span>networking task source</span> <span data-x="concept-task">tasks</span> to
- process the data as it is being fetched must each immediately <span>queue a task</span> to
+ process the data as it is being fetched must each <span>immediately</span> <span>queue a task</span> to
run the first appropriate steps from the <span>media data processing steps list</span>
below. (A new task is used for this so that the work described below occurs relative to the
<span>media element event task source</span> rather than the <span>networking task
@@ -30584,7 +30590,7 @@
<p>If the time was reached through the usual monotonic increase of the <span>current playback
position</span> during normal playback, and there are <span data-x="text track cue">cues</span>
in <var>other cues</var> that have their <span>text track cue pause-on-exit flag</span>
- set and that either have their <span>text track cue active flag</span> set or are also in <var>missed cues</var>, then immediately <span data-x="dom-media-pause">pause</span> the
+ set and that either have their <span>text track cue active flag</span> set or are also in <var>missed cues</var>, then <span>immediately</span> <span data-x="dom-media-pause">pause</span> the
<span>media element</span>. <!-- "pause" can in theory call load(), but never can it do so as
part of this invocation, since we wouldn't be in this algorithm if the media element was empty.
So, no need to couch all this in a task. --></p>
@@ -30696,7 +30702,7 @@
<ol>
- <li><p>Asynchronously <span>await a stable state</span>, allowing the <span
+ <li><p><span>Await a stable state</span>, allowing the <span
data-x="concept-task">task</span> that removed the <span>media element</span> from the
<code>Document</code> to continue. The <span>synchronous section</span> consists of all the
remaining steps of this algorithm. (Steps in the <span>synchronous section</span> are marked with
@@ -30777,7 +30783,7 @@
<li><p>Set the <code data-x="dom-media-seeking">seeking</code> IDL attribute to true.</p></li>
<li><p>If the seek was in response to a DOM method call or setting of an IDL attribute, then
- continue the script. The remainder of these steps must be run asynchronously. With the exception
+ continue the script. The remainder of these steps must be run <span>in parallel</span>. With the exception
of the steps marked with ⌛, they could be aborted at any time by another instance of this
algorithm being invoked.</p></li>
@@ -31382,7 +31388,7 @@
<p>Each <span>media element</span> can have a <code>MediaController</code>. A
<code>MediaController</code> is an object that coordinates the playback of multiple <span
data-x="media element">media elements</span>, for instance so that a sign-language interpreter
- track can be overlaid on a video track, with the two being kept in sync.</p>
+ track can be overlaid on a video track, with the two being kept synchronised.</p>
<p>By default, a <span>media element</span> has no <code>MediaController</code>. An implicit
<code>MediaController</code> can be assigned using the <code
@@ -31751,7 +31757,7 @@
data-x="event-MediaController-durationchange">durationchange</code> at the
<code>MediaController</code>. If the <code>MediaController</code>'s <span>media controller
duration</span> decreases such that the <span>media controller position</span> is greater than the
- <span>media controller duration</span>, the user agent must immediately <span>seek the media
+ <span>media controller duration</span>, the user agent must <span>immediately</span> <span>seek the media
controller</span> to <span>media controller duration</span>.</p>
<p>The <dfn><code data-x="dom-MediaController-currentTime">currentTime</code></dfn> attribute must
@@ -33055,7 +33061,7 @@
<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
+ <li><p>Run the remainder of these steps <span>in parallel</span>, 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>
@@ -33073,7 +33079,7 @@
data-x="attr-media-crossorigin">crossorigin</code> content attribute. Otherwise, let <var>CORS mode</var> be <span data-x="attr-crossorigin-none">No CORS</span>.</p></li>
<li><p>End the <span>synchronous section</span>, continuing the remaining steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li>
@@ -33097,10 +33103,10 @@
that parser's output. <ref spec=WEBVTT></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 data-x="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="note">The appropriate parser will incrementally update the <span>text track list of
+ cues</span> during these <span>networking task
+ source</span> <span data-x="concept-task">tasks</span>, as each such task is
+ run with whatever data has been received from the network).</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
@@ -33173,7 +33179,7 @@
</ol>
<p>Whenever a <code>track</code> element has its <code data-x="attr-track-src">src</code> attribute
- set, changed, or removed, the user agent must synchronously empty the element's <span>text
+ set, changed, or removed, the user agent must <span>immediately</span> 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>
@@ -40922,7 +40928,7 @@
<dd>
- <p>Triggers a user-agent-specific asynchronous user interface to help the user fill in any
+ <p>Triggers a user-agent-specific user interface to help the user fill in any
fields that have an <span>autofill field name</span> other than "<code
data-x="attr-fe-autocomplete-on">on</code>" or "<code
data-x="attr-fe-autocomplete-off">off</code>".</p>
@@ -45844,7 +45850,7 @@
<li><p>If the algorithm is not <span>allowed to show a popup</span>, then abort these steps
without doing anything else.</p></li>
- <li><p>Return, but continue running these steps asynchronously.</p></li>
+ <li><p>Return, but continue running these steps <span>in parallel</span>.</p></li>
<li><p>Optionally, wait until any prior execution of this algorithm has terminated.</p>
@@ -53560,7 +53566,7 @@
</li>
- <li><p>Return, but continue running these steps asynchronously.</p></li>
+ <li><p>Return, but continue running these steps <span>in parallel</span>.</p></li>
<li><p>Provide an interface for the user to efficiently fill in some or all of the fields listed
in <var>pending autofills</var>. Await the user's input. The user agent may include additional
@@ -58104,7 +58110,7 @@
<p>There are three possible modes that can be selected using these attributes. If the <code
data-x="attr-script-async">async</code> attribute is present, then the script will be executed
- asynchronously, as soon as it is available. If the <code data-x="attr-script-async">async</code>
+ as soon as it is available, but without blocking further parsing of the page. If the <code data-x="attr-script-async">async</code>
attribute is not present but the <code data-x="attr-script-defer">defer</code> attribute is
present, then the script is executed when the page has finished parsing. If neither attribute is
present, then the script is fetched and executed immediately, before the user agent continues
@@ -58124,7 +58130,7 @@
data-x="attr-script-async">async</code> attribute is specified, to cause legacy Web browsers that
only support <code data-x="attr-script-defer">defer</code> (and not <code
data-x="attr-script-async">async</code>) to fall back to the <code
- data-x="attr-script-defer">defer</code> behavior instead of the synchronous blocking behavior that
+ data-x="attr-script-defer">defer</code> behavior instead of the blocking behavior that
is the default.</p>
<p>The <dfn><code data-x="attr-script-crossorigin">crossorigin</code></dfn> attribute is a
@@ -58153,12 +58159,12 @@
parser</span> and the <span>XML parser</span> on <code>script</code> elements they insert and
affects the processing of those elements.</p>
- <p>The third is a flag indicating whether the element will <dfn>"force-async"</dfn>. Initially,
+ <p>The third is a flag indicating whether the element will <dfn>"non-blocking"</dfn>. Initially,
<code>script</code> elements must have this flag set. It is unset by the <span>HTML parser</span>
and the <span>XML parser</span> on <code>script</code> elements they insert. In addition, whenever
- a <code>script</code> element whose <span>"force-async"</span> flag is set has a <code
+ a <code>script</code> element whose <span>"non-blocking"</span> flag is set has a <code
data-x="attr-script-async">async</code> content attribute added, the element's
- <span>"force-async"</span> flag must be unset.</p> <!-- there's no need to unset it when the
+ <span>"non-blocking"</span> flag must be unset.</p> <!-- there's no need to unset it when the
attribute is removed since you can't have the attribute and the flag set at once. -->
<p>The fourth is a flag indicating whether or not the script block is <dfn>"ready to be
@@ -58175,7 +58181,7 @@
<code>script</code> element's <span>node document</span>.</p>
<p>When a <code>script</code> element that is not marked as being <span>"parser-inserted"</span>
- experiences one of the events listed in the following list, the user agent must synchronously
+ experiences one of the events listed in the following list, the user agent must <span>immediately</span>
<span data-x="prepare a script">prepare</span> the <code>script</code> element:</p>
<ul>
@@ -58226,11 +58232,11 @@
<p>If <var>was-parser-inserted</var> is true and the element does not have an <code
data-x="attr-script-async">async</code> attribute, then set the element's
- <span>"force-async"</span> flag to true.</p>
+ <span>"non-blocking"</span> flag to true.</p>
<p class="note">This is done so that if a parser-inserted <code>script</code> element fails to
run when the parser tries to run it, but it is later executed after a script dynamically updates
- it, it will execute asynchronously even if the <code data-x="attr-script-async">async</code>
+ it, it will execute in a non-blocking fashion even if the <code data-x="attr-script-async">async</code>
attribute isn't set.</p>
</li>
@@ -58301,7 +58307,7 @@
<li>
<p>If <var>was-parser-inserted</var> is true, then flag the element as
- <span>"parser-inserted"</span> again, and set the element's <span>"force-async"</span> flag to
+ <span>"parser-inserted"</span> again, and set the element's <span>"non-blocking"</span> flag to
false.</p>
</li>
@@ -58438,7 +58444,7 @@
</li>
- <!-- at this point if the element is "parser-inserted" then we know it is not "force-async". -->
+ <!-- at this point if the element is "parser-inserted" then we know it is not "non-blocking". -->
<li>
@@ -58507,7 +58513,7 @@
<dt id="script-processing-src-sync">If the element has a <code
data-x="attr-script-src">src</code> attribute, does not have an <code
data-x="attr-script-async">async</code> attribute, and does not have the
- <span>"force-async"</span> flag set</dt>
+ <span>"non-blocking"</span> flag set</dt>
<dd>
@@ -58560,7 +58566,7 @@
<dt id="script-processing-inline">Otherwise</dt>
- <dd>The user agent must immediately <span>execute the script block</span>, even if other
+ <dd>The user agent must <span>immediately</span> <span>execute the script block</span>, even if other
scripts are already executing.</dd>
</dl>
@@ -58815,12 +58821,12 @@
<span>reflect</span> the <code data-x="attr-script-crossorigin">crossorigin</code> content attribute.</p>
<p>The <dfn><code data-x="dom-script-async">async</code></dfn> IDL attribute controls whether the
- element will execute asynchronously or not. If the element's <span>"force-async"</span> flag is
+ element will execute asynchronously or not. If the element's <span>"non-blocking"</span> flag is
set, then, on getting, the <code data-x="dom-script-async">async</code> IDL attribute must return
- true, and on setting, the <span>"force-async"</span> flag must first be unset, and then the
+ true, and on setting, the <span>"non-blocking"</span> flag must first be unset, and then the
content attribute must be removed if the IDL attribute's new value is false, and must be set to
the empty string if the IDL attribute's new value is true. If the element's
- <span>"force-async"</span> flag is <em>not</em> set, the IDL attribute must <span>reflect</span>
+ <span>"non-blocking"</span> flag is <em>not</em> set, the IDL attribute must <span>reflect</span>
the <code data-x="attr-script-async">async</code> content attribute.</p>
</div>
@@ -58852,7 +58858,7 @@
<!--TOPIC:HTML-->
<p class="note">When inserted using the <code data-x="dom-document-write">document.write()</code>
- method, <code>script</code> elements execute (typically synchronously), but when inserted using
+ method, <code>script</code> elements execute (typically blocking further script execution or HTML parsing), but when inserted using
<code data-x="dom-innerHTML">innerHTML</code> and <code data-x="dom-outerHTML">outerHTML</code>
attributes, they do not execute at all.</p>
@@ -59187,7 +59193,7 @@
direct-to-DOM transformation, <code>script</code> elements created by the XSLT processor need to
be marked <span>"parser-inserted"</span> and run in document order (modulo scripts marked <code
data-x="attr-script-defer">defer</code> or <code data-x="attr-script-async">async</code>),
- asynchronously while the transformation is occurring.</p></li>
+ <span>immediately</span>, as the transformation is occurring.</p></li>
<li><p>The <code
data-x="dom-XSLTProcessor-transformToDocument">XSLTProcessor.transformToDocument()</code> method
@@ -60114,7 +60120,7 @@
</li>
- <li><p>Return, but continue running these steps asynchronously.</p></li>
+ <li><p>Return, but continue running these steps <span>in parallel</span>.</p></li>
<li><p>If <var>callback</var> is null, abort these steps.</p></li>
@@ -60803,7 +60809,7 @@
<!--(right now we're requiring commit())
<p>When a user agent is to <dfn>start autocommitting the scratch bitmap</dfn> for a rendering
- context, it must asynchronously start running the following algorithm. This algorithm interacts
+ context, it must start running the following algorithm <span>in parallel</span>. 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 ⌛.</p>
@@ -60817,7 +60823,7 @@
<li><p>⌛ <span>Commit the scratch bitmap</span> for the rendering context.</p></li>
<li><p>End the <span>synchronous section</span>, continuing the remaining steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p>Return to the step labeled <i>top</i>.</p></li>
@@ -68429,7 +68435,7 @@
<dl>
<dt>product-code</dt>
- <dd>An integer that names the product in the manufacturer's catalog.</dd>
+ <dd>An integer that names the product in the manufacturer's catalogue.</dd>
<dt>name</dt>
<dd>A brief description of the product.</dd>
<dt>scale</dt>
@@ -72816,7 +72822,7 @@
</ol>
- <p>User agents must synchronously run the <span>focusing steps</span> for a <span>focusable area</span>,
+ <p>User agents must <span>immediately</span> run the <span>focusing steps</span> for a <span>focusable area</span>,
<code>dialog</code>, or <span>browsing context</span> <var>candidate</var> whenever the
user attempts to move the focus to <var>candidate</var>.</p>
@@ -72871,7 +72877,7 @@
<p>When the <span>currently focused area of a top-level browsing context</span> is somehow
unfocused without another element being explicitly focused in its stead, the user agent must
- synchronously run the <span>unfocusing steps</span> for that object.</p>
+ <span>immediately</span> run the <span>unfocusing steps</span> for that object.</p>
<p class="note">The <span>unfocusing steps</span> do not always result in the focus changing, even
when applied to the <span>currently focused area of a top-level browsing context</span>. For
@@ -73855,7 +73861,7 @@
disabled.</p>
<p>When the <code data-x="dom-document-designMode">designMode</code> changes from being disabled to
- being enabled, the user agent must synchronously reset the document's <span>active range</span>'s
+ being enabled, the user agent must <span>immediately</span> reset the document's <span>active range</span>'s
start and end boundary points to be at the start of the <code>Document</code> and then run the
<span>focusing steps</span> for the root element of the <code>Document</code>, if any.</p>
@@ -79553,9 +79559,9 @@
<p>Each <span>top-level browsing context</span> has a <dfn>session history traversal queue</dfn>,
initially empty, to which <span data-x="concept-task">tasks</span> can be added.</p>
- <p>Each <span>top-level browsing context</span>, when created, must asynchronously begin running
+ <p>Each <span>top-level browsing context</span>, when created, must begin running
the following algorithm, known as the <dfn>session history event loop</dfn> for that
- <span>top-level browsing context</span>:</p>
+ <span>top-level browsing context</span>, <span>in parallel</span>:</p>
<ol>
@@ -80293,9 +80299,9 @@
this algorithm can in certain cases jump back to the step labeled <a
href="#navigate-fragid-step"><i>fragment identifiers</i></a>. Since, between those two steps,
this algorithm goes from operating synchronously in the context of the calling <span
- data-x="concept-task">task</span> to operating asynchronously independent of the <span>event
- loop</span>, some of the intervening steps need to be able to handle both being synchronous and
- being asynchronous. The <var>gone async</var> flag is thus used to make these steps
+ data-x="concept-task">task</span> to operating <span>in parallel</span> independent of the <span>event
+ loop</span>, some of the intervening steps need to be able to handle both being run as part of a <span data-x="concept-task">task</span> and
+ running <span>in parallel</span>. The <var>gone async</var> flag is thus used to make these steps
aware of which mode they are operating in.</p>
</li>
@@ -81262,7 +81268,7 @@
to the address to which the user agent was <span data-x="navigate">navigating</span>. The title
must be left unset.</p></li>
- <li><p><span>Traverse the history</span> to the new entry, with the <i>asynchronous events</i> flag
+ <li><p><span>Traverse the history</span> to the new entry, with the <i>non-blocking events</i> flag
set. This will <span>scroll to the fragment
identifier</span> given in what is now <span>the document's address</span>.</p></li>
@@ -81360,7 +81366,7 @@
<p>When a user agent is required to <dfn>traverse the history</dfn> to a <var>specified
entry</var>, optionally with <span>replacement enabled</span>, and optionally with the
- <i>asynchronous events</i> flag set, the user agent must act as follows.</p>
+ <i>non-blocking events</i> flag set, the user agent must act as follows.</p>
<p class="note">This algorithm is not just invoked when <span data-x="traverse the history by a
delta">explicitly going back or forwards in the session history</span> — it is also invoked
@@ -81550,9 +81556,9 @@
<li>
- <p>If the <i>asynchronous events</i> flag is not set, then run the following steps
- synchronously. Otherwise, the <i>asynchronous events</i> flag is set; <span>queue a task</span>
- to run the following substeps.</p>
+ <p>If the <i>non-blocking events</i> flag is not set, then run the following steps
+ <span>immediately</span>. Otherwise, the <i>non-blocking events</i> flag is set; <span>queue a task</span>
+ to run the following substeps instead.</p>
<ol>
@@ -83043,7 +83049,7 @@
identify a <span data-x="concept-appcache-manifest">manifest</span>, or for an <span>application
cache group</span>, potentially given a particular <span>cache host</span>, and potentially given
a <span data-x="concept-appcache-master">master</span> resource, the user agent must run the steps
- below. These steps are always run asynchronously, in parallel with the <span>event loop</span>
+ below. These steps are always run <span>in parallel</span> with the <span>event loop</span>
<span data-x="concept-task">tasks</span>.</p>
<p>Some of these steps have requirements that only apply if the user agent <dfn>shows caching
@@ -83157,7 +83163,7 @@
</ol>
- <p class="note">The remainder of the steps run asynchronously.</p>
+ <p class="note">The remainder of the steps run <span>in parallel</span>.</p>
<p>If <var>cache group</var> already has an <span>application cache</span> in it, then
this is an <dfn data-x="concept-appcache-upgrade">upgrade attempt</dfn>. Otherwise, this is a
@@ -83175,7 +83181,7 @@
<li>
- <p><i>Fetching the manifest</i>: <span>Fetch</span><!--FETCH--> the resource from <var>manifest URL</var> with the <i>synchronous flag</i> set, and let <var>manifest</var> be that resource. HTTP caching semantics should be honored for this
+ <p><i>Fetching the manifest</i>: <span>Fetch</span><!--FETCH--> the resource from <var>manifest URL</var> with the <i>blocking flag</i> set, and let <var>manifest</var> be that resource. HTTP caching semantics should be honored for this
request. The <i>override referrer source</i> must be null.</p> <!-- http-origin privacy sensitive, though it doesn't matter, since this can never
be cross-origin -->
@@ -83405,7 +83411,7 @@
<li>
<p><span>Fetch</span><!--FETCH--> the resource, from the <span>origin</span> of the
- <span>URL</span> <var>manifest URL</var>, with the <i>synchronous flag</i> set and
+ <span>URL</span> <var>manifest URL</var>, with the <i>blocking flag</i> set and
the <i>manual redirect flag</i> set. If this is an <span
data-x="concept-appcache-upgrade">upgrade attempt</span>, then use the <span
data-x="concept-appcache-newer">newest</span> <span>application cache</span> in <var>cache group</var> as an HTTP cache, and honor HTTP caching semantics (such as
@@ -83603,7 +83609,7 @@
<li>
<p><span>Fetch</span><!--FETCH--> the resource from <var>manifest URL</var> again, with
- the <i>synchronous flag</i> set, and let <var>second manifest</var> be that resource.
+ the <i>blocking flag</i> set, and let <var>second manifest</var> be that resource.
HTTP caching semantics should again be honored for this request. The <i>override referrer source</i> must be null.</p> <!-- http-origin privacy
sensitive, though it doesn't matter, since this can never be cross-origin -->
@@ -83974,7 +83980,7 @@
<p class="note">How quotas are presented to the user is not defined by this specification. User
agents are encouraged to provide features such as allowing a user to indicate that certain sites
- are trusted to use more than the default quota, e.g. by asynchronously presenting a user interface
+ are trusted to use more than the default quota, e.g. by presenting a non-modal user interface
while a cache is being updated, or by having an explicit whitelist in the user agent's
configuration interface.</p>
@@ -85090,11 +85096,11 @@
<dd>
- <p>Asynchronously dispatching an <code>Event</code> object at a particular
+ <p>Dispatching an <code>Event</code> object at a particular
<code>EventTarget</code> object is often done by a dedicated task.</p>
<p class="note">Not all events are dispatched using the <span>task queue</span>, many are
- dispatched synchronously during other tasks.</p>
+ dispatched during other tasks.</p>
</dd>
@@ -85107,13 +85113,13 @@
<dt>Callbacks</dt>
- <dd><p>Calling a callback asynchronously is often done by a dedicated task.</p></dd>
+ <dd><p>Calling a callback is often done by a dedicated task.</p></dd>
<dt>Using a resource</dt>
<dd><p>When an algorithm <span data-x="fetch">fetches</span> a resource, if the fetching occurs
- asynchronously then the processing of the resource once some or all of the resource is available
+ in a non-blocking fashion then the processing of the resource once some or all of the resource is available
is performed by a task.</p></dd>
@@ -85343,11 +85349,20 @@
<hr>
- <p>When an asynchronously-running algorithm is to <dfn>await a stable state</dfn>, the user agent
- must <span>queue a microtask</span> that first runs the algorithm's <dfn>synchronous
- section</dfn>, and then resumes running the asynchronous algorithm (if appropriate), as described
- in the algorithm's steps.</p>
+ <p>When an algorithm running <span>in parallel</span> is to <dfn>await a stable state</dfn>, the
+ user agent must <span>queue a microtask</span> that runs the following steps, and must then stop
+ executing (execution of the algorithm resumes when the microtask is run, as described in the
+ following steps):</p>
+ <ol>
+
+ <li><p>Run the algorithm's <dfn>synchronous section</dfn>.</p></li>
+
+ <li><p>Resumes execution of the algorithm <span>in parallel</span>, if appropriate, as described
+ in the algorithm's steps.</p></li>
+
+ </ol>
+
<p class="note">Steps in <span data-x="synchronous section">synchronous sections</span> are marked
with ⌛.</p>
@@ -85385,7 +85400,7 @@
<li>
<p>Stop <var>task</var>, allowing whatever algorithm that invoked it to resume, but
- continue these steps asynchronously.</p>
+ continue these steps <span>in parallel</span>.</p>
<p class="note">This causes one of the following algorithms to continue: the <span>event
loop</span>'s main set of steps, the <span>perform a microtask checkpoint</span> algorithm, or
@@ -85459,7 +85474,7 @@
<dd>
<p>This <span>task source</span> is used for features that react to DOM manipulations, such as
- things that happen asynchronously when an element is <span data-x="insert an element into a
+ things that happen in a non-blocking fashion when an element is <span data-x="insert an element into a
document">inserted into the document</span>.</p>
</dd>
@@ -85471,7 +85486,7 @@
<p>This <span>task source</span> is used for features that react to user interaction, for
example keyboard or mouse input.</p>
- <p>Asynchronous events sent in response to user input (e.g. <code
+ <p>Events sent in response to user input (e.g. <code
data-x="event-click">click</code> events) must be fired using <span
data-x="concept-task">tasks</span> <span data-x="queue a task">queued</span> with the <span>user
interaction task source</span>. <ref spec=DOMEVENTS></p> <!-- user
@@ -86617,7 +86632,7 @@
<p class="note">This basically causes <code data-x="dom-document-open">document.open()</code> to
be ignored when it's called in an inline script found during parsing, while still letting it
- have an effect when called asynchronously.</p>
+ have an effect when called from a non-parser task such as a timer callback or event handler.</p>
</li>
@@ -87206,7 +87221,7 @@
level</var>.</p></li>
<li><p>Return <var>handle</var>, and then continue running this algorithm
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li>
@@ -87465,7 +87480,7 @@
<p>When the <dfn><code data-x="dom-print">print()</code></dfn> method is invoked, if the
<code>Document</code> is <span>ready for post-load tasks</span>, then the user agent must
- synchronously run the <span>printing steps</span>. Otherwise, the user agent must only set the
+ run the <span>printing steps</span> <span>in parallel</span>. Otherwise, the user agent must only set the
<dfn>print when loaded</dfn> flag on the <code>Document</code>.</p>
<!--TOPIC:HTML-->
@@ -89429,7 +89444,7 @@
animation.</p></li>
<li><p>Return a new <code>Promise</code>, but continue running these steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p><span data-x="concept-resolver-fulfill">Fulfill</span> the <code>Promise</code>'s
associated <span data-x="concept-resolver">resolver</span>, with the new
@@ -89474,7 +89489,7 @@
correction has been applied), <span>cropped to the source rectangle</span>.</p>
<li><p>Return a new <code>Promise</code>, but continue running these steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p><span data-x="concept-resolver-fulfill">Fulfill</span> the <code>Promise</code>'s
associated <span data-x="concept-resolver">resolver</span>, with the new
@@ -89509,7 +89524,7 @@
<code>canvas</code> element's bitmap data, <span>cropped to the source
rectangle</span>.</p></li>
- <li><p>Return a new <code>Promise</code>, but continue running these steps asynchronously.</p></li>
+ <li><p>Return a new <code>Promise</code>, but continue running these steps <span>in parallel</span>.</p></li>
<li><p><span data-x="concept-resolver-fulfill">Fulfill</span> the <code>Promise</code>'s
associated <span data-x="concept-resolver">resolver</span>, with the new
@@ -89533,7 +89548,7 @@
data-x="dom-Blob-close">close()</code> method, then throw an <code>InvalidStateError</code>
exception and abort these steps.</p></li>
- <li><p>Return a new <code>Promise</code>, but continue running these steps asynchronously.</p></li>
+ <li><p>Return a new <code>Promise</code>, but continue running these steps <span>in parallel</span>.</p></li>
<li><p>Read the <code>Blob</code> object's data. If an <span data-x="file-error-read">error
occurs during reading of the object</span>, then <span
@@ -89588,7 +89603,7 @@
<li><p>Let the <code>ImageBitmap</code> object's bitmap data be the image data given by the
<code>ImageData</code> object, <span>cropped to the source rectangle</span>.</p></li>
- <li><p>Return a new <code>Promise</code>, but continue running these steps asynchronously.</p></li>
+ <li><p>Return a new <code>Promise</code>, but continue running these steps <span>in parallel</span>.</p></li>
<li><p><span data-x="concept-resolver-fulfill">Fulfill</span> the <code>Promise</code>'s
associated <span data-x="concept-resolver">resolver</span>, with the new
@@ -89624,7 +89639,7 @@
the source rectangle</span>.</p></li>
<li><p>Return a new <code>Promise</code>, but continue running these steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p><span data-x="concept-resolver-fulfill">Fulfill</span> the <code>Promise</code>'s
associated <span data-x="concept-resolver">resolver</span>, with the new
@@ -89650,7 +89665,7 @@
rectangle</span>.</p></li>
<li><p>Return a new <code>Promise</code>, but continue running these steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p><span data-x="concept-resolver-fulfill">Fulfill</span> the <code>Promise</code>'s
associated <span data-x="concept-resolver">resolver</span>, with the new
@@ -89979,7 +89994,7 @@
data-x="dom-EventSource-withCredentials">withCredentials</code> attribute to true.</p></li>
<li><p>Return the new <code>EventSource</code> object, but continue these steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><!-- if you change this, don't forget to update the reconnecting fetch lower down as well! -->
@@ -90112,7 +90127,7 @@
<p>The <span data-x="concept-task">task</span> that the <span>networking task source</span> places
on the <span>task queue</span> once the <span data-x="fetch">fetching algorithm</span> for such a
resource (with the correct <span>MIME type</span>) has completed must cause the user agent to
- asynchronously <span>reestablish the connection</span>. This applies whether the connection is
+ <span>reestablish the connection</span> <span>in parallel</span>. This applies whether the connection is
closed gracefully or unexpectedly (but does not apply when the <span>fetch</span> algorithm is
canceled by the user agent, e.g. in response to <code data-x="dom-window-stop">window.stop()</code>,
since in those cases the final <span data-x="concept-task">task</span> is actually discarded).
@@ -90134,7 +90149,7 @@
<p id="event-source-network-errors-reconnect">Network errors that prevents the connection from
being established in the first place (e.g. DNS errors), must cause the user agent to
- asynchronously <span>reestablish the connection</span>.</p>
+ <span>reestablish the connection</span> <span>in parallel</span>.</p>
<p id="event-source-fail-reasons">Any other HTTP response code not listed here, as well as the
cancelation of the <span>fetch</span> algorithm by the user agent (e.g. in response to <code
@@ -90162,9 +90177,9 @@
object.</p>
<p>When a user agent is to <dfn>reestablish the connection</dfn>, the user agent must run the
- following steps. These steps are run asynchronously, not as part of a <span
+ following steps. These steps are run <span>in parallel</span>, not as part of a <span
data-x="concept-task">task</span>. (The tasks that it queues, of course, are run like normal tasks
- and not asynchronously.)</p>
+ and not themselves <span>in parallel</span>.)</p>
<ol>
@@ -90440,7 +90455,7 @@
data-x="concept-event-dispatch">dispatches</span> the newly created event at the
<code>EventSource</code> object.</p></li> <!-- so calling close() drops the messages immediately.
The connection dying doesn't interfere with already-sent messages since it sets us to CLOSED via
- a task, not synchronously -->
+ a task, not immediately -->
</ol>
@@ -90898,7 +90913,7 @@
object</span>, <span>converted to ASCII lowercase</span>.</p></li>
<li><p>Return a new <code>WebSocket</code> object, but continue these steps
- asynchronously.</p></li>
+ <span>in parallel</span>.</p></li>
<li><p>Let the new object's <dfn>client-specified protocols</dfn> be the values (if any) given in
<var>protocols</var>.</p></li>
@@ -91117,7 +91132,7 @@
using <code data-x="dom-WebSocket-send">send()</code> but that, as of the last time the
<span>event loop</span> reached step 1, had not yet been transmitted to the network. (This thus
includes any text sent during the execution of the current task, regardless of whether the user
- agent is able to transmit text asynchronously with script execution.) This does not include
+ agent is able to transmit text in the background <span>in parallel</span> with script execution.) This does not include
framing overhead incurred by the protocol, or buffering done by the operating system or network
hardware. If the connection is closed, this attribute's value will only increase with each call to
the <code data-x="dom-WebSocket-send">send()</code> method (the number does not reset to zero once
@@ -91883,7 +91898,7 @@
only</span> array.</p></li>
<li><p>Return from the <code data-x="dom-window-postMessage">postMessage()</code> method, but
- asynchronously continue running these steps.</p></li>
+ <span>in parallel</span> continue running these steps.</p></li>
<li>
@@ -91942,7 +91957,7 @@
<p>Communication channels in this mechanism are implemented as two-ways pipes, with a port at each
end. Messages sent in one port are delivered at the other port, and vice-versa. Messages are
- asynchronous, and delivered as DOM events.</p>
+ delivered as DOM events, without interrupting or blocking running <span data-x="concept-task">tasks</span>.</p>
<p>To create a connection (two "entangled" ports), the <code data-x="">MessageChannel()</code>
constructor is called:</p>
@@ -92407,7 +92422,7 @@
<p>Let <var>doomed</var> be false. It is set to true if a condition is detected that
will make this message cause the port to be unusable; specifically, if the message contains <var>target port</var> as one of the objects being <span data-x="transfer a Transferable
- object">transferred</span>. (This condition cannot necessarily be detected synchronously.)</p>
+ object">transferred</span>. (This condition cannot necessarily be detected when the method is called.)</p>
</li>
@@ -92527,7 +92542,7 @@
be listened for anyway. we don't do this before the steps above because otherwise you can tell
the difference (in whether the ports have become useless, or in when the structured clone
algorithm runs scripts). We don't throw an exception for 'doomed' being true, because this can't
- necessarily be detected synchronously -->
+ necessarily be detected right now every time -->
<li><p>Create an event that uses the <code>MessageEvent</code> interface, with the name <code
data-x="event-message">message</code>, which does not bubble, is not cancelable, and has no
@@ -93648,7 +93663,7 @@
data-x="concept-task">tasks</span> that would be added to them (tasks already on the queue are
unaffected except where otherwise specified). Effectively, once the <span
data-x="dom-WorkerGlobalScope-closing">closing</span> flag is true, timers stop firing,
- notifications for all pending asynchronous operations are dropped, etc.</p>
+ notifications for all pending background operations are dropped, etc.</p>
@@ -93726,7 +93741,7 @@
<li id="worker-processing-model-top">
<p>Create a separate parallel execution environment (i.e. a separate thread or process or
- equivalent construct), and run the rest of these steps asynchronously in that context.</p>
+ equivalent construct), and run the rest of these steps in that context.</p>
<p>For the purposes of timing APIs, this is the <dfn>official moment of creation</dfn> of the
worker.</p>
@@ -93750,7 +93765,7 @@
<p>Attempt to <span>fetch</span><!--FETCH--> the resource identified by <var>url</var>, from the
<span>origin</span> specified by <var>settings object</var>, using the <span>responsible
document</span> specified by <var>settings object</var> as the <span>referrer source</span> (not
- the specified <span>API referrer source</span>!), and with the <i>synchronous flag</i> set and
+ the specified <span>API referrer source</span>!), and with the <i>blocking flag</i> set and
the <i>force same-origin flag</i> set.</p> <!-- not http-origin privacy sensitive (looking
forward to CORS) -->
@@ -94203,7 +94218,7 @@
<li><p><span>Entangle</span> <var>outside port</var> and <var>inside port</var>.</p></li>
- <li><p>Return <var>worker</var>, and run the following steps asynchronously.</p></li>
+ <li><p>Return <var>worker</var>, and run the following steps <span>in parallel</span>.</p></li>
<!-- (this is done by the "run a worker" algorithm)
<li><p>Enable <var>inside port</var>'s <span>port message queue</span>.</p></li>
@@ -94421,7 +94436,7 @@
</li>
- <li><p>Return <var>worker</var> and perform the remaining steps asynchronously.</p></li>
+ <li><p>Return <var>worker</var> and perform the remaining steps <span>in parallel</span>.</p></li>
<li><p>Create a <span data-x="concept-events-trusted">trusted</span> event that uses the
<code>MessageEvent</code> interface, with the name <code
@@ -94496,7 +94511,7 @@
<li>
<p>Attempt to <span>fetch</span><!--FETCH--> each resource identified by the resulting <span
- data-x="absolute URL">absolute URLs</span>, from the <span>origin</span> specified by <var>settings object</var>, using the <span>API referrer source</span> specified by <var>settings object</var>, and with the <i>synchronous flag</i> set.</p> <!-- not
+ data-x="absolute URL">absolute URLs</span>, from the <span>origin</span> specified by <var>settings object</var>, using the <span>API referrer source</span> specified by <var>settings object</var>, and with the <i>blocking flag</i> set.</p> <!-- not
http-origin privacy sensitive -->
</li>
@@ -101246,7 +101261,7 @@
<li>
<p>Mark the element as being <span>"parser-inserted"</span> and unset the element's
- <span>"force-async"</span> flag.</p>
+ <span>"non-blocking"</span> flag.</p>
<p class="note">This ensures that, if the script is external, any <code
data-x="dom-document-write">document.write()</code> calls in the script will execute in-line,
@@ -104789,7 +104804,7 @@
<!-- this happens as part of one of the tasks that runs the parser -->
<li><p>Set the <span>current document readiness</span> to "<code data-x="">interactive</code>"
- <!-- this also synchronously fires an event --> and the <span>insertion point</span> to
+ <!-- this also immediately fires an event --> and the <span>insertion point</span> to
undefined.</p></li>
<li><p>Pop <em>all</em> the nodes off the <span>stack of open elements</span>.</p></li>
@@ -104839,7 +104854,7 @@
<ol>
<li><p>Set the <span>current document readiness</span> to "<code data-x="">complete</code>"<!--
- this also fires an event synchronously during the task -->.</p></li>
+ this also fires an event immediately during the task -->.</p></li>
<li><p><i>Load event</i>: If the <code>Document</code> is in a <span>browsing context</span>,
<span>fire a simple event</span> named <code data-x="event-load">load</code> at the
@@ -104903,12 +104918,12 @@
content that would have been added to it.</p></li>
<li><p>Set the <span>current document readiness</span> to "<code data-x="">interactive</code>"<!--
- this synchronously fires an event -->.</p></li>
+ this immediately 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 data-x="">complete</code>"<!--
- this also synchronously fires an event -->.</p></li>
+ this also immediately fires an event -->.</p></li>
<!-- anything else? this is things that happen when you call document.open() on a document that's
still being parsed, or when you navigate a document that's still parsing, or navigate the parent
@@ -105861,7 +105876,7 @@
<p id="scriptTagXML">When an <span>XML parser</span> with <span>XML scripting support enabled</span>
creates a <code>script</code> element, it
- must be marked as being <span>"parser-inserted"</span> and its <span>"force-async"</span> flag
+ must be marked as being <span>"parser-inserted"</span> and its <span>"non-blocking"</span> flag
must be unset. If the parser was originally created for the <span>XML fragment parsing
algorithm</span>, then the element must be marked as <span>"already started"</span> also. When the
element's end tag is subsequently parsed, the user agent must <span>perform a microtask checkpoint</span>, and
@@ -108145,8 +108160,8 @@
determinate and indeterminate progress bars. User agents are also expected to vary the
presentation based on the dimensions of the element.</p>
- <p class="example">For example, on some platforms for showing indeterminate progress there is an
- asynchronous progress indicator with square dimensions, which could be used when the element is
+ <p class="example">For example, on some platforms for showing indeterminate progress there is a
+ "spinner" progress indicator with square dimensions, which could be used when the element is
square, and an indeterminate progress bar, which could be used when the element is wide.</p>
<p class="note">Requirements for how to determine if the progress bar is determinate or
@@ -113251,7 +113266,7 @@
<tr>
<th> <code data-x="">async</code>
<td> <code data-x="attr-script-async">script</code>
- <td> Execute script asynchronously
+ <td> Execute script when available, without blocking
<td> <span>Boolean attribute</span>
<tr>
<th> <code data-x="">autocomplete</code>
More information about the Commit-Watchers
mailing list