Bug 254283

Summary: No fetching of service worker script loaded via importScripts when updateViaCache is none on update()
Product: WebKit Reporter: Dmytro <dmytro.savochkin>
Component: Service WorkersAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: cdumez, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: Safari 15   
Hardware: Mac (Intel)   
OS: Unspecified   
Attachments:
Description Flags
comparison of traffic between Safari and Chrome when doing update() none

Dmytro
Reported 2023-03-22 13:11:31 PDT
Created attachment 465546 [details] comparison of traffic between Safari and Chrome when doing update() Suppose I have a simple web page that loads service worker with script ``` navigator.serviceWorker.register('sw.js', { scope: './', updateViaCache: 'none' }); ``` and file sw.js contains this code ``` importScripts('https://dmytro-savochkin.github.io/debug-no-update-of-sw-in-safari/imported-sw.js'); ``` and file imported-sw.js contains some additional code (seems to not matter what code exactly it is). In this scenario after loading the page and waiting until service worker is installed I later call this code in the browser console (client console, not service worker console): ``` navigator.serviceWorker.ready.then(function(r) { r.update(); }); ``` Then I can see in some traffic sniffer (I used Charles) that Safari only makes a single request to fetch sw.js file without making a request to fetch imported-sw.js file. I was under the assumption that it should make two requests (one for sw.js, one for imported-sw.js) because I specified `updateViaCache: 'none'` during registration of service worker. For example Chrome in this scenario makes two requests for these two files separately. I uploaded the code here to check: https://dmytro-savochkin.github.io/debug-no-update-of-sw-in-safari/ Also I am attaching an image showing two merged screenshots from traffic sniffer for Safari and Chrome, the screenshots were made after I had called `navigator.serviceWorker.ready.then(function(r) { r.update(); });` five times in browser console. To reproduce it I used Safari (15.6.1 (15613.3.9.1.16, 15613)), Chrome (111.0.5563.64 (Official Build) (x86_64)), and macOS (10.15.7). (I haven't try it in newer Safari because it seems it's the newest available for my rather old Mac).
Attachments
comparison of traffic between Safari and Chrome when doing update() (39.40 KB, image/png)
2023-03-22 13:11 PDT, Dmytro
no flags
Radar WebKit Bug Importer
Comment 1 2023-03-29 13:12:19 PDT
Note You need to log in before you can comment on or make changes to this bug.