<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) {
  document.getElementById("result").textContent = "window.onerror message: " + message + " at " + url + ": " + line;
  if (window.testRunner)
    testRunner.notifyDone();
  return true;
}
</script>
<script src="/resources/redirect.php?url=http://localhost:8000/security/resources/cross-origin-script.txt">
</script>
</body>
</html>
