33 lines
1.1 KiB
HTML
33 lines
1.1 KiB
HTML
<script>
|
|
function test()
|
|
{
|
|
if (window.testRunner) {
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
}
|
|
|
|
var counter = 0;
|
|
var worker = new Worker("resources/wrapper-map-gc.js");
|
|
|
|
// Post the message from worker back to the worker.
|
|
// This will fire another onmessage event in the Worker and allocate more data.
|
|
worker.onmessage = function(evt)
|
|
{
|
|
worker.postMessage(evt.data);
|
|
// This appears to be enough to reliably trigger GC in a Worker (about 20Mb strings allocated).
|
|
if (++counter > 20) {
|
|
document.getElementById("result").innerText = "PASS";
|
|
worker.terminate();
|
|
if (window.testRunner) {
|
|
testRunner.notifyDone();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<body onload=test()>
|
|
<p>This test tries to cause GC in Worker context. It also fires events in the Worker, which allocates JS DOM Wrappers for Event object. As a result of GC, the maps that map wrappers to DOM Objects will be cleaned up. Test succeeds if it does not crash and prints 'PASS' at the end.</p>
|
|
<pre id="result"></pre>
|
|
</body>
|
|
</html>
|