45 lines
1.1 KiB
HTML
45 lines
1.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<p>This tests deleting DOMTimer inside another DOMTimer. WebKit should not hit any debug assertions.</p>
|
|
<p id="result"></p>
|
|
<script src="../../resources/gc.js"></script>
|
|
<script>
|
|
|
|
if (!window.testRunner)
|
|
document.getElementById('result').textContent = 'This test requires testRunner';
|
|
else {
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
|
|
setTimeout(() => {
|
|
for (let k = 0; k < 50; k++) {
|
|
const frames = [];
|
|
for (let i = 0; i < 1; i++)
|
|
frames[i] = createTimerInNewFrame();
|
|
for (const frame of frames)
|
|
frame.remove();
|
|
frames.length = 0;
|
|
gc();
|
|
}
|
|
self.postMessage('end', '*');
|
|
}, 0);
|
|
|
|
window.onmessage = () => {
|
|
document.getElementById('result').textContent = 'PASS';
|
|
testRunner.notifyDone();
|
|
}
|
|
}
|
|
|
|
function createTimerInNewFrame()
|
|
{
|
|
const frame = document.createElement('iframe');
|
|
document.body.appendChild(frame);
|
|
frame.contentWindow.setTimeout(() => {}, 0);
|
|
return frame;
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|