- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 20 Feb 2023 19:52:41 -0800
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/ServiceWorker/pull/1672/review/1306579062@github.com>
@domenic commented on this pull request.
Some suggested tweaks to be more precise, plus a suggestion that you bail out in the object case instead of potentially triggering side effects from the `handleEvent` getter.
> 1. Run the <a>responsible event loop</a> specified by |settingsObject| until it is destroyed.
1. [=map/Clear=] |workerGlobalScope|'s [=map of active timers=].
1. Wait for |serviceWorker| to be [=running=], or for |startFailed| to be true.
1. If |startFailed| is true, then return *failure*.
1. Return |serviceWorker|'s [=start status=].
</section>
+ <section algorithm>
+ <h3 id="empty-handler-identification-algorithm"><dfn>Empty Handler identification</dfn></h3>
+
+ : Input
+ :: |workerGlobalScope|, a [=service worker/global object=].
+ : Output
+ :: a boolean
+
+ 1. If |workerGlobalScope|'s <a>set of event types to handle</a> does not [=set/contain=] <code>fetch</code>, then returns false.
+ 1. set |eventListenerList| to [=map/value=] whose [=map/key=] is <code>fetch</code> in |workerGlobalScope|'s <a>set of event types to handle</a>.
+ 1. [=list/For each=] |eventListener| of |eventListenerList|:
+ 1. If |eventListener|'s [=callback=] is not null:
+ 1. Set |callback| to an ECMAScript object coverted from |eventListener|'s [=callback=], which is [=idl-callback-interface=].
```suggestion
1. Set |callback| to the result of [=converting|convert to an ECMAScript value=] |eventListener|'s [=callback=] to an ECMAScript value.
```
> 1. Run the <a>responsible event loop</a> specified by |settingsObject| until it is destroyed.
1. [=map/Clear=] |workerGlobalScope|'s [=map of active timers=].
1. Wait for |serviceWorker| to be [=running=], or for |startFailed| to be true.
1. If |startFailed| is true, then return *failure*.
1. Return |serviceWorker|'s [=start status=].
</section>
+ <section algorithm>
+ <h3 id="empty-handler-identification-algorithm"><dfn>Empty Handler identification</dfn></h3>
+
+ : Input
+ :: |workerGlobalScope|, a [=service worker/global object=].
+ : Output
+ :: a boolean
+
+ 1. If |workerGlobalScope|'s <a>set of event types to handle</a> does not [=set/contain=] <code>fetch</code>, then returns false.
+ 1. set |eventListenerList| to [=map/value=] whose [=map/key=] is <code>fetch</code> in |workerGlobalScope|'s <a>set of event types to handle</a>.
+ 1. [=list/For each=] |eventListener| of |eventListenerList|:
+ 1. If |eventListener|'s [=callback=] is not null:
+ 1. Set |callback| to an ECMAScript object coverted from |eventListener|'s [=callback=], which is [=idl-callback-interface=].
+ 1. If |callback| is a [=function=], and [=function body=] is not empty (i.e. either [=statement=] or [=declaration=] exist), then return false.
```suggestion
1. If [$IsCallable$](|callback|), and |callback|'s [=function body=] is not empty (i.e. either a [=statement=] or [=declaration=] exist), then return false.
```
> + 1. If |callback| does not have <code>handleEvent</code> property, then return false.
+ 1. If |callback|'s <code>handleEvent</code> property is not a [=function=], then return false.
+ 1. If a [=function body=] of |callback|'s <code>handleEvent</code> property is not empty (i.e. either [=statement=] or [=declaration=] exist), return false.
```suggestion
1. Return false.
```
--
Reply to this email directly or view it on GitHub:
https://github.com/w3c/ServiceWorker/pull/1672#pullrequestreview-1306579062
You are receiving this because you are subscribed to this thread.
Message ID: <w3c/ServiceWorker/pull/1672/review/1306579062@github.com>
Received on Tuesday, 21 February 2023 03:52:54 UTC