<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpResourceLoadCallbacks();
    testRunner.waitUntilDone();
}

function removeAndReplaceIframe() {
    document.body.removeChild(document.getElementById("iframe"));
    var newIframe = document.createElement("iframe");
    newIframe.src = "resources/iframe304.php";
    newIframe.onload = function() { setTimeout(finish, 0); }
    document.body.appendChild(newIframe);
}

function finish() {
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>
<body onload="setTimeout(removeAndReplaceIframe, 0)">
<iframe id="iframe" src="resources/iframe304.php"></iframe>
</body>
</html>
