haikuwebkit/LayoutTests/userscripts/window-onerror-for-isolated...

69 lines
2.0 KiB
HTML
Raw Permalink Normal View History

2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<p>Test that window.onerror and "error" event listeners from main world are
invoked for uncaught exceptions in user scripts running in isolate worlds as
well as for exceptions in the main world.<a href="https://bugs.webkit.org/show_bug.cgi?id=8519">Bug 8519.</a>
</p>
<div id="console"></div>
<script>
var expectedRecordCount = 12;
var recordCount = 0;
document.getElementById("console").addEventListener("DOMNodeInserted", function(e) {
recordCount++;
if (recordCount === expectedRecordCount && window.testRunner)
testRunner.notifyDone();
2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
}, false);
function log(msg) {
var record = document.createElement("div");
record.innerHTML = msg;
document.getElementById("console").appendChild(record);
}
function lastUrlComponent(url) {
return url ? url.match( /[^\/]+\/?$/ )[0] : url;
}
window.onerror should pass the ErrorEvent's 'error' property as the 5th argument to the event handler https://bugs.webkit.org/show_bug.cgi?id=55092 <rdar://problem/25731279> Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-13 Reviewed by Dean Jackson. LayoutTests/imported/w3c: * web-platform-tests/html/dom/interfaces-expected.txt: Source/WebCore: This includes the actual Error in window.error / ErrorEvent: https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface This is useful for scripts to be able to get an error stack from uncaught exceptions, by checking the error itself. Tests: fast/events/window-onerror17.html http/tests/security/cross-origin-script-error-event-redirected.html http/tests/security/cross-origin-script-error-event.html http/tests/security/script-crossorigin-error-event-information.html http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html userscripts/window-onerror-for-isolated-world-3.html * CMakeLists.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSBindingsAllInOne.cpp: Add new custom error event file. * bindings/js/JSDOMBinding.cpp: (WebCore::reportException): Include the JSC::Exception when reporting exceptions, so the error value is available. * bindings/js/JSErrorEventCustom.cpp: (WebCore::JSErrorEvent::error): Sanitized access to the ErrorEvent's error property to prevent leaking objects across isolated world boundaries. This is like CustomEvent's data property. * bindings/js/JSErrorHandler.cpp: (WebCore::JSErrorHandler::handleEvent): * bindings/js/JSErrorHandler.h: Include the error object as the 4th argument to the window.onerror event handler. * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::sanitizeScriptError): (WebCore::ScriptExecutionContext::reportException): (WebCore::ScriptExecutionContext::dispatchErrorEvent): * dom/ScriptExecutionContext.h: Include the error object in the ErrorEvent constructed when dispatching error events. * dom/ErrorEvent.cpp: (WebCore::ErrorEvent::ErrorEvent): (WebCore::ErrorEvent::sanitizedErrorValue): (WebCore::ErrorEvent::trySerializeError): * dom/ErrorEvent.h: * dom/ErrorEvent.idl: Include an any "error" property on the ErrorEvent, and allow it in initialization. * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::postExceptionToWorkerObject): Within the Worker world, the error is included in the event. When re-dispatching the error on the world object in the world that spawned the Worker the event does not include an error object. This matches other browsers right now, but could be improved to have the same cross world serialization as isolated worlds have with the error data. * dom/CustomEvent.h: Remove unimplemented stale method. LayoutTests: * platform/wk2/TestExpectations: Skip new userscript test on WebKit2 like others. * fast/events/constructors/error-event-constructor-expected.txt: * fast/events/constructors/error-event-constructor.html: Test for the new any "error" initialization property. * fast/events/event-leak-objects-expected.txt: * fast/events/event-leak-objects.html: * fast/events/event-properties-gc-expected.txt: * fast/events/event-properties-gc.html: Like CustomEvent.details, ErrorEvent.error should not leak objects across isolated worlds. * fast/events/window-onerror-exception-in-attr-expected.txt: * fast/events/window-onerror-exception-in-attr.html: * fast/events/window-onerror-syntax-error-in-attr-expected.txt: * fast/events/window-onerror-syntax-error-in-attr.html: * fast/events/window-onerror1-expected.txt: * fast/events/window-onerror1.html: * fast/events/window-onerror10-expected.txt: * fast/events/window-onerror10.html: * fast/events/window-onerror11-expected.txt: * fast/events/window-onerror11.html: * fast/events/window-onerror12-expected.txt: * fast/events/window-onerror12.html: * fast/events/window-onerror13.html: * fast/events/window-onerror14.html: * fast/events/window-onerror16.html: * fast/events/window-onerror17-expected.txt: Added. * fast/events/window-onerror17.html: Copied from LayoutTests/fast/events/window-onerror12.html. * fast/events/window-onerror2-expected.txt: * fast/events/window-onerror2.html: * fast/events/window-onerror3-expected.txt: * fast/events/window-onerror3.html: * fast/events/window-onerror4-expected.txt: * fast/events/window-onerror4.html: * fast/events/window-onerror5-expected.txt: * fast/events/window-onerror5.html: * fast/events/window-onerror6-expected.txt: * fast/events/window-onerror6.html: * fast/events/window-onerror7-expected.txt: * fast/events/window-onerror7.html: * fast/events/window-onerror8-expected.txt: * fast/events/window-onerror8.html: * fast/events/window-onerror9-expected.txt: * fast/events/window-onerror9.html: Include output for the column number and error object where possible. * fast/files/resources/setup-for-read-common.js: * fast/files/workers/worker-apply-blob-url-to-xhr.html: * fast/workers/resources/worker-error-in-handling-script-error.js: * fast/workers/resources/worker-script-error-bubbled.js: * fast/workers/resources/worker-script-error-handled.js: * fast/workers/resources/worker-script-error.js: * fast/workers/worker-script-error-expected.txt: Test "onerror" within Workers, and the "error" event on the Worker from the spawning context. * http/tests/security/cross-origin-script-error-event-expected.txt: Added. * http/tests/security/cross-origin-script-error-event-redirected-expected.txt: Added. * http/tests/security/cross-origin-script-error-event-redirected.html: Added. * http/tests/security/cross-origin-script-error-event.html: Added. * http/tests/security/cross-origin-script-window-onerror-expected.txt: * http/tests/security/cross-origin-script-window-onerror-redirected-expected.txt: * http/tests/security/cross-origin-script-window-onerror-redirected.html: * http/tests/security/cross-origin-script-window-onerror.html: * http/tests/security/script-crossorigin-error-event-information-expected.txt: Added. * http/tests/security/script-crossorigin-error-event-information.html: Added. * http/tests/security/script-crossorigin-onerror-information-expected.txt: * http/tests/security/script-crossorigin-onerror-information.html: * http/tests/security/script-no-crossorigin-error-event-should-be-sanitized-expected.txt: Added. * http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html: Copied from LayoutTests/http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html. * http/tests/security/script-no-crossorigin-onerror-should-be-sanitized-expected.txt: * http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html: * http/tests/security/window-onerror-exception-in-iframe-expected.txt: * http/tests/security/window-onerror-exception-in-iframe.html: * http/tests/workers/worker-importScriptsOnError-expected.txt: * js/dom/exception-line-number-expected.txt: * js/dom/script-tests/exception-line-number.js: (window.onerror): * userscripts/window-onerror-for-isolated-world-1-expected.txt: * userscripts/window-onerror-for-isolated-world-1.html: * userscripts/window-onerror-for-isolated-world-2-expected.txt: * userscripts/window-onerror-for-isolated-world-2.html: * userscripts/window-onerror-for-isolated-world-3-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-3.html: Added. Add an explicit test for error objects crossing isolated world boundaries. In the Isolated World case, serializable values are cloned, but unserializable values cause the error object to return to null to avoid leaking across worlds. Canonical link: https://commits.webkit.org/176802@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202023 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-14 03:28:10 +00:00
window.onerror = function(msg, url, line, column, error)
2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
{
window.onerror should pass the ErrorEvent's 'error' property as the 5th argument to the event handler https://bugs.webkit.org/show_bug.cgi?id=55092 <rdar://problem/25731279> Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-13 Reviewed by Dean Jackson. LayoutTests/imported/w3c: * web-platform-tests/html/dom/interfaces-expected.txt: Source/WebCore: This includes the actual Error in window.error / ErrorEvent: https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface This is useful for scripts to be able to get an error stack from uncaught exceptions, by checking the error itself. Tests: fast/events/window-onerror17.html http/tests/security/cross-origin-script-error-event-redirected.html http/tests/security/cross-origin-script-error-event.html http/tests/security/script-crossorigin-error-event-information.html http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html userscripts/window-onerror-for-isolated-world-3.html * CMakeLists.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSBindingsAllInOne.cpp: Add new custom error event file. * bindings/js/JSDOMBinding.cpp: (WebCore::reportException): Include the JSC::Exception when reporting exceptions, so the error value is available. * bindings/js/JSErrorEventCustom.cpp: (WebCore::JSErrorEvent::error): Sanitized access to the ErrorEvent's error property to prevent leaking objects across isolated world boundaries. This is like CustomEvent's data property. * bindings/js/JSErrorHandler.cpp: (WebCore::JSErrorHandler::handleEvent): * bindings/js/JSErrorHandler.h: Include the error object as the 4th argument to the window.onerror event handler. * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::sanitizeScriptError): (WebCore::ScriptExecutionContext::reportException): (WebCore::ScriptExecutionContext::dispatchErrorEvent): * dom/ScriptExecutionContext.h: Include the error object in the ErrorEvent constructed when dispatching error events. * dom/ErrorEvent.cpp: (WebCore::ErrorEvent::ErrorEvent): (WebCore::ErrorEvent::sanitizedErrorValue): (WebCore::ErrorEvent::trySerializeError): * dom/ErrorEvent.h: * dom/ErrorEvent.idl: Include an any "error" property on the ErrorEvent, and allow it in initialization. * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::postExceptionToWorkerObject): Within the Worker world, the error is included in the event. When re-dispatching the error on the world object in the world that spawned the Worker the event does not include an error object. This matches other browsers right now, but could be improved to have the same cross world serialization as isolated worlds have with the error data. * dom/CustomEvent.h: Remove unimplemented stale method. LayoutTests: * platform/wk2/TestExpectations: Skip new userscript test on WebKit2 like others. * fast/events/constructors/error-event-constructor-expected.txt: * fast/events/constructors/error-event-constructor.html: Test for the new any "error" initialization property. * fast/events/event-leak-objects-expected.txt: * fast/events/event-leak-objects.html: * fast/events/event-properties-gc-expected.txt: * fast/events/event-properties-gc.html: Like CustomEvent.details, ErrorEvent.error should not leak objects across isolated worlds. * fast/events/window-onerror-exception-in-attr-expected.txt: * fast/events/window-onerror-exception-in-attr.html: * fast/events/window-onerror-syntax-error-in-attr-expected.txt: * fast/events/window-onerror-syntax-error-in-attr.html: * fast/events/window-onerror1-expected.txt: * fast/events/window-onerror1.html: * fast/events/window-onerror10-expected.txt: * fast/events/window-onerror10.html: * fast/events/window-onerror11-expected.txt: * fast/events/window-onerror11.html: * fast/events/window-onerror12-expected.txt: * fast/events/window-onerror12.html: * fast/events/window-onerror13.html: * fast/events/window-onerror14.html: * fast/events/window-onerror16.html: * fast/events/window-onerror17-expected.txt: Added. * fast/events/window-onerror17.html: Copied from LayoutTests/fast/events/window-onerror12.html. * fast/events/window-onerror2-expected.txt: * fast/events/window-onerror2.html: * fast/events/window-onerror3-expected.txt: * fast/events/window-onerror3.html: * fast/events/window-onerror4-expected.txt: * fast/events/window-onerror4.html: * fast/events/window-onerror5-expected.txt: * fast/events/window-onerror5.html: * fast/events/window-onerror6-expected.txt: * fast/events/window-onerror6.html: * fast/events/window-onerror7-expected.txt: * fast/events/window-onerror7.html: * fast/events/window-onerror8-expected.txt: * fast/events/window-onerror8.html: * fast/events/window-onerror9-expected.txt: * fast/events/window-onerror9.html: Include output for the column number and error object where possible. * fast/files/resources/setup-for-read-common.js: * fast/files/workers/worker-apply-blob-url-to-xhr.html: * fast/workers/resources/worker-error-in-handling-script-error.js: * fast/workers/resources/worker-script-error-bubbled.js: * fast/workers/resources/worker-script-error-handled.js: * fast/workers/resources/worker-script-error.js: * fast/workers/worker-script-error-expected.txt: Test "onerror" within Workers, and the "error" event on the Worker from the spawning context. * http/tests/security/cross-origin-script-error-event-expected.txt: Added. * http/tests/security/cross-origin-script-error-event-redirected-expected.txt: Added. * http/tests/security/cross-origin-script-error-event-redirected.html: Added. * http/tests/security/cross-origin-script-error-event.html: Added. * http/tests/security/cross-origin-script-window-onerror-expected.txt: * http/tests/security/cross-origin-script-window-onerror-redirected-expected.txt: * http/tests/security/cross-origin-script-window-onerror-redirected.html: * http/tests/security/cross-origin-script-window-onerror.html: * http/tests/security/script-crossorigin-error-event-information-expected.txt: Added. * http/tests/security/script-crossorigin-error-event-information.html: Added. * http/tests/security/script-crossorigin-onerror-information-expected.txt: * http/tests/security/script-crossorigin-onerror-information.html: * http/tests/security/script-no-crossorigin-error-event-should-be-sanitized-expected.txt: Added. * http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html: Copied from LayoutTests/http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html. * http/tests/security/script-no-crossorigin-onerror-should-be-sanitized-expected.txt: * http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html: * http/tests/security/window-onerror-exception-in-iframe-expected.txt: * http/tests/security/window-onerror-exception-in-iframe.html: * http/tests/workers/worker-importScriptsOnError-expected.txt: * js/dom/exception-line-number-expected.txt: * js/dom/script-tests/exception-line-number.js: (window.onerror): * userscripts/window-onerror-for-isolated-world-1-expected.txt: * userscripts/window-onerror-for-isolated-world-1.html: * userscripts/window-onerror-for-isolated-world-2-expected.txt: * userscripts/window-onerror-for-isolated-world-2.html: * userscripts/window-onerror-for-isolated-world-3-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-3.html: Added. Add an explicit test for error objects crossing isolated world boundaries. In the Isolated World case, serializable values are cloned, but unserializable values cause the error object to return to null to avoid leaking across worlds. Canonical link: https://commits.webkit.org/176802@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202023 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-14 03:28:10 +00:00
log("Main world window.onerror: " + msg + " at " + lastUrlComponent(url) + ":" + line + ":" + column + " " + error);
return true;
2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
}
window.addEventListener("error", function(e)
{
var url = lastUrlComponent(e.filename);
window.onerror should pass the ErrorEvent's 'error' property as the 5th argument to the event handler https://bugs.webkit.org/show_bug.cgi?id=55092 <rdar://problem/25731279> Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-06-13 Reviewed by Dean Jackson. LayoutTests/imported/w3c: * web-platform-tests/html/dom/interfaces-expected.txt: Source/WebCore: This includes the actual Error in window.error / ErrorEvent: https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface This is useful for scripts to be able to get an error stack from uncaught exceptions, by checking the error itself. Tests: fast/events/window-onerror17.html http/tests/security/cross-origin-script-error-event-redirected.html http/tests/security/cross-origin-script-error-event.html http/tests/security/script-crossorigin-error-event-information.html http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html userscripts/window-onerror-for-isolated-world-3.html * CMakeLists.txt: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSBindingsAllInOne.cpp: Add new custom error event file. * bindings/js/JSDOMBinding.cpp: (WebCore::reportException): Include the JSC::Exception when reporting exceptions, so the error value is available. * bindings/js/JSErrorEventCustom.cpp: (WebCore::JSErrorEvent::error): Sanitized access to the ErrorEvent's error property to prevent leaking objects across isolated world boundaries. This is like CustomEvent's data property. * bindings/js/JSErrorHandler.cpp: (WebCore::JSErrorHandler::handleEvent): * bindings/js/JSErrorHandler.h: Include the error object as the 4th argument to the window.onerror event handler. * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::sanitizeScriptError): (WebCore::ScriptExecutionContext::reportException): (WebCore::ScriptExecutionContext::dispatchErrorEvent): * dom/ScriptExecutionContext.h: Include the error object in the ErrorEvent constructed when dispatching error events. * dom/ErrorEvent.cpp: (WebCore::ErrorEvent::ErrorEvent): (WebCore::ErrorEvent::sanitizedErrorValue): (WebCore::ErrorEvent::trySerializeError): * dom/ErrorEvent.h: * dom/ErrorEvent.idl: Include an any "error" property on the ErrorEvent, and allow it in initialization. * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::postExceptionToWorkerObject): Within the Worker world, the error is included in the event. When re-dispatching the error on the world object in the world that spawned the Worker the event does not include an error object. This matches other browsers right now, but could be improved to have the same cross world serialization as isolated worlds have with the error data. * dom/CustomEvent.h: Remove unimplemented stale method. LayoutTests: * platform/wk2/TestExpectations: Skip new userscript test on WebKit2 like others. * fast/events/constructors/error-event-constructor-expected.txt: * fast/events/constructors/error-event-constructor.html: Test for the new any "error" initialization property. * fast/events/event-leak-objects-expected.txt: * fast/events/event-leak-objects.html: * fast/events/event-properties-gc-expected.txt: * fast/events/event-properties-gc.html: Like CustomEvent.details, ErrorEvent.error should not leak objects across isolated worlds. * fast/events/window-onerror-exception-in-attr-expected.txt: * fast/events/window-onerror-exception-in-attr.html: * fast/events/window-onerror-syntax-error-in-attr-expected.txt: * fast/events/window-onerror-syntax-error-in-attr.html: * fast/events/window-onerror1-expected.txt: * fast/events/window-onerror1.html: * fast/events/window-onerror10-expected.txt: * fast/events/window-onerror10.html: * fast/events/window-onerror11-expected.txt: * fast/events/window-onerror11.html: * fast/events/window-onerror12-expected.txt: * fast/events/window-onerror12.html: * fast/events/window-onerror13.html: * fast/events/window-onerror14.html: * fast/events/window-onerror16.html: * fast/events/window-onerror17-expected.txt: Added. * fast/events/window-onerror17.html: Copied from LayoutTests/fast/events/window-onerror12.html. * fast/events/window-onerror2-expected.txt: * fast/events/window-onerror2.html: * fast/events/window-onerror3-expected.txt: * fast/events/window-onerror3.html: * fast/events/window-onerror4-expected.txt: * fast/events/window-onerror4.html: * fast/events/window-onerror5-expected.txt: * fast/events/window-onerror5.html: * fast/events/window-onerror6-expected.txt: * fast/events/window-onerror6.html: * fast/events/window-onerror7-expected.txt: * fast/events/window-onerror7.html: * fast/events/window-onerror8-expected.txt: * fast/events/window-onerror8.html: * fast/events/window-onerror9-expected.txt: * fast/events/window-onerror9.html: Include output for the column number and error object where possible. * fast/files/resources/setup-for-read-common.js: * fast/files/workers/worker-apply-blob-url-to-xhr.html: * fast/workers/resources/worker-error-in-handling-script-error.js: * fast/workers/resources/worker-script-error-bubbled.js: * fast/workers/resources/worker-script-error-handled.js: * fast/workers/resources/worker-script-error.js: * fast/workers/worker-script-error-expected.txt: Test "onerror" within Workers, and the "error" event on the Worker from the spawning context. * http/tests/security/cross-origin-script-error-event-expected.txt: Added. * http/tests/security/cross-origin-script-error-event-redirected-expected.txt: Added. * http/tests/security/cross-origin-script-error-event-redirected.html: Added. * http/tests/security/cross-origin-script-error-event.html: Added. * http/tests/security/cross-origin-script-window-onerror-expected.txt: * http/tests/security/cross-origin-script-window-onerror-redirected-expected.txt: * http/tests/security/cross-origin-script-window-onerror-redirected.html: * http/tests/security/cross-origin-script-window-onerror.html: * http/tests/security/script-crossorigin-error-event-information-expected.txt: Added. * http/tests/security/script-crossorigin-error-event-information.html: Added. * http/tests/security/script-crossorigin-onerror-information-expected.txt: * http/tests/security/script-crossorigin-onerror-information.html: * http/tests/security/script-no-crossorigin-error-event-should-be-sanitized-expected.txt: Added. * http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html: Copied from LayoutTests/http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html. * http/tests/security/script-no-crossorigin-onerror-should-be-sanitized-expected.txt: * http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html: * http/tests/security/window-onerror-exception-in-iframe-expected.txt: * http/tests/security/window-onerror-exception-in-iframe.html: * http/tests/workers/worker-importScriptsOnError-expected.txt: * js/dom/exception-line-number-expected.txt: * js/dom/script-tests/exception-line-number.js: (window.onerror): * userscripts/window-onerror-for-isolated-world-1-expected.txt: * userscripts/window-onerror-for-isolated-world-1.html: * userscripts/window-onerror-for-isolated-world-2-expected.txt: * userscripts/window-onerror-for-isolated-world-2.html: * userscripts/window-onerror-for-isolated-world-3-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-3.html: Added. Add an explicit test for error objects crossing isolated world boundaries. In the Isolated World case, serializable values are cloned, but unserializable values cause the error object to return to null to avoid leaking across worlds. Canonical link: https://commits.webkit.org/176802@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202023 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2016-06-14 03:28:10 +00:00
log("Main world error event listener: " + e.message + " at " + url + ":" + e.lineno + ":" + e.colno + " " + e.error);
e.preventDefault();
2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
}, false);
var exceptions = function(isolatedWorld)
{
window.addEventListener("load", function(e) {
// Do the following call from load listener to make sure error in the setTimeout callback always happens after the error in this listener.
setTimeout(function() {
throw new Error("Error in " + isolatedWorld + " setTimeout callback.");
}, 0);
2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
throw new Error("Error in " + isolatedWorld + " load handler.");
}, false);
throw new Error("Error in "+ isolatedWorld + " inline script.");
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
testRunner.addUserScript("(" + exceptions + ")('user script')", false, true);
2010-12-27 yury semikhatsky <yurys@chromium.org> reviewed by pavel feldman. webcore doesn't fire window.onerror event when uncaught javascript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 uncaught exceptions are propagated to window.onerror hander if one is present. the handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. it was decided to dispatch errorevent to all listeners/handlers no matter if they were created in the same isolated world where the exception occured or not. tests: fast/events/window-onerror1.html fast/events/window-onerror10.html fast/events/window-onerror11.html fast/events/window-onerror12.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-onerror7.html fast/events/window-onerror8.html fast/events/window-onerror9.html http/tests/security/window-onerror-exception-in-iframe.html userscripts/window-onerror-for-isolated-world-1.html userscripts/window-onerror-for-isolated-world-2.html * android.jscbindings.mk: * cmakelists.txt: * gnumakefile.am: * webcore.gypi: * webcore.order: * webcore.pro: * webcore.vcproj/webcore.vcproj: * webcore.xcodeproj/project.pbxproj: * bindings/js/jsbindingsallinone.cpp: * bindings/js/jsdombinding.cpp: (webcore::reportexception): * bindings/js/jserrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.cpp. (webcore::jserrorhandler::jserrorhandler): (webcore::jserrorhandler::~jserrorhandler): (webcore::jserrorhandler::handleevent): * bindings/js/jserrorhandler.h: copied from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::jserrorhandler::create): (webcore::createjserrorhandler): * bindings/js/jseventlistener.h: * bindings/scripts/codegeneratorjs.pm: * bindings/scripts/codegeneratorv8.pm: * bindings/v8/v8consolemessage.cpp: (webcore::v8consolemessage::dispatchnow): (webcore::v8consolemessage::handler): the method was changed to use generic webcore exception reporting mechanism which is also used by jsc bindings. * bindings/v8/v8consolemessage.h: * bindings/v8/v8eventlistener.h: * bindings/v8/v8windowerrorhandler.cpp: renamed from webcore/bindings/js/jsworkercontexterrorhandler.h. (webcore::v8windowerrorhandler::v8windowerrorhandler): (webcore::v8windowerrorhandler::calllistenerfunction): * bindings/v8/v8windowerrorhandler.h: copied from webcore/dom/errorevent.cpp. (webcore::v8windowerrorhandler::create): * bindings/v8/workercontextexecutionproxy.cpp: (webcore::v8messagehandler): * bindings/v8/workerscriptcontroller.cpp: (webcore::workerscriptcontroller::evaluate): * dom/document.cpp: (webcore::document::erroreventtarget): (webcore::document::logexceptiontoconsole): (webcore::document::addmessage): * dom/document.h: * dom/errorevent.cpp: * dom/errorevent.h: * dom/event.cpp: (webcore::event::iserrorevent): * dom/event.h: * dom/scriptexecutioncontext.cpp: (webcore::scriptexecutioncontext::pendingexception::pendingexception): (webcore::scriptexecutioncontext::scriptexecutioncontext): (webcore::scriptexecutioncontext::reportexception): this method is not virtual anymore to ensure that error event dispatching algorithm is the same in workercontext and in document. (webcore::scriptexecutioncontext::dispatcherrorevent): * dom/scriptexecutioncontext.h: * websockets/websocket.cpp: (webcore::websocket::connect): * websockets/websocketchannel.cpp: (webcore::websocketchannel::didopen): (webcore::websocketchannel::didfail): (webcore::websocketchannel::appendtobuffer): * websockets/websockethandshake.cpp: (webcore::websockethandshake::readserverhandshake): (webcore::websockethandshake::readstatusline): (webcore::websockethandshake::readhttpheaders): (webcore::websockethandshake::checkresponseheaders): * workers/defaultsharedworkerrepository.cpp: (webcore::postexceptiontask): (webcore::postconsolemessagetask): * workers/workercontext.cpp: (webcore::workercontext::workercontext): (webcore::workercontext::erroreventtarget): (webcore::workercontext::logexceptiontoconsole): (webcore::workercontext::addmessage): * workers/workercontext.h: * workers/workermessagingproxy.cpp: (webcore::workerexceptiontask::performtask): (webcore::postconsolemessagetask): * xml/xmlhttprequest.cpp: (webcore::reportunsafeusage): 2010-12-27 Yury Semikhatsky <yurys@chromium.org> Reviewed by Pavel Feldman. WebCore doesn't fire window.onerror event when uncaught JavaScript exceptions are thrown https://bugs.webkit.org/show_bug.cgi?id=8519 Uncaught exceptions are propagated to window.onerror hander if one is present. The handler is expected to be a function accepting three arguments: error message, resource url and line number where the exception occured. * fast/events/resources/window-onerror.js: Added. (throwException): * fast/events/window-onerror1-expected.txt: Added. * fast/events/window-onerror1.html: Added. * fast/events/window-onerror10-expected.txt: Added. * fast/events/window-onerror10.html: Added. * fast/events/window-onerror11-expected.txt: Added. * fast/events/window-onerror11.html: Added. * fast/events/window-onerror12-expected.txt: Added. * fast/events/window-onerror12.html: Added. * fast/events/window-onerror2-expected.txt: Added. * fast/events/window-onerror2.html: Added. * fast/events/window-onerror3-expected.txt: Added. * fast/events/window-onerror3.html: Added. * fast/events/window-onerror4-expected.txt: Added. * fast/events/window-onerror4.html: Added. * fast/events/window-onerror5-expected.txt: Added. * fast/events/window-onerror5.html: Added. * fast/events/window-onerror6-expected.txt: Added. * fast/events/window-onerror6.html: Added. * fast/events/window-onerror7-expected.txt: Added. * fast/events/window-onerror7.html: Added. * fast/events/window-onerror8-expected.txt: Added. * fast/events/window-onerror8.html: Added. * fast/events/window-onerror9-expected.txt: Added. * fast/events/window-onerror9.html: Added. * fast/workers/worker-script-error-expected.txt: * http/tests/security/resources/onerror-iframe.html: Added. * http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * http/tests/security/window-onerror-exception-in-iframe.html: Added. * platform/chromium-win/fast/workers/worker-script-error-expected.txt: * platform/chromium/fast/events/window-onerror1-expected.txt: Added. * platform/chromium/fast/events/window-onerror10-expected.txt: Added. * platform/chromium/fast/events/window-onerror11-expected.txt: Added. * platform/chromium/fast/events/window-onerror2-expected.txt: Added. * platform/chromium/fast/events/window-onerror3-expected.txt: Added. * platform/chromium/fast/events/window-onerror4-expected.txt: Added. * platform/chromium/fast/events/window-onerror5-expected.txt: Added. * platform/chromium/fast/events/window-onerror6-expected.txt: Added. * platform/chromium/fast/events/window-onerror7-expected.txt: Added. * platform/chromium/fast/events/window-onerror8-expected.txt: Added. * platform/chromium/fast/events/window-onerror9-expected.txt: Added. * platform/chromium/http/tests/security/window-onerror-exception-in-iframe-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * platform/chromium/userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * platform/gtk/Skipped: * userscripts/window-onerror-for-isolated-world-1-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-1.html: Added. * userscripts/window-onerror-for-isolated-world-2-expected.txt: Added. * userscripts/window-onerror-for-isolated-world-2.html: Added. Canonical link: https://commits.webkit.org/66454@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76216 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-01-20 09:28:54 +00:00
}
exceptions("main world");
</script>
</body>
</html>