| <!DOCTYPE html> |
| <title>Tests that a portal can adopt its predecessor</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| function waitForCompletion(targetTest) { |
| return new Promise((resolve, reject) => { |
| window.addEventListener("message", ({data: {test, message}}) => { |
| if (test === targetTest) |
| resolve(message); |
| }); |
| }); |
| } |
| |
| promise_test(async () => { |
| var test = "adopt-once"; |
| window.open(`resources/portals-adopt-predecessor.html?test=${test}`); |
| var message = await waitForCompletion(test); |
| assert_equals(message, "adopted"); |
| }, "Tests that a portal can adopt its predecessor."); |
| |
| promise_test(async () => { |
| var test = "adopt-twice"; |
| window.open(`resources/portals-adopt-predecessor.html?test=${test}`); |
| var message = await waitForCompletion(test); |
| assert_equals(message, "passed"); |
| }, "Tests that trying to adopt the predecessor twice will throw an exception."); |
| |
| async_test(function(t) { |
| var test = "adopt-after-event"; |
| 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 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"); |
| |
| async_test(t => { |
| var test = "adopt-and-discard"; |
| 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 the adopted predecessor is destroyed if it isn't inserted"); |
| |
| async_test(t => { |
| var test = "adopt-to-disconnected-node"; |
| 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 adopted portal can be inserted into a disconnected node."); |
| </script> |