diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/form-poster.html b/testing/web-platform/tests/service-workers/service-worker/resources/form-poster.html index 6c5e85fef2fca..cd11a30a5e85f 100644 --- a/testing/web-platform/tests/service-workers/service-worker/resources/form-poster.html +++ b/testing/web-platform/tests/service-workers/service-worker/resources/form-poster.html @@ -1,4 +1,5 @@ +
diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-register.html b/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-register.html index 084f0a08a8e64..3060fc16a28ad 100644 --- a/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-register.html +++ b/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-register.html @@ -5,18 +5,27 @@ const scope = self.origin + '/cookies/resources/postToParent.py?with-sw'; const script = './fetch-rewrite-worker.js'; const reg = await navigator.serviceWorker.register(script, { scope: scope }); - await new Promise(resolve => { - const worker = reg.installing; - worker.addEventListener('statechange', evt => { - if (worker.state === 'activated') { - resolve(); - } + // In nested cases we may be impacted by partitioning or not depending on + // the browser. With partitioning we will be installing a new worker here, + // but without partitioning the worker will already exist. Handle both cases. + if (reg.installing) { + await new Promise(resolve => { + const worker = reg.installing; + worker.addEventListener('statechange', evt => { + if (worker.state === 'activated') { + resolve(); + } + }); }); - }); - if (reg.navigationPreload) { - await reg.navigationPreload.enable(); + if (reg.navigationPreload) { + await reg.navigationPreload.enable(); + } + } + if (window.opener) { + window.opener.postMessage({ type: 'SW-REGISTERED' }, '*'); + } else { + window.top.postMessage({ type: 'SW-REGISTERED' }, '*'); } - window.opener.postMessage({ type: 'SW-REGISTERED' }, '*'); } self.addEventListener('load', onLoad); diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-unregister.html b/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-unregister.html index cca3620b61e73..3a8c04d8d345a 100644 --- a/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-unregister.html +++ b/testing/web-platform/tests/service-workers/service-worker/resources/same-site-cookies-unregister.html @@ -4,8 +4,14 @@ async function onLoad() { const scope = self.origin + '/cookies/resources/postToParent.py?with-sw'; const reg = await navigator.serviceWorker.getRegistration(scope); - await reg.unregister(); - window.opener.postMessage({ type: 'SW-UNREGISTERED' }, '*'); + if (reg) { + await reg.unregister(); + } + if (window.opener) { + window.opener.postMessage({ type: 'SW-UNREGISTERED' }, '*'); + } else { + window.top.postMessage({ type: 'SW-UNREGISTERED' }, '*'); + } } self.addEventListener('load', onLoad); diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/window-opener.html b/testing/web-platform/tests/service-workers/service-worker/resources/window-opener.html new file mode 100644 index 0000000000000..32d0744646798 --- /dev/null +++ b/testing/web-platform/tests/service-workers/service-worker/resources/window-opener.html @@ -0,0 +1,17 @@ + + + + diff --git a/testing/web-platform/tests/service-workers/service-worker/same-site-cookies.https.html b/testing/web-platform/tests/service-workers/service-worker/same-site-cookies.https.html index caeadcfcae9d9..6075dc83ec702 100644 --- a/testing/web-platform/tests/service-workers/service-worker/same-site-cookies.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/same-site-cookies.https.html @@ -10,9 +10,21 @@