<!DOCTYPE html>

<html>
<head>
    <script src="../../../../resources/js-test-pre.js"></script>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        function doTest()
        {
            var iframe = document.querySelector('iframe');

            var node = iframe.contentDocument.createElement('div');
            node.addEventListener('touchstart', function() { }, false);
            node.addEventListener('touchstart', function() { }, false);
            node.addEventListener('touchmove', function() { }, false);
            node.addEventListener('touchend', function() { }, false);
            node.textContent = 'test node';
            iframe.contentDocument.body.appendChild(node);

            document.body.appendChild(node);
            
            node.remove();
            
            window.setTimeout(removeFrameAndGC, 0)
        }
        
        function removeFrameAndGC()
        {
            var iframe = document.querySelector('iframe');
            iframe.remove();
            iframe = undefined;

            gc();
            if (window.testRunner)
                testRunner.notifyDone();
        }

        window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    This test should not crash or assert.
    <iframe srcdoc="<body></body>"></iframe>
</body>
</html>
