| Index: Source/core/inspector/InspectorDebuggerAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorDebuggerAgent.cpp b/Source/core/inspector/InspectorDebuggerAgent.cpp
|
| index 17e182c41cf6ba0b9334e977160760bcc9d9c131..bec67a55aaf5169e35ce4a683fed9150dd4fec60 100644
|
| --- a/Source/core/inspector/InspectorDebuggerAgent.cpp
|
| +++ b/Source/core/inspector/InspectorDebuggerAgent.cpp
|
| @@ -50,6 +50,7 @@
|
| using WebCore::TypeBuilder::Array;
|
| using WebCore::TypeBuilder::Debugger::BreakpointId;
|
| using WebCore::TypeBuilder::Debugger::CallFrame;
|
| +using WebCore::TypeBuilder::Debugger::ExceptionDetails;
|
| using WebCore::TypeBuilder::Debugger::FunctionDetails;
|
| using WebCore::TypeBuilder::Debugger::ScriptId;
|
| using WebCore::TypeBuilder::Debugger::StackTrace;
|
| @@ -888,7 +889,7 @@ void InspectorDebuggerAgent::evaluateOnCallFrame(ErrorString* errorString, const
|
| }
|
| }
|
|
|
| -void InspectorDebuggerAgent::compileScript(ErrorString* errorString, const String& expression, const String& sourceURL, const int* executionContextId, TypeBuilder::OptOutput<ScriptId>* scriptId, TypeBuilder::OptOutput<String>* syntaxErrorMessage)
|
| +void InspectorDebuggerAgent::compileScript(ErrorString* errorString, const String& expression, const String& sourceURL, const int* executionContextId, TypeBuilder::OptOutput<ScriptId>* scriptId, RefPtr<ExceptionDetails>& exceptionDetails)
|
| {
|
| InjectedScript injectedScript = injectedScriptForEval(errorString, executionContextId);
|
| if (injectedScript.isEmpty()) {
|
| @@ -897,17 +898,27 @@ void InspectorDebuggerAgent::compileScript(ErrorString* errorString, const Strin
|
| }
|
|
|
| String scriptIdValue;
|
| - String exceptionMessage;
|
| - scriptDebugServer().compileScript(injectedScript.scriptState(), expression, sourceURL, &scriptIdValue, &exceptionMessage);
|
| - if (!scriptIdValue && !exceptionMessage) {
|
| + String exceptionDetailsText;
|
| + int lineNumberValue = 0;
|
| + int columnNumberValue = 0;
|
| + RefPtr<ScriptCallStack> stackTraceValue;
|
| + scriptDebugServer().compileScript(injectedScript.scriptState(), expression, sourceURL, &scriptIdValue, &exceptionDetailsText, &lineNumberValue, &columnNumberValue, &stackTraceValue);
|
| + if (!scriptIdValue && !exceptionDetailsText) {
|
| *errorString = "Script compilation failed";
|
| return;
|
| }
|
| - *syntaxErrorMessage = exceptionMessage;
|
| *scriptId = scriptIdValue;
|
| + if (!scriptIdValue.isEmpty())
|
| + return;
|
| +
|
| + exceptionDetails = ExceptionDetails::create().setText(exceptionDetailsText);
|
| + exceptionDetails->setLine(lineNumberValue);
|
| + exceptionDetails->setColumn(columnNumberValue);
|
| + if (stackTraceValue && stackTraceValue->size() > 0)
|
| + exceptionDetails->setStackTrace(stackTraceValue->buildInspectorArray());
|
| }
|
|
|
| -void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId& scriptId, const int* executionContextId, const String* const objectGroup, const bool* const doNotPauseOnExceptionsAndMuteConsole, RefPtr<RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown)
|
| +void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId& scriptId, const int* executionContextId, const String* const objectGroup, const bool* const doNotPauseOnExceptionsAndMuteConsole, RefPtr<RemoteObject>& result, RefPtr<ExceptionDetails>& exceptionDetails)
|
| {
|
| InjectedScript injectedScript = injectedScriptForEval(errorString, executionContextId);
|
| if (injectedScript.isEmpty()) {
|
| @@ -924,16 +935,23 @@ void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId&
|
|
|
| ScriptValue value;
|
| bool wasThrownValue;
|
| - String exceptionMessage;
|
| - scriptDebugServer().runScript(injectedScript.scriptState(), scriptId, &value, &wasThrownValue, &exceptionMessage);
|
| - *wasThrown = wasThrownValue;
|
| + String exceptionDetailsText;
|
| + int lineNumberValue = 0;
|
| + int columnNumberValue = 0;
|
| + RefPtr<ScriptCallStack> stackTraceValue;
|
| + scriptDebugServer().runScript(injectedScript.scriptState(), scriptId, &value, &wasThrownValue, &exceptionDetailsText, &lineNumberValue, &columnNumberValue, &stackTraceValue);
|
| if (value.isEmpty()) {
|
| *errorString = "Script execution failed";
|
| return;
|
| }
|
| result = injectedScript.wrapObject(value, objectGroup ? *objectGroup : "");
|
| - if (wasThrownValue)
|
| - result->setDescription(exceptionMessage);
|
| + if (wasThrownValue) {
|
| + exceptionDetails = ExceptionDetails::create().setText(exceptionDetailsText);
|
| + exceptionDetails->setLine(lineNumberValue);
|
| + exceptionDetails->setColumn(columnNumberValue);
|
| + if (stackTraceValue && stackTraceValue->size() > 0)
|
| + exceptionDetails->setStackTrace(stackTraceValue->buildInspectorArray());
|
| + }
|
|
|
| if (doNotPauseOnExceptionsAndMuteConsole && *doNotPauseOnExceptionsAndMuteConsole) {
|
| unmuteConsole();
|
|
|