chromium/third_party/blink/web_tests/external/wpt/service-workers/service-worker/resources/navigation-timing-worker-extended.js

importScripts("/resources/testharness.js");
const timings = {}

const DELAY_ACTIVATION = 500

self.addEventListener('activate', event => {
    event.waitUntil(new Promise(resolve => {
        timings.activateWorkerStart = performance.now() + performance.timeOrigin;

        // This gives us enough time to ensure activation would delay fetch handling
        step_timeout(resolve, DELAY_ACTIVATION);
    }).then(() => timings.activateWorkerEnd = performance.now() + performance.timeOrigin));
})

self.addEventListener('fetch', event => {
    timings.handleFetchEvent = performance.now() + performance.timeOrigin;
    event.respondWith(Promise.resolve(new Response(new Blob([`
            <script>
                parent.postMessage(${JSON.stringify(timings)}, "*")
            </script>
    `]))));
});