Diff
Modified: trunk/LayoutTests/ChangeLog (94060 => 94061)
--- trunk/LayoutTests/ChangeLog 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/ChangeLog 2011-08-30 09:28:09 UTC (rev 94061)
@@ -1,3 +1,28 @@
+2011-08-29 Yury Semikhatsky <[email protected]>
+
+ Return value of window.onerror has inverted semantics
+ https://bugs.webkit.org/show_bug.cgi?id=67119
+
+ Reviewed by Darin Adler.
+
+ * fast/events/window-onerror1.html:
+ * fast/events/window-onerror11.html:
+ * fast/events/window-onerror12.html:
+ * fast/events/window-onerror13-expected.txt: Added.
+ * fast/events/window-onerror13.html: Copied from LayoutTests/fast/events/window-onerror11.html.
+ * fast/events/window-onerror2.html:
+ * fast/events/window-onerror3.html:
+ * fast/events/window-onerror4.html:
+ * fast/events/window-onerror5.html:
+ * fast/events/window-onerror6.html:
+ * fast/events/window-onerror8.html:
+ * fast/events/window-onerror9.html:
+ * fast/workers/resources/worker-script-error-bubbled.js:
+ (onerror):
+ * fast/workers/resources/worker-script-error-handled.js:
+ (onerror):
+ * http/tests/security/window-onerror-exception-in-iframe.html:
+
2011-08-30 Takashi Toyoshima <[email protected]>
[WebSocket] Prevent unnecessary pywebsocket warnings on layout tests.
Modified: trunk/LayoutTests/fast/events/window-onerror1.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror1.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror1.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -20,7 +20,7 @@
window._onerror_ = function (error, url, line) {
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
print("PASS: caught global error: " + error + " at " + url + ":" + line, "green");
- return false;
+ return true;
};
hahaha_good_luck_finding_me(); // caught by window.onerror
}
Modified: trunk/LayoutTests/fast/events/window-onerror11.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror11.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror11.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -18,7 +18,7 @@
{
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
- return false;
+ return true;
}
throwException();
Modified: trunk/LayoutTests/fast/events/window-onerror12.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror12.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror12.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -20,7 +20,7 @@
log("msg: " + msg);
log("url: " + url);
log("line: " + line);
- return false;
+ return true;
}
var evt = document.createEvent("Event");
Added: trunk/LayoutTests/fast/events/window-onerror13-expected.txt (0 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror13-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/window-onerror13-expected.txt 2011-08-30 09:28:09 UTC (rev 94061)
@@ -0,0 +1,6 @@
+CONSOLE MESSAGE: line 0: An Error
+Test that error is treated as not handled when window.onerror return value is not 'true'. Bug 67119.
+
+Uncaught error should be printed in console when window.onerror returns not true.
+DONE.
+
Property changes on: trunk/LayoutTests/fast/events/window-onerror13-expected.txt
___________________________________________________________________
Added: svn:eol-style
Copied: trunk/LayoutTests/fast/events/window-onerror13.html (from rev 94060, trunk/LayoutTests/fast/events/window-onerror11.html) (0 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror13.html (rev 0)
+++ trunk/LayoutTests/fast/events/window-onerror13.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -0,0 +1,27 @@
+<html>
+<head>
+<script src=""
+</script>
+</head>
+<body>
+<p>Test that error is treated as not handled when window.onerror return
+value is not 'true'. <a href="" 67119</a>.</p>
+<div id="console"></div>
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+function log(msg) {
+ document.getElementById("console").innerHTML += msg + "<br>";
+}
+
+window._onerror_ = function(msg, url, line)
+{
+ log("Uncaught error should be printed in console when window.onerror returns not true.");
+ log("DONE.");
+}
+
+throw "An Error";
+</script>
+</body>
+</html>
Modified: trunk/LayoutTests/fast/events/window-onerror2.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror2.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror2.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -21,7 +21,7 @@
if (++unhandledErrorCount === 3 && window.layoutTestController)
layoutTestController.notifyDone();
- return false;
+ return true;
}
function delayedThrowException()
Modified: trunk/LayoutTests/fast/events/window-onerror3.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror3.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror3.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -11,7 +11,7 @@
window._onerror_ = function (error, url, line) {
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
log("Error caught successfully: " + error + "\nFile: " + url + "\nLine: " + line)
- return false;
+ return true;
};
unknownObject.unknownProperty++;
}
Modified: trunk/LayoutTests/fast/events/window-onerror4.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror4.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror4.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -11,7 +11,7 @@
window._onerror_ = function (error, url, line) {
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
log("Error caught successfully: " + error + "\nFile: " + url + "\nLine: " + line)
- return false;
+ return true;
};
eval("1=2");
}
Modified: trunk/LayoutTests/fast/events/window-onerror5.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror5.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror5.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -11,7 +11,7 @@
window._onerror_ = function (error, url, line) {
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
log("Error caught successfully: " + error + "\nFile: " + url + "\nLine: " + line)
- return false;
+ return true;
};
eval("a(");
}
Modified: trunk/LayoutTests/fast/events/window-onerror6.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror6.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror6.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -14,7 +14,7 @@
{
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
- return false;
+ return true;
}
</script>
<script>
Modified: trunk/LayoutTests/fast/events/window-onerror8.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror8.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror8.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -18,7 +18,7 @@
log("PASSED: this === window");
else
log("FAILED: this === window");
- return false;
+ return true;
}
throw 2010;
Modified: trunk/LayoutTests/fast/events/window-onerror9.html (94060 => 94061)
--- trunk/LayoutTests/fast/events/window-onerror9.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/events/window-onerror9.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -25,7 +25,7 @@
log("window.event.lineno = " + window.event.lineno);
if (window.layoutTestController)
layoutTestController.notifyDone();
- return false;
+ return true;
}
throw new Error(2010);
Modified: trunk/LayoutTests/fast/workers/resources/worker-script-error-bubbled.js (94060 => 94061)
--- trunk/LayoutTests/fast/workers/resources/worker-script-error-bubbled.js 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/workers/resources/worker-script-error-bubbled.js 2011-08-30 09:28:09 UTC (rev 94061)
@@ -4,7 +4,7 @@
postMessage("FAIL: Bad location. Actual: " + url + " Expected: " + location.href);
splitUrl = url.split('/');
postMessage("PASS: onerror in worker context invoked for a script that has script error '" + message + "' at line " + lineno + " in " + splitUrl[splitUrl.length - 1]);
- return true;
+ return false;
}
foo.bar = 0;
Modified: trunk/LayoutTests/fast/workers/resources/worker-script-error-handled.js (94060 => 94061)
--- trunk/LayoutTests/fast/workers/resources/worker-script-error-handled.js 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/fast/workers/resources/worker-script-error-handled.js 2011-08-30 09:28:09 UTC (rev 94061)
@@ -1,7 +1,7 @@
_onerror_ = function(message, url, lineno)
{
postMessage("onerror invoked for a script that has script error '" + message + "' at line " + lineno);
- return false;
+ return true;
}
foo.bar = 0;
Modified: trunk/LayoutTests/http/tests/security/window-onerror-exception-in-iframe.html (94060 => 94061)
--- trunk/LayoutTests/http/tests/security/window-onerror-exception-in-iframe.html 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/LayoutTests/http/tests/security/window-onerror-exception-in-iframe.html 2011-08-30 09:28:09 UTC (rev 94061)
@@ -17,7 +17,7 @@
{
url = "" ? url.match( /[^\/]+\/?$/ )[0] : url;
log("Main frame window.onerror: " + msg + " at " + url + ":" + line);
- return false;
+ return true;
}
function receiveMessage(event) {
Modified: trunk/Source/WebCore/ChangeLog (94060 => 94061)
--- trunk/Source/WebCore/ChangeLog 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/Source/WebCore/ChangeLog 2011-08-30 09:28:09 UTC (rev 94061)
@@ -1,3 +1,21 @@
+2011-08-29 Yury Semikhatsky <[email protected]>
+
+ Return value of window.onerror has inverted semantics
+ https://bugs.webkit.org/show_bug.cgi?id=67119
+
+ Error is now treated as handled only when window.onerror function returns true.
+
+ Reviewed by Darin Adler.
+
+ Test: fast/events/window-onerror13.html
+
+ * bindings/js/JSErrorHandler.cpp:
+ (WebCore::JSErrorHandler::handleEvent):
+ * bindings/v8/V8WindowErrorHandler.cpp:
+ (WebCore::V8WindowErrorHandler::callListenerFunction):
+ * bindings/v8/V8WorkerContextErrorHandler.cpp:
+ (WebCore::V8WorkerContextErrorHandler::callListenerFunction):
+
2011-08-29 Ryosuke Niwa <[email protected]>
Touch Internals.cpp in an attempt to fix GTK+ build.
Modified: trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp (94060 => 94061)
--- trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp 2011-08-30 09:28:09 UTC (rev 94061)
@@ -102,7 +102,7 @@
reportCurrentException(exec);
else {
bool retvalbool;
- if (returnValue.getBoolean(retvalbool) && !retvalbool)
+ if (returnValue.getBoolean(retvalbool) && retvalbool)
event->preventDefault();
}
}
Modified: trunk/Source/WebCore/bindings/v8/V8WindowErrorHandler.cpp (94060 => 94061)
--- trunk/Source/WebCore/bindings/v8/V8WindowErrorHandler.cpp 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/Source/WebCore/bindings/v8/V8WindowErrorHandler.cpp 2011-08-30 09:28:09 UTC (rev 94061)
@@ -57,7 +57,7 @@
v8::TryCatch tryCatch;
tryCatch.SetVerbose(true);
returnValue = callFunction->Call(thisValue, 3, parameters);
- if (!tryCatch.HasCaught() && !returnValue.IsEmpty() && returnValue->IsBoolean() && !returnValue->BooleanValue())
+ if (!tryCatch.HasCaught() && !returnValue.IsEmpty() && returnValue->IsBoolean() && returnValue->BooleanValue())
event->preventDefault();
}
return returnValue;
Modified: trunk/Source/WebCore/bindings/v8/V8WorkerContextErrorHandler.cpp (94060 => 94061)
--- trunk/Source/WebCore/bindings/v8/V8WorkerContextErrorHandler.cpp 2011-08-30 09:09:34 UTC (rev 94060)
+++ trunk/Source/WebCore/bindings/v8/V8WorkerContextErrorHandler.cpp 2011-08-30 09:28:09 UTC (rev 94061)
@@ -55,7 +55,7 @@
v8::Local<v8::Object> thisValue = v8::Context::GetCurrent()->Global();
v8::Handle<v8::Value> parameters[3] = { v8String(errorEvent->message()), v8String(errorEvent->filename()), v8::Integer::New(errorEvent->lineno()) };
returnValue = callFunction->Call(thisValue, 3, parameters);
- if (!returnValue.IsEmpty() && returnValue->IsBoolean() && !returnValue->BooleanValue())
+ if (!returnValue.IsEmpty() && returnValue->IsBoolean() && returnValue->BooleanValue())
event->preventDefault();
}
return returnValue;