[flutter_tools] Ensure service worker starts caching assets since first load (#116833)

* [Flutter_tools] Ensure service worker starts caching assets since the first launch

* [flutter_tools] add comment to give some context on self.clients.claim()

* [flutter_tools] add comment to give some context on self.clients.claim()
This commit is contained in:
David Landeros 2023-01-19 15:52:52 -06:00 committed by GitHub
parent 99e4ca50c5
commit c5ceff11dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 7 deletions

View File

@ -382,9 +382,8 @@ Future<void> runWebServiceWorkerTest({
'index.html': 2,
if (shouldExpectFlutterJs)
'flutter.js': 1,
// We still download some resources multiple times if the server is non-caching.
'main.dart.js': 2,
'assets/FontManifest.json': 2,
'main.dart.js': 1,
'assets/FontManifest.json': 1,
'flutter_service_worker.js': 1,
'assets/AssetManifest.json': 1,
'assets/fonts/MaterialIcons-Regular.otf': 1,
@ -413,7 +412,6 @@ Future<void> runWebServiceWorkerTest({
if (shouldExpectFlutterJs)
'flutter.js': 1,
'flutter_service_worker.js': 1,
'assets/fonts/MaterialIcons-Regular.otf': 1,
'CLOSE': 1,
if (!headless)
'manifest.json': 1,
@ -439,10 +437,9 @@ Future<void> runWebServiceWorkerTest({
if (shouldExpectFlutterJs)
'flutter.js': 1,
'flutter_service_worker.js': 2,
'main.dart.js': 2,
'main.dart.js': 1,
'assets/AssetManifest.json': 1,
'assets/FontManifest.json': 2,
'assets/fonts/MaterialIcons-Regular.otf': 1,
'assets/FontManifest.json': 1,
'CLOSE': 1,
if (!headless)
...<String, int>{

View File

@ -70,6 +70,8 @@ self.addEventListener("activate", function(event) {
await caches.delete(TEMP);
// Save the manifest to make future upgrades efficient.
await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
// Claim client to enable caching on first launch
self.clients.claim();
return;
}
var oldManifest = await manifest.json();
@ -95,6 +97,8 @@ self.addEventListener("activate", function(event) {
await caches.delete(TEMP);
// Save the manifest to make future upgrades efficient.
await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
// Claim client to enable caching on first launch
self.clients.claim();
return;
} catch (err) {
// On an unhandled exception the state of the cache cannot be guaranteed.