42 lines
1.2 KiB
HTML
42 lines
1.2 KiB
HTML
<script>
|
|
if (window.testRunner) {
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
}
|
|
|
|
var port;
|
|
var gc_stuff = new Array();
|
|
|
|
gc_and_crash = function() {
|
|
if (this.GCController)
|
|
GCController.collect();
|
|
else {
|
|
// V8 needs that many objects to run GC.
|
|
for(i = 0; i < 100000; i++) {
|
|
p = new Object();
|
|
gc_stuff.push(p);
|
|
gc_stuff.push(p + p);
|
|
}
|
|
}
|
|
|
|
// If the bug 43140 is regressed, this will crash, at least in v8-based ports.
|
|
port.start();
|
|
|
|
document.getElementById("log").innerText = "PASS";
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
|
|
function test() {
|
|
var iframe = document.getElementById("iframe");
|
|
var channel = new iframe.contentWindow.MessageChannel();
|
|
port = channel.port1;
|
|
|
|
iframe.onload = function() { gc_and_crash(); }
|
|
iframe.src = "data:text/html,<body>Hello!" ;
|
|
}
|
|
</script>
|
|
<body onload="test()">
|
|
<p>Test that MessagePort is properly closed when its owning context goes away. The test succeeds if it doesn't crash and prints "PASS" below. See https://bugs.webkit.org/show_bug.cgi?id=43140 for more details.</p>
|
|
<pre id=log></pre>
|
|
<iframe style="display:none" id=iframe></iframe> |