- From: Marcos Cáceres <notifications@github.com>
- Date: Tue, 27 Dec 2016 23:08:05 -0800
- To: w3c/manifest <manifest@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/manifest/pull/507/review/14529660@github.com>
marcoscaceres requested changes on this pull request.
Maybe I missed it, but did you also add processing the manifest member to: https://www.w3.org/TR/appmanifest/#processing
> manifest</a>.
</li>
<li>If <a>obtaining the manifest</a> results in an error, a user
agent can, at this point, fall back to using the <a>top-level
browsing context</a>' <code>Document</code>'s metadata to
populate an <a>installation process</a>' UI.
</li>
+ <li>If <a>obtaining the manifest</a> succeeds, and the result of running the
+ <a>steps for processing the serviceworker member</a> with <a>manifest</a>
+ returns a valid <var>registration</var>, a user agent can at this point
+ <ol>
+ <li>Let <var>client</var> be the <a>top-level browsing context</a>'
+ <code>Document</code>'s
+ <a href="https://html.spec.whatwg.org/multipage/webappapis.html#relevant-settings-object">
+ relevant settings object</a>, or <code>null</code> if unavailable.
+ <li>Invoke <a>Start Register</a> with <var>scope</var> and <var>src</var>
+ members of the <var>registration</var>, a new <var>promise</var>,
+ <var>client</var>, <a>manifest URL</a>, plus the <var>type</var> and <var>use_cache</var>
+ members of the <var>registration</var>,
+ </li>
+ </ol>
+ in which case the state of the settled <var>promise</var> determine whether the
nit: determines
> manifest</a>.
</li>
<li>If <a>obtaining the manifest</a> results in an error, a user
agent can, at this point, fall back to using the <a>top-level
browsing context</a>' <code>Document</code>'s metadata to
populate an <a>installation process</a>' UI.
</li>
+ <li>If <a>obtaining the manifest</a> succeeds, and the result of running the
+ <a>steps for processing the serviceworker member</a> with <a>manifest</a>
+ returns a valid <var>registration</var>, a user agent can at this point
+ <ol>
+ <li>Let <var>client</var> be the <a>top-level browsing context</a>'
+ <code>Document</code>'s
+ <a href="https://html.spec.whatwg.org/multipage/webappapis.html#relevant-settings-object">
+ relevant settings object</a>, or <code>null</code> if unavailable.
+ <li>Invoke <a>Start Register</a> with <var>scope</var> and <var>src</var>
q: should this be "Let registration be the result of Start Registration".
The way this is spec'ed is a bit strange - I was expecting some kind of flow with the resulting promise... but it all seems to magically result in a registration.
> @@ -2033,6 +2055,99 @@ <h3 id="applying">
</p>
</section>
</section>
+
+ <section>
+ <h3>
+ <code>serviceworker</code> member
+ </h3>
+ <p>
+ The <dfn><code>serviceworker</code> member</dfn> describes a
+ service worker as defined in [[!SERVICE-WORKERS-1]].
Nit: Is there some unversioned reference we can use here instead of V1?
> @@ -2033,6 +2055,99 @@ <h3 id="applying">
</p>
</section>
</section>
+
+ <section>
+ <h3>
+ <code>serviceworker</code> member
+ </h3>
+ <p>
+ The <dfn><code>serviceworker</code> member</dfn> describes a
+ service worker as defined in [[!SERVICE-WORKERS-1]].
+ </p>
+ <p>
+ The <a><code>serviceworker</code> member</a> represents a <a
+ href="https://w3c.github.io/ServiceWorker/#service-worker-registration-concept">
+ service worker registration</a>. Other service worker registrations can be done, for instance
The text "Other service worker registrations can be done" should be in a non-normative note.
> @@ -2033,6 +2055,99 @@ <h3 id="applying">
</p>
</section>
</section>
+
+ <section>
+ <h3>
+ <code>serviceworker</code> member
+ </h3>
+ <p>
+ The <dfn><code>serviceworker</code> member</dfn> describes a
+ service worker as defined in [[!SERVICE-WORKERS-1]].
+ </p>
+ <p>
+ The <a><code>serviceworker</code> member</a> represents a <a
+ href="https://w3c.github.io/ServiceWorker/#service-worker-registration-concept">
+ service worker registration</a>. Other service worker registrations can be done, for instance
Also, you are redefining the rules - which is a bit dangerous. That should point to the SW spec, like:
"For rules on how SWs interact, then see section X of Service Workers"
> + The <dfn><code>serviceworker</code> member</dfn> describes a
+ service worker as defined in [[!SERVICE-WORKERS-1]].
+ </p>
+ <p>
+ The <a><code>serviceworker</code> member</a> represents a <a
+ href="https://w3c.github.io/ServiceWorker/#service-worker-registration-concept">
+ service worker registration</a>. Other service worker registrations can be done, for instance
+ by a script; if these have different scopes they will be considered separate
+ registrations. If they have the same scope and script URL, they coalesce.
+ If they have different script URLs, last one wins.
+ </p>
+ <p>
+ The <dfn>steps for processing the <code>serviceworker</code>
+ member</dfn> are given by the following algorithm. The algorithm
+ takes a <a>manifest</a> <var>manifest</var>. This algorithm returns a
+ registration object <var>registration</var>, which can be <code>undefined</code>.
nit: link to registration object?
> + <p>
+ The <dfn>steps for processing the <code>serviceworker</code>
+ member</dfn> are given by the following algorithm. The algorithm
+ takes a <a>manifest</a> <var>manifest</var>. This algorithm returns a
+ registration object <var>registration</var>, which can be <code>undefined</code>.
+ </p>
+ <ol>
+ <li>Let <var>unprocessed registration</var> be the result of calling the
+ <a>[[\GetOwnProperty]]</a> internal method of <var>manifest</var>
+ with argument "<code>serviceworker</code>".
+ <li>Let <var>src</var> be the result of running the <a>steps
+ for processing the <code>src</code> member of a service worker</a>
+ with <var>unprocessed registration</var> and <var>manifest URL</var>.
+ </li>
+ <li>If <var>src</var> is <code>undefined</code>, or if the result of
+ running <a>Is origin potentially trustworthy</a>
nit: capital "Is"
> + with the origin of <var>src</var> is <code>Not Trusted</code>, abort
+ these steps and return <code>undefined</code>.
+ </li>
+ <li>Otherwise, let <var>registration</var> be an object with
+ properties <code>src</code>, <code>scope</code>, <code>type</code> and
+ <code>use_cache</code>. All properties initially set to
+ <code>undefined</code>.
+ </li>
+ <li>Set <var>registration</var>'s <code>src</code> property to be
+ <var>src</var>.
+ </li>
+ <li>Let <var>scope</var> be the result of running the <a>steps
+ for processing the <code>scope</code> member of a service worker</a>
+ passing <var>unprocessed registration</var>.
+ </li>
+ <li>If <var>scope</var> is <code>undefined</code> abort these steps and
Warn developer?
> + <p>
+ The <dfn>steps for processing the <code>serviceworker</code>
+ member</dfn> are given by the following algorithm. The algorithm
+ takes a <a>manifest</a> <var>manifest</var>. This algorithm returns a
+ registration object <var>registration</var>, which can be <code>undefined</code>.
+ </p>
+ <ol>
+ <li>Let <var>unprocessed registration</var> be the result of calling the
+ <a>[[\GetOwnProperty]]</a> internal method of <var>manifest</var>
+ with argument "<code>serviceworker</code>".
+ <li>Let <var>src</var> be the result of running the <a>steps
+ for processing the <code>src</code> member of a service worker</a>
+ with <var>unprocessed registration</var> and <var>manifest URL</var>.
+ </li>
+ <li>If <var>src</var> is <code>undefined</code>, or if the result of
+ running <a>Is origin potentially trustworthy</a>
Probably warn developer here too
> + <li>Let <var>scope</var> be the result of running the <a>steps
+ for processing the <code>scope</code> member of a service worker</a>
+ passing <var>unprocessed registration</var>.
+ </li>
+ <li>If <var>scope</var> is <code>undefined</code> abort these steps and
+ return <code>undefined</code>.
+ </li>
+ <li>Otherwise, set <var>registration</var>'s <code>scope</code>
+ property to be <var>scope</var>.
+ </li>
+ <li>Let <var>type</var> be the result of running the <a>steps
+ for processing the <code>type</code> member of a service worker</a>
+ passing <var>unprocessed registration</var>.
+ </li>
+ <li>If <var>type</var> is <code>undefined</code> abort these steps and
+ return <code>undefined</code>.
Warn developer? ... so touchy, these service workers!
> + passing <var>unprocessed registration</var>.
+ </li>
+ <li>If <var>use cache</var> is <code>undefined</code> abort these steps
+ and return <code>undefined</code>.
+ </li>
+ <li>Otherwise, set <var>registration</var>'s <code>use_cache</code>
+ property to be <var>use cache</var>.
+ </li>
+ <li>Return <var>registration</var>.
+ </li>
+ </ol>
+ <div class="example">
+ In the following example, the web application is listing
+ a service worker for the <code>/foo</code> scope, bypassing the user agent cache
+ when fetching the <code>"sw.js"</code> source:
+<pre class="example">
nit: you can indent this normally, ReSpec handles that for you.
> @@ -2816,6 +2931,181 @@ <h3 id="applying">
</section>
<section>
<h2>
+ The serviceworker object and its members
+ </h2>
+ <p>
+ A <dfn>serviceworker object</dfn> represents a service worker
+ registration for the web application.
+ </p>
+ <section>
+ <h3>
+ <code>src</code> member
+ </h3>
+ <p>
+ The <dfn data-lt="serviceworker-src"><code>src</code> member</dfn> of a
+ <a>serviceworker object</a> is a <a>URL</a> representing a
+ service worker.
You might want to check if this is the same in the SW spec. Just the wording seems odd as SWs are just script resources.
> + <li>If <a>Trim</a>(value) is the empty string, then return
+ <code>undefined</code>.
+ </li>
+ <li>Otherwise, <a>parse</a> <var>value</var> using <var>manifest
+ URL</var> as the base URL and return the result.
+ </li>
+ </ol>
+ </section>
+ <section>
+ <h3>
+ <code>scope</code> member
+ </h3>
+ <p>
+ The <dfn data-lt="serviceworker-scope"><code>scope</code> member</dfn> of a
+ <a>serviceworker object</a> is the service worker's associated
+ <a href="https://w3c.github.io/ServiceWorker/#dfn-scope-url">scope URL</a>.
nit, scope URL should be defined at the end of the document, so not to include the link to the SW spec here.
> + </section>
+ <section>
+ <h3>
+ <code>type</code> member
+ </h3>
+ <p>
+ The <dfn data-lt="serviceworker-type"><code>type</code> member</dfn> of a
+ <a>serviceworker object</a> is the service worker's
+ <a href="https://html.spec.whatwg.org/multipage/workers.html#workertype">worker type</a>.
+ </p>
+ <p>
+ The <dfn>steps for processing the <code>type</code> member of a
+ service worker</dfn> are given by the following algorithm. The algorithm takes
+ a <a>serviceworker object</a> <var>registration</var>, and a <a>URL</a> <var>manifest
+ URL</var>, which is the <a>URL</a> from which the
+ <var>manifest</var> was fetched. This algorithm will return a
Hmm... what if the manifest redirected during fetch... we might need to clarify that somewhere.
> + </li>
+ <li>Let <var>type</var> be <a>Type</a>(<var>value</var>).
+ </li>
+ <li>If <var>type</var> is not "string", then:
+ <ol>
+ <li>If <var>type</var> is not "<code>undefined</code>", issue a
+ developer warning that the type is unsupported and
+ return <code>undefined</code>.
+ </li>
+ <li>Return <code>"classic"</code>.
+ </li>
+ </ol>
+ </li>
+ <li>If <a>Trim</a>(value) is the empty string, then:
+ <ol>
+ <li>Issue a developer warning that the type is unsupported.
This seems odd... you are returning undefined here, but "classic" above?
> + </li>
+ <li>Let <var>type</var> be <a>Type</a>(<var>value</var>).
+ </li>
+ <li>If <var>type</var> is not "string", then:
+ <ol>
+ <li>If <var>type</var> is not "<code>undefined</code>", issue a
+ developer warning that the type is unsupported and
+ return <code>undefined</code>.
+ </li>
+ <li>Return <code>"classic"</code>.
+ </li>
+ </ol>
+ </li>
+ <li>If <a>Trim</a>(value) is the empty string, then:
+ <ol>
+ <li>Issue a developer warning that the type is unsupported.
I.e., should we recover to "classic" in error cases for backwards compat?
> + <li>If <var>type</var> is not "<code>undefined</code>", issue a
+ developer warning that the type is unsupported and
+ return <code>undefined</code>.
+ </li>
+ <li>Return <code>"classic"</code>.
+ </li>
+ </ol>
+ </li>
+ <li>If <a>Trim</a>(value) is the empty string, then:
+ <ol>
+ <li>Issue a developer warning that the type is unsupported.
+ </li>
+ <li>Return <code>undefined</code>.
+ </li>
+ </ol>
+ <li>Otherwise, <a>Trim</a>(<var>value</var>) and return the result.
Also, should should this be restricted to just "classic" and "module"?
> + boolean.
+ </p>
+ <ol>
+ <li>Let <var>value</var> be the result of calling the
+ <a>[[\GetOwnProperty]]</a> internal method of <var>registration</var>
+ passing " <code>use_cache</code>" as the argument.
+ </li>
+ <li>Let <var>type</var> be <a>Type</a>(<var>value</var>).
+ </li>
+ <li>If <var>type</var> is not "boolean", then:
+ <ol>
+ <li>If <var>type</var> is not "<code>undefined</code>", issue a
+ developer warning that the type is unsupported and
+ return <code>undefined</code>.
+ </li>
+ <li>Otherwise, return False</li>
nit: return `<code>false</code>`
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/manifest/pull/507#pullrequestreview-14529660
Received on Wednesday, 28 December 2016 07:08:58 UTC