<html>
<body>
<p>
Test that window.onerror won't reveal any potentially sensitive script content if the latter is loaded from a different domain after a redirect. 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>
<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="/resources/redirect.py?url=http://localhost:8000/security/resources/cross-origin-script.txt">
</script>
</body>
</html>
