- From: Anne van Kesteren <notifications@github.com>
- Date: Mon, 08 Sep 2025 07:40:02 -0700
- To: w3c/push-api <push-api@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/push-api/pull/393/review/3196827711@github.com>
@annevk commented on this pull request. > </li> - <li>When the request has been completed, [=queue a global task=] on the [=networking - task source=] using |global| to [=resolve=] |promise| with |subscription| and terminate - these steps. + <li>If |permission| is {{PermissionState/"denied"}}, [=queue a global task=] on the + [=user interaction task source=] using |global| to [=reject=] |promise| with a + {{"NotAllowedError"}} {{DOMException}} and terminate these steps. + </li> + <li>If |subscription| is non-null: + <ol> + <li>If there is an error with |subscription|, then [=queue a global task=] on the I'm happy to file a follow-up issue for this and then people more experienced with these algorithms can figure it out. > - <a>push subscription</a> is associated with a <a>service worker registration</a> and a - <a>service worker registration</a> has at most one <a>push subscription</a>. + <a>user agent</a> and the <a>push service</a> on behalf of a web application. + </p> + <p> + A [=push subscription=] has an associated <dfn data-dfn-for= + "push subscription">scope</dfn>, which is a [=/URL=]. + </p> + <p> + A [=push subscription=] is considered to have a <dfn data-dfn-for= + "push subscription">window-accessible scope</dfn> when its [=push subscription/scope=]'s + [=url/path=] is a [=/list=] of [=list/size=] 1 and [=push subscription/scope=]'s + [=url/path=][0] is the empty string. + </p> + <p class="note"> + I.e., the [=url/path=] component of the [=/URL=] serializes as "`/`". It would be slightly different if you somehow ended up with a URL object that violates the contract. That's a bug of course, but I'd rather do the correct thing here and not hide the gory details. > </aside> <ol> + <li>If |scope| is failure or is a [=/URL=] whose [=url/scheme=] is not "`https`", then Right, it's more consistent to do it here. And no, we don't want to grab state while in parallel. > @@ -1103,6 +1157,27 @@ <h3> </li> <li>Let |global| be [=this=]'s [=relevant global object=]. </li> + <li>Let |scope| be null. + </li> + <li>Let |registration| be null. + </li> + <li>If [=this=]'s [=PushManager/service worker registration=] is null: + <ol> + <li>Set |scope| to the result of running the [=basic URL parser=] given "`/`" and + |global|'s <a>associated <code>Document</code></a>'s [=Document/URL=]. + </li> + <!-- Should the scope be validated here or do we trust the permission story to take care of that? Hmm. --> Now that I added the failure check below this note is indeed no longer needed. > @@ -1644,20 +1777,34 @@ <h2> it MUST run the following steps. </p> <ol> - <li>Let |registration| be the <a>service worker registration</a> corresponding to the <a> - push message</a>. - </li> - <li>If |registration| is not found, abort these steps. + <li> + <p> + Let |subscription| be the active <a>push subscription</a> corresponding to the + <a>push message</a>. Yeah, I can file another issue on that. This seems okay since it was already vague. -- Reply to this email directly or view it on GitHub: https://github.com/w3c/push-api/pull/393#discussion_r2330458245 You are receiving this because you are subscribed to this thread. Message ID: <w3c/push-api/pull/393/review/3196827711@github.com>
Received on Monday, 8 September 2025 14:40:06 UTC