<html>
<body>
<p>
Test that window.onerror won't reveal any potentially sensitive script content if the latter is loaded from a different domain. The test passes if you don't see any data from the linked resource. <a href="https://bugs.webkit.org/show_bug.cgi?id=52903">Bug 52903.</a>
</p>

</p>
<div id="result"></div>
<script>
if (window.testRunner) {
  testRunner.waitUntilDone();
  testRunner.dumpAsText();
}

window.onerror = function(message, url, line, column, error) {
  document.getElementById("result").textContent = "window.onerror message: " + message + " at " + url + ": " + line + ":" + column + " " + error;
  if (window.testRunner)
    testRunner.notifyDone();
  return true;
}
</script>
<script src="http://localhost:8000/security/resources/cross-origin-script.txt">
</script>
</body>
</html>
