<html>
<head>
<script>
if (window.layoutTestController)
    layoutTestController.dumpAsText();

function gc() {
    if (window.GCController)
        return GCController.collect();

    for (var i = 0; i < 10000; i++)
        var s = new String("abc");
}

function crash_test(element_name) {
    var element = document.createElement(element_name);
    element.setAttribute('form', '1');
    var container = document.createElement('div');
    container.appendChild(element);
    document.implementation.createDocument().adoptNode(container);
    container.removeChild(element);
    delete element;
    gc();
    var form = document.createElement('form');
    form.setAttribute('id', '2');
    document.body.appendChild(form)
}

function test() {
    crash_test('input');
    crash_test('object');
    document.body.innerHTML += "PASS";
}
</script>
</head>
<body onload="test()">
<p>
This page is a test case for <a href="https://bugs.webkit.org/show_bug.cgi?id=51418">Bug 51418</a>. WebKit should not crash when this page is loaded.
</p>
</body>
</html>
