chromium/content/test/data/service_worker/fenced_frame_service_worker.js

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

self.addEventListener('install', e => e.waitUntil(skipWaiting()));
self.addEventListener('activate', e => e.waitUntil(clients.claim()));

self.addEventListener('message', async e => {
  const {type, id, resource, options} = e.data;
  if (type === 'fetch') {
    try {
      await self.registration.backgroundFetch.fetch(id, resource, options);
      e.source.postMessage('fetch succeeded.');
    } catch (error) {
      e.source.postMessage(error.message);
    }
  }
});