<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<body onload="test()">
<div id="console"></div>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}

function test()
{
    var s = document.createElement("script");
    s.addEventListener("beforeload", function() {
        document.body.removeChild(document.getElementsByTagName("script")[2]);
        testPassed("");
        if (window.testRunner)
            testRunner.notifyDone();
    }, false);
    s.addEventListener("error", function() {
        testFailed("error event should not fire.")
    }, false);
    s.addEventListener("load", function() {
        testFailed("load event should not fire.")
    }, false);
    s.src = "resources/shouldnotexecute.js";
    document.body.appendChild(s);
}
</script>
</body>
</html>
