Skip to content

Commit

Permalink
Update the “Link type "serviceworker"” section
Browse files Browse the repository at this point in the history
* Add new section “Declaring a "serviceworker" Link header”
* Drop normative requirement to fire an error and abort if
  link[workertype] value is not a valid worker type.
* Drop the partial interface IDL for the HTMLLinkElement interface (the
  definitions for the IDL attributes have already been merged directly
  into the HTMLLinkElement interface IDL definition in the HTML spec).

Fixes #1073
  • Loading branch information
sideshowbarker committed Apr 9, 2017
1 parent b67c445 commit 6ced673
Show file tree
Hide file tree
Showing 2 changed files with 127 additions and 155 deletions.
56 changes: 32 additions & 24 deletions docs/index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ spec: html; urlPrefix: https://html.spec.whatwg.org/multipage/
text: ancestor origins list; for: Location; url: concept-location-ancestor-origins-list
urlPrefix: syntax.html
text: delay the load event; for: document; url: delay-the-load-event
urlPrefix: semantics.html
text: serviceworker; for: html; url: link-type-serviceworker

spec: fetch; urlPrefix: https://fetch.spec.whatwg.org/
type: dfn
Expand All @@ -85,6 +87,7 @@ spec: rfc5988; urlPrefix: https://tools.ietf.org/html/rfc5988
type: dfn
text: context IRI; url: section-5.2
text: target attribute; url: section-5.4
text: target attributes; url: section-5.4
text: target IRI; url: section-5.1

spec: rfc7230; urlPrefix: https://tools.ietf.org/html/rfc7230
Expand Down Expand Up @@ -1744,12 +1747,36 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
</section>

<section>
<h2 id="link-type-serviceworker">Link type "<code>serviceworker</code>"</h2>
<h2 id="link-type-serviceworker">Link type "`serviceworker`"</h2>

The <dfn id="dfn-link-type-serviceworker" lt="serviceworker link type"><code>serviceworker</code></dfn> keyword may be used with <{link}> elements. This keyword creates an <a>external resource link</a> (<dfn id="dfn-serviceworker-link">serviceworker link</dfn>) that is used to declare a [=/service worker registration=] and its [=service worker registration/scope url=].
A [=/service worker registration=] and its [=service worker registration/scope url=] are created by a <dfn id="dfn-serviceworker-link">serviceworker link</dfn>, which is declared using a <a href="#serviceworker-link-header">"serviceworker" `Link` header</a> or a <{link}> element whose <{link/rel}> attribute contains the keyword "<code>[=html/serviceworker=]</code>".

<section>
<h3 id="link-header-processing">Processing the <code>Link</code> header</h3>
<h3 id="serviceworker-link-header">Declaring a "serviceworker" <code>Link</code> header</h3>

A <a>serviceworker link</a> can be declared using a `Link` header</a> [[!RFC5988]] with "`serviceworker`" as the value of the "`rel`" parameter and a [=service worker/script url=] as the <a>target IRI</a>, and the following optional <a>target attributes</a>:

: `scope`
:: Value: A [=service worker registration/scope url=].

: `workertype`
:: Value: A [=job/worker type=].

: `updateviacache`
:: Value: An [=service worker registration/update via cache mode=].

The "`anchor`" parameter must not be specified.

<div class="example">
<pre class="highlight">
Link: &lt;sw.js&gt;; rel="serviceworker"; scope="/"; workertype="module"; updateviacache="all"
</pre>
</div>

</section>

<section>
<h3 id="link-header-processing">Processing a "serviceworker" <code>Link</code> header</h3>

When a user agent that supports [[!RFC5988]] processes a <code>Link</code> header that contains a <a>serviceworker link</a>, the user agent *should* run these steps:

Expand All @@ -1768,7 +1795,7 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
</section>

<section>
<h3 id="link-element-processing">Processing the <{link}> element</h3>
<h3 id="link-element-processing">Processing a "serviceworker" <{link}> element</h3>

When a <a>serviceworker link</a>'s <{link}> element is <a>inserted into a document</a>, or a <a>serviceworker link</a> is created on a <{link}> element that is already <a>in a document tree</a>, or the <{link/href}> or <{link/scope}> attributes of the <{link}> element of a <a>serviceworker link</a> is changed, the user agent *should* run these steps:

Expand All @@ -1778,8 +1805,7 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
1. Let |scriptURL| be the result of <a lt="URL parser">parsing</a> the <{link/href}> attribute with the <{link}> element's <a>node document</a>'s <a>document base URL</a>.
1. Let |scopeURL| be null.
1. If the <{link/scope}> attribute is present, set |scopeURL| to the result of <a lt="URL parser">parsing</a> the <{link/scope}> attribute with the <{link}> element's <a>node document</a>'s <a>document base URL</a>.
1. Let |workerType| be the <{link/workertype}> attribute, or "<code>classic</code>" if the <{link/workertype}> attribute is omitted.
1. If |workerType| is not a valid {{WorkerType}} value, <a>queue a task</a> to <a>fire an event</a> named <code>error</code> at the <{link}> element, and abort these steps.
1. Let |workerType| be the state of the <{link/workertype}> attribute.
1. Let |useCache| be true if the <{link}> element has a <{link/usecache}> attribute, otherwise false.
1. Let |promise| be a new <a>promise</a>.
1. Invoke [=Start Register=] with |scopeURL|, |scriptURL|, |promise|, |client|, |client|'s <a>creation URL</a>, |workerType|, and |useCache|.
Expand Down Expand Up @@ -1811,24 +1837,6 @@ spec: webappsec-referrer-policy; urlPrefix: https://w3c.github.io/webappsec-refe
</pre>
</div>
</section>

<section>
<h3 id="link-element-interface-extensions">Link element interface extensions</h3>

<pre class="idl">
partial interface HTMLLinkElement {
[CEReactions] attribute USVString scope;
[CEReactions] attribute WorkerType workerType;
[CEReactions] attribute boolean useCache;
};
</pre>

The <dfn attribute for="HTMLLinkElement" id="link-scope-attribute">scope</dfn> IDL attribute must <a>reflect</a> the element's <dfn element-attr for="link">scope</dfn> content attribute.

The <dfn attribute for="HTMLLinkElement" id="link-workertype-attribute">workerType</dfn> IDL attribute must <a>reflect</a> the element's <dfn element-attr for="link">workertype</dfn> content attribute.

The <dfn attribute for="HTMLLinkElement" id="link-usecache-attribute">useCache</dfn> IDL attribute must <a>reflect</a> the element's <dfn element-attr for="link">usecache</dfn> content attribute.
</section>
</section>

<section>
Expand Down
Loading

0 comments on commit 6ced673

Please sign in to comment.