diff --git a/testing/web-platform/tests/portals/portals-adopt-predecessor.html b/testing/web-platform/tests/portals/portals-adopt-predecessor.html index 91c13277819e..e75c3b59424c 100644 --- a/testing/web-platform/tests/portals/portals-adopt-predecessor.html +++ b/testing/web-platform/tests/portals/portals-adopt-predecessor.html @@ -35,4 +35,21 @@ }); window.open(`resources/portals-adopt-predecessor.html?test=${test}`); }, "Tests that trying to adopt the predecessor after the PortalActivateEvent will throw an exception."); + + promise_test(async t => { + var test = "adopt-and-activate"; + window.open(`resources/portals-adopt-predecessor.html?test=${test}`); + var message = await waitForCompletion(test); + assert_equals(message, "passed"); + }, "Tests that activating an adopted predecessor without inserting it works"); + + async_test(t => { + var test = "adopt-attach-remove"; + var bc = new BroadcastChannel(`test-${test}`); + bc.onmessage = t.step_func_done(function(e) { + assert_equals(e.data, "passed"); + bc.close(); + }); + window.open(`resources/portals-adopt-predecessor.html?test=${test}`); + }, "Tests that an adopting, inserting and then removing a predecessor works correctly"); diff --git a/testing/web-platform/tests/portals/resources/portals-adopt-predecessor-portal.html b/testing/web-platform/tests/portals/resources/portals-adopt-predecessor-portal.html index 78c6af1268cb..0cf07f3f41c1 100644 --- a/testing/web-platform/tests/portals/resources/portals-adopt-predecessor-portal.html +++ b/testing/web-platform/tests/portals/resources/portals-adopt-predecessor-portal.html @@ -37,5 +37,19 @@ } }); } + if (test == "adopt-and-activate") { + var portal = e.adoptPredecessor(); + portal.activate(); + } + if (test == "adopt-attach-remove") { + var portal = e.adoptPredecessor(); + document.body.appendChild(portal); + setTimeout(() => { + document.body.removeChild(portal); + var bc_test = new BroadcastChannel(`test-${test}`); + bc_test.postMessage("passed"); + bc_test.close(); + }); + } } diff --git a/testing/web-platform/tests/portals/resources/portals-adopt-predecessor.html b/testing/web-platform/tests/portals/resources/portals-adopt-predecessor.html index 4bd01c338ed6..66d47d12ac28 100644 --- a/testing/web-platform/tests/portals/resources/portals-adopt-predecessor.html +++ b/testing/web-platform/tests/portals/resources/portals-adopt-predecessor.html @@ -8,6 +8,9 @@ portal.src = `portals-adopt-predecessor-portal.html?test=${test}`; portal.onload = () => { portal.activate().then(() => { + window.addEventListener("portalactivate", e => { + window.opener.postMessage({test, message: "passed"}, "*"); + }); window.portalHost.addEventListener("message", e => { window.opener.postMessage({test, message: e.data}, "*"); });