Title: [94061] trunk
Revision
94061
Author
[email protected]
Date
2011-08-30 02:28:09 -0700 (Tue, 30 Aug 2011)

Log Message

Return value of window.onerror has inverted semantics
https://bugs.webkit.org/show_bug.cgi?id=67119

Source/WebCore:

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):

LayoutTests:

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:

Modified Paths

Added Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to