<html>
<head>
    <script src="resources/print.js"></script>
    <script>
        if (window.testRunner)
            testRunner.dumpAsText();

        document.addEventListener("beforeload", function(event) {
            event.target.parentElement.removeChild(event.target);
        }, true);
    </script>
    <link rel="stylesheet" href="data:text/css">
</head>
<body>
    <p>This page tests that you can correctly remove a stylesheet link element in its beforeload listener without causing a crash.</p>
    <div id="console"></div>
    <script>
        if (document.getElementsByTagName("link").length)
            print("FAIL", "red");
        else
            print("PASS", "green");
    </script>
</body>
</html>

