Diff
Modified: trunk/Source/WebCore/ChangeLog (89414 => 89415)
--- trunk/Source/WebCore/ChangeLog 2011-06-22 08:22:33 UTC (rev 89414)
+++ trunk/Source/WebCore/ChangeLog 2011-06-22 09:35:35 UTC (rev 89415)
@@ -1,3 +1,26 @@
+2011-06-17 Pavel Podivilov <[email protected]>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: use stack trace to create anchors for console messages.
+ https://bugs.webkit.org/show_bug.cgi?id=62856
+
+ * inspector/front-end/ConsoleView.js:
+ (WebInspector.ConsoleView.prototype._completions.reportCompletions):
+ (WebInspector.ConsoleView.prototype._completions):
+ (WebInspector.ConsoleMessage.prototype._formatMessage):
+ * inspector/front-end/DebuggerPresentationModel.js:
+ (WebInspector.DebuggerPresentationModel.prototype._updateAnchor):
+ * inspector/front-end/Panel.js:
+ (WebInspector.Panel.prototype.createAnchor):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype.createAnchor):
+ (WebInspector.ScriptsPanel.prototype.showAnchorLocation):
+ (WebInspector.ScriptsPanel.prototype._updateAnchor):
+ * inspector/front-end/inspector.js:
+ (WebInspector.linkifyResourceAsNode):
+ (WebInspector.linkifyCallFrameAsNode):
+
2011-06-21 Kent Tamura <[email protected]>
Reviewed by Dimitri Glazkov.
Modified: trunk/Source/WebCore/inspector/front-end/ConsoleView.js (89414 => 89415)
--- trunk/Source/WebCore/inspector/front-end/ConsoleView.js 2011-06-22 08:22:33 UTC (rev 89414)
+++ trunk/Source/WebCore/inspector/front-end/ConsoleView.js 2011-06-22 09:35:35 UTC (rev 89415)
@@ -398,7 +398,7 @@
for (var i = 0; i < commandLineAPI.length; ++i)
propertyNames[commandLineAPI[i]] = true;
}
-
+
this._reportCompletions(bestMatchOnly, completionsReadyCallback, dotNotation, bracketNotation, prefix, Object.keys(propertyNames));
}
},
@@ -783,7 +783,10 @@
this._formattedMessage = document.createElement("span");
this._formattedMessage.className = "console-message-text source-code";
- if (this.url && this.url !== "undefined") {
+ if (this._stackTrace && this._stackTrace.length && this._stackTrace[0].url) {
+ var urlElement = WebInspector.linkifyCallFrameAsNode(this._stackTrace[0], "console-message-url");
+ this._formattedMessage.appendChild(urlElement);
+ } else if (this.url && this.url !== "undefined") {
var urlElement = WebInspector.linkifyResourceAsNode(this.url, "scripts", this.line, "console-message-url");
this._formattedMessage.appendChild(urlElement);
}
Modified: trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js (89414 => 89415)
--- trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js 2011-06-22 08:22:33 UTC (rev 89414)
+++ trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js 2011-06-22 09:35:35 UTC (rev 89415)
@@ -115,11 +115,7 @@
if (!sourceFile)
return;
- function didGetUILocation(sourceFileId, lineNumber)
- {
- anchor.updateHandler(sourceFile.url, lineNumber);
- }
- this.scriptLocationToUILocation(anchor.sourceURL, anchor.sourceId, anchor.lineNumber, anchor.columnNumber, didGetUILocation);
+ this.scriptLocationToUILocation(anchor.sourceURL, anchor.sourceId, anchor.lineNumber, anchor.columnNumber, anchor.updateHandler);
},
_parsedScriptSource: function(event)
Modified: trunk/Source/WebCore/inspector/front-end/Panel.js (89414 => 89415)
--- trunk/Source/WebCore/inspector/front-end/Panel.js 2011-06-22 08:22:33 UTC (rev 89414)
+++ trunk/Source/WebCore/inspector/front-end/Panel.js 2011-06-22 09:35:35 UTC (rev 89415)
@@ -388,10 +388,11 @@
visibleView.resize();
},
- createAnchor: function(url, lineNumber, classes, tooltipText)
+ createAnchor: function(url, lineNumber, columnNumber, classes, tooltipText)
{
var linkText = this.formatAnchorText(url, lineNumber);
var anchor = WebInspector.linkifyURLAsNode(url, linkText, classes, false, tooltipText);
+ anchor.setAttribute("preferred_panel", "resources");
if (lineNumber !== undefined)
anchor.setAttribute("line_number", lineNumber);
return anchor;
Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (89414 => 89415)
--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js 2011-06-22 08:22:33 UTC (rev 89414)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js 2011-06-22 09:35:35 UTC (rev 89415)
@@ -520,16 +520,11 @@
x.show(this.viewsContainerElement);
},
- createAnchor: function(url, lineNumber, classes, tooltipText)
+ createAnchor: function(url, lineNumber, columnNumber, classes, tooltipText)
{
- var anchor = WebInspector.Panel.prototype.createAnchor.call(this, url, lineNumber, classes, tooltipText);
- if (lineNumber !== undefined) {
- function updateAnchor(url, lineNumber)
- {
- anchor.textContent = this.formatAnchorText(url, lineNumber)
- }
- this._presentationModel.registerAnchor(url, null, lineNumber, 0, updateAnchor.bind(this));
- }
+ var anchor = WebInspector.Panel.prototype.createAnchor.call(this, url, lineNumber, columnNumber, classes, tooltipText);
+ if (lineNumber !== undefined)
+ this._presentationModel.registerAnchor(url, null, lineNumber, columnNumber, this._updateAnchor.bind(this, anchor));
return anchor;
},
@@ -540,16 +535,18 @@
showAnchorLocation: function(anchor)
{
- var anchorLineNumber = anchor.hasAttribute("line_number") ? parseInt(anchor.getAttribute("line_number")) : 0;
+ this._showSourceLine(anchor.getAttribute("source_file_id"), parseInt(anchor.getAttribute("line_number")));
+ },
- function didGetUILocation(sourceFileId, lineNumber)
- {
- if (anchor.hasAttribute("line_number"))
- this._showSourceLine(sourceFileId, lineNumber);
- else
- this._showSourceFrameAndAddToHistory(sourceFileId);
- }
- this._presentationModel.scriptLocationToUILocation(anchor.href, null, anchorLineNumber, 0, didGetUILocation.bind(this));
+ _updateAnchor: function(anchor, sourceFileId, lineNumber)
+ {
+ var sourceFile = this._presentationModel.sourceFile(sourceFileId);
+ var url = "" || WebInspector.UIString("(program)");
+ anchor.textContent = this.formatAnchorText(url, lineNumber)
+ // Used for showing anchor location.
+ anchor.setAttribute("preferred_panel", "scripts");
+ anchor.setAttribute("source_file_id", sourceFileId);
+ anchor.setAttribute("line_number", lineNumber);
},
_showSourceLine: function(sourceFileId, lineNumber)
Modified: trunk/Source/WebCore/inspector/front-end/inspector.js (89414 => 89415)
--- trunk/Source/WebCore/inspector/front-end/inspector.js 2011-06-22 08:22:33 UTC (rev 89414)
+++ trunk/Source/WebCore/inspector/front-end/inspector.js 2011-06-22 09:35:35 UTC (rev 89415)
@@ -1283,11 +1283,16 @@
preferredPanel = preferredPanel || "scripts";
// FIXME(62725): stack trace line/column numbers are one-based.
var lineNumber = oneBasedLineNumber ? oneBasedLineNumber - 1 : undefined;
- var node = this.panels[preferredPanel].createAnchor(url, lineNumber, classes, tooltipText);
- node.setAttribute("preferred_panel", preferredPanel);
- return node;
+ return this.panels[preferredPanel].createAnchor(url, lineNumber, 0, classes, tooltipText);
}
+WebInspector.linkifyCallFrameAsNode = function(callFrame, classes, tooltipText)
+{
+ // FIXME(62725): stack trace line/column numbers are one-based.
+ var columnNumber = callFrame.columnNumber ? callFrame.columnNumber - 1 : 0;
+ return this.panels.scripts.createAnchor(callFrame.url, callFrame.lineNumber - 1, columnNumber, classes, tooltipText);
+}
+
WebInspector.resourceURLForRelatedNode = function(node, url)
{
if (!url || url.indexOf("://") > 0)