| <!DOCTYPE html> |
| <body> |
| <script src="../../resources/gc.js"></script> |
| <script src="../../resources/js-test.js"></script> |
| <script> |
| jsTestIsAsync = true; |
| description("MessagePorts (and their execution contexts) should be collected by GC once close() has been called on them"); |
| function runTest() { |
| var channel = new MessageChannel(); |
| var port = channel.port1; |
| port.onmessage = function() { |
| iframeDocGC = internals.observeGC(document.querySelector('iframe').contentDocument); |
| document.querySelector('iframe').remove(); |
| asyncGC(function() { |
| shouldBeTrue("iframeDocGC.wasCollected"); |
| finishJSTest(); |
| }); |
| }; |
| window.frames[0].postMessage("connect", "*", [channel.port2]); |
| } |
| </script> |
| <iframe src="resources/message-port-gc-closed-cloned-iframe.html" onload="runTest()"></iframe> |
| </body> |