blob: 5fd35c586dbd544df68131922fff3965e8172ed0 [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="resources/routines.js"></script>
</head>
<body>
<script>
var url = "/WebKit/service-workers/resources/service-worker-iframe-preload-after-response-script.py";
promise_test(async (test) => {
let registration = await navigator.serviceWorker.register("/WebKit/service-workers/service-worker-iframe-preload-after-response-worker.js", { scope : url });
if (!registration.installing) {
registration.unregister();
registration = await navigator.serviceWorker.register("/WebKit/service-workers/service-worker-iframe-preload-after-response-worker.js", { scope : url });
}
const activeWorker = registration.installing;
let resolve;
let promise = new Promise(r => resolve = r);
activeWorker.addEventListener('statechange', () => {
if (activeWorker.state === "activated")
resolve();
});
await promise;
await registration.navigationPreload.enable();
await registration.navigationPreload.setHeaderValue("ThisIsAPreload");
}, "Setup preloading worker");
promise_test(async (test) => {
const frame = await withIframe(url);
assert_equals(frame.contentWindow.value, "ThisIsAPreload");
}, "Service worker load uses preload after passing a response to fetch event handler");
</script>
</body>
</html>