<html>
<head>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

function print(message, color)
{
    var paragraph = document.createElement("div");
    paragraph.appendChild(document.createTextNode(message));
    paragraph.style.fontFamily = "monospace";
    if (color)
        paragraph.style.color = color;
    document.getElementById("console").appendChild(paragraph);
}

function test()
{
    // must be last because the exception ends JavaScript execution
    window.onerror = function (error, url, line, column) {
        url = url ? url.match( /[^\/]+\/?$/ )[0] : url;
        print("PASS: caught global error: " + error + " at " + url + ", line: " + line + ", column: " + column, "green");
        return true;
    };
    hahaha_good_luck_finding_me(); // caught by window.onerror
}
</script>
</head>
<body onload="test();">
<p>This page tests setting onerror handlers through the DOM. If it passes, you will
   see "PASS" messages below.<a href="https://bugs.webkit.org/show_bug.cgi?id=8519">Bug 8519</a>.</p>
<hr>
<div id='console'></div>
</body>
</html>
