[DevTools] Report correct syntax error location for evaluated in console script

Before this patch console message contains incorrect line number of code in InjectedScriptSource._evaluateOn function.
With this patch this message contains correct script id, line number and column number.

Review URL: https://codereview.chromium.org/566883002

git-svn-id: svn://svn.chromium.org/blink/trunk@183603 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 7acdb14a
......@@ -60,6 +60,9 @@ static PassRefPtr<TypeBuilder::Debugger::ExceptionDetails> toExceptionDetails(Pa
int column = 0;
if (object->getNumber("column", &column))
exceptionDetails->setColumn(column);
int originScriptId = 0;
object->getNumber("scriptId", &originScriptId);
RefPtr<JSONArray> stackTrace = object->getArray("stackTrace");
if (stackTrace && stackTrace->length() > 0) {
RefPtr<TypeBuilder::Array<TypeBuilder::Console::CallFrame> > frames = TypeBuilder::Array<TypeBuilder::Console::CallFrame>::create();
......@@ -71,6 +74,9 @@ static PassRefPtr<TypeBuilder::Debugger::ExceptionDetails> toExceptionDetails(Pa
stackFrame->getNumber("column", &column);
int scriptId = 0;
stackFrame->getNumber("scriptId", &scriptId);
if (i == 0 && scriptId == originScriptId)
originScriptId = 0;
String sourceURL;
stackFrame->getString("scriptNameOrSourceURL", &sourceURL);
String functionName;
......@@ -87,6 +93,8 @@ static PassRefPtr<TypeBuilder::Debugger::ExceptionDetails> toExceptionDetails(Pa
}
exceptionDetails->setStackTrace(frames.release());
}
if (originScriptId)
exceptionDetails->setScriptId(String::number(originScriptId));
return exceptionDetails.release();
}
......
......@@ -198,6 +198,7 @@ v8::Handle<v8::Object> JavaScriptCallFrame::createExceptionDetails(v8::Handle<v8
v8::Handle<v8::Object> exceptionDetails = v8::Object::New(isolate);
exceptionDetails->Set(v8::String::NewFromUtf8(isolate, "text"), message->Get());
exceptionDetails->Set(v8::String::NewFromUtf8(isolate, "url"), message->GetScriptOrigin().ResourceName());
exceptionDetails->Set(v8::String::NewFromUtf8(isolate, "scriptId"), v8::Integer::New(isolate, message->GetScriptOrigin().ScriptID()->Value()));
exceptionDetails->Set(v8::String::NewFromUtf8(isolate, "line"), v8::Integer::New(isolate, message->GetLineNumber()));
exceptionDetails->Set(v8::String::NewFromUtf8(isolate, "column"), v8::Integer::New(isolate, message->GetStartColumn()));
if (!message->GetStackTrace().IsEmpty())
......
......@@ -828,7 +828,7 @@ WebInspector.ConsoleView.prototype = {
if (!wasThrown)
message = new WebInspector.ConsoleMessage(target, WebInspector.ConsoleMessage.MessageSource.JS, level, "", WebInspector.ConsoleMessage.MessageType.Result, url, lineNumber, columnNumber, undefined, [result]);
else
message = new WebInspector.ConsoleMessage(target, WebInspector.ConsoleMessage.MessageSource.JS, level, exceptionDetails.text, WebInspector.ConsoleMessage.MessageType.Result, exceptionDetails.url, exceptionDetails.line, exceptionDetails.column, undefined, [WebInspector.UIString("Uncaught"), result], exceptionDetails.stackTrace);
message = new WebInspector.ConsoleMessage(target, WebInspector.ConsoleMessage.MessageSource.JS, level, exceptionDetails.text, WebInspector.ConsoleMessage.MessageType.Result, exceptionDetails.url, exceptionDetails.line, exceptionDetails.column, undefined, [WebInspector.UIString("Uncaught"), result], exceptionDetails.stackTrace, undefined, undefined, undefined, undefined, exceptionDetails.scriptId);
message.setOriginatingMessage(originatingConsoleMessage);
target.consoleModel.addMessage(message);
}
......
......@@ -3127,6 +3127,7 @@
"properties": [
{ "name": "text", "type": "string", "description": "Exception text." },
{ "name": "url", "type": "string", "optional": true, "description": "URL of the message origin." },
{ "name": "scriptId", "type": "string", "optional": true, "description": "Script ID of the message origin." },
{ "name": "line", "type": "integer", "optional": true, "description": "Line number in the resource that generated this message." },
{ "name": "column", "type": "integer", "optional": true, "description": "Column number in the resource that generated this message." },
{ "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "JavaScript stack trace for assertions and error messages." }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment