[flutter_tools] automatically update to latest sw on install (#65784)

If a new service worker is installed, automatically update this behind the scenes. Immediately after a page refresh, the new worker and cache will be available, though the main.dart.js and others will be available sooner due to the cache busting URLS
This commit is contained in:
Jonah Williams 2020-09-16 17:16:58 -07:00 committed by GitHub
parent 2acd170814
commit 73652a723b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -476,6 +476,7 @@ const CORE = [
${coreBundle.map((String file) => '"$file"').join(',\n')}];
// During install, the TEMP cache is populated with the application shell files.
self.addEventListener("install", (event) => {
skipWaiting();
return event.waitUntil(
caches.open(TEMP).then((cache) => {
return cache.addAll(
@ -579,10 +580,12 @@ self.addEventListener('message', (event) => {
// SkipWaiting can be used to immediately activate a waiting service worker.
// This will also require a page refresh triggered by the main worker.
if (event.data === 'skipWaiting') {
return self.skipWaiting();
skipWaiting();
return;
}
if (event.message === 'downloadOffline') {
if (event.data === 'downloadOffline') {
downloadOffline();
return;
}
});
@ -628,5 +631,11 @@ function onlineFirst(event) {
})
);
}
function skipWaiting() {
if (self.skipWaiting != undefined) {
self.skipWaiting();
}
}
''';
}