<!DOCTYPE html>
<script>
if (window.testRunner)
    testRunner.waitUntilDone();

function start() {
    div = document.createElement('div');
    marquee = document.createElement('marquee');
    div.appendChild(marquee);
    doc = document.documentElement;
    iframe = document.createElement('iframe');
    iframe.src='resources/marquee-destroyed-without-removed-from-crash.svg';
    doc.appendChild(top.iframe);

    if (location.hash == '#done') {
        document.write('PASS');
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.notifyDone();
        }
        return;
    }
    setTimeout('top.reload_page()', 25);
}

function reload_page() {
    document.removeChild(doc);
    document.appendChild(doc);

    var count = 0;
    if (location.hash !== "")
        count = parseInt(location.hash.substr(1));
    if (count < 5) {
        ++count;
        location.hash = '#' + count;
    } else {
        location.hash = 'done';
    }
    setTimeout("gc(); location.reload();", 10);
}
</script>
<body onload="start()">
crbug.com/447976: crash when marquee element is destroyed without removedFrom.
