<!DOCTYPE html>
<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpChildFramesAsText();
    testRunner.waitUntilDone();
    if (window.internals)
        internals.registerDefaultPortForProtocol(8000, "http");
}

async function closeConnectionsThenAddFrame() {
    for (var i = 0; i < 6; i = i + 1) {
        await fetch('resources/close-connection.py', {mode: 'no-cors'});
    }
    var iframe = document.createElement('iframe');
    iframe.src = "resources/nph-alert-fail.pl";
    iframe.onload = function() { if (window.testRunner) { testRunner.notifyDone() } }
    document.body.appendChild(iframe);
}

</script>
</head>
<body onload="closeConnectionsThenAddFrame()">
<p id="description">This tests that JavaScript is blocked in a HTTP 0.9 response served over port 80. This test PASSED if you see content in the iframe below and do not see a JavaScript alert. Otherwise, it FAILED. This page and its subresources must be served over port 80 to run this test by hand.</p>
</body>
</html>
