Chromium Code Reviews| Index: Source/devtools/front_end/ConsoleViewMessage.js |
| diff --git a/Source/devtools/front_end/ConsoleViewMessage.js b/Source/devtools/front_end/ConsoleViewMessage.js |
| index 7618270136fb491b3ef1c5b64588549f6cb68750..e65e9c0a38ee8e52e005de8512603f2785f4619b 100644 |
| --- a/Source/devtools/front_end/ConsoleViewMessage.js |
| +++ b/Source/devtools/front_end/ConsoleViewMessage.js |
| @@ -30,7 +30,7 @@ |
| /** |
| * @constructor |
| - * |
| + * @param {!WebInspector.Target} target |
| * @param {!WebInspector.ConsoleMessage} consoleMessage |
| * @param {?WebInspector.Linkifier} linkifier |
| */ |
| @@ -160,11 +160,11 @@ WebInspector.ConsoleViewMessage.prototype = { |
| } |
| if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.request) { |
| - if (consoleMessage.stackTrace && consoleMessage.stackTrace.length && consoleMessage.stackTrace[0].scriptId) { |
| - this._anchorElement = this._linkifyCallFrame(consoleMessage.stackTrace[0]); |
| - } else if (consoleMessage.url && consoleMessage.url !== "undefined") { |
| + var callFrame = this._callFrameAnchorFromStackTrace(consoleMessage.stackTrace); |
| + if (callFrame) |
| + this._anchorElement = this._linkifyCallFrame(callFrame); |
| + else if (consoleMessage.url && consoleMessage.url !== "undefined") |
| this._anchorElement = this._linkifyLocation(consoleMessage.url, consoleMessage.line, consoleMessage.column); |
| - } |
| } |
| this._formattedMessage.appendChild(this._messageElement); |
| @@ -247,6 +247,35 @@ WebInspector.ConsoleViewMessage.prototype = { |
| }, |
| /** |
| + * @param {?Array.<!ConsoleAgent.CallFrame>} stackTrace |
| + * @return {?ConsoleAgent.CallFrame} |
| + */ |
| + _callFrameAnchorFromStackTrace: function(stackTrace) |
| + { |
| + if (!stackTrace || !stackTrace.length) |
| + return null; |
| + var callFrame = stackTrace[0]; |
| + if (WebInspector.experimentsSettings.frameworksDebuggingSupport.isEnabled() && WebInspector.settings.skipStackFramesSwitch.get()) { |
|
pfeldman
2014/03/26 08:57:25
I'd use early return instead.
aandrey
2014/03/26 09:30:18
Done.
|
| + var regex; |
| + try { |
| + // FIXME: Cache the created RegExp object. |
|
aandrey
2014/03/26 08:48:31
this will be addressed after https://codereview.ch
|
| + regex = new RegExp(WebInspector.settings.skipStackFramesPattern.get()); |
| + } catch (e) { |
| + } |
| + if (regex) { |
|
pfeldman
2014/03/26 08:57:25
ditto
aandrey
2014/03/26 09:30:18
Done.
|
| + for (var i = 0; i < stackTrace.length; ++i) { |
| + var script = this._target.debuggerModel.scriptForId(stackTrace[i].scriptId); |
| + if (!script || !regex.test(script.sourceURL)) { |
| + callFrame = stackTrace[i]; |
| + break; |
| + } |
| + } |
| + } |
| + } |
| + return callFrame.scriptId ? callFrame : null; |
| + }, |
| + |
| + /** |
| * @return {boolean} |
| */ |
| isErrorOrWarning: function() |