X-Git-Url: http://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=WebCore%2Fbindings%2Fv8%2FWorkerScriptController.cpp;h=d418184019e20d76b812f4a265b2a5dbc40a74ac;hp=79322b781160269b8d7070301e3f3d33cfb5f0d6;hb=891df4d8131f31ae7537d138c5ae1e57c31cfe64;hpb=4a793ebc37aa90f2706d56f48a60d47be0fa9720 diff --git a/WebCore/bindings/v8/WorkerScriptController.cpp b/WebCore/bindings/v8/WorkerScriptController.cpp index 79322b7..d418184 100644 --- a/WebCore/bindings/v8/WorkerScriptController.cpp +++ b/WebCore/bindings/v8/WorkerScriptController.cpp @@ -39,6 +39,7 @@ #include "ScriptSourceCode.h" #include "ScriptValue.h" #include "DOMTimer.h" +#include "V8DOMMap.h" #include "WorkerContext.h" #include "WorkerContextExecutionProxy.h" #include "WorkerObjectProxy.h" @@ -67,14 +68,20 @@ ScriptValue WorkerScriptController::evaluate(const ScriptSourceCode& sourceCode) } v8::Local result = m_proxy->evaluate(sourceCode.source(), sourceCode.url().string(), sourceCode.startLine() - 1); - m_workerContext->thread()->workerObjectProxy()->reportPendingActivity(m_workerContext->hasPendingActivity()); + m_workerContext->thread()->workerObjectProxy().reportPendingActivity(m_workerContext->hasPendingActivity()); return ScriptValue(); } -ScriptValue WorkerScriptController::evaluate(const ScriptSourceCode& sourceCode, ScriptValue* /* exception */) +ScriptValue WorkerScriptController::evaluate(const ScriptSourceCode& sourceCode, ScriptValue* exception) { - // FIXME: Need to return an exception. - return evaluate(sourceCode); + v8::TryCatch exceptionCatcher; + ScriptValue result = evaluate(sourceCode); + if (exceptionCatcher.HasCaught()) { + *exception = ScriptValue(exceptionCatcher.Exception()); + throwError(exceptionCatcher.Exception()); + return ScriptValue(); + } else + return result; } void WorkerScriptController::forbidExecution()