Index: third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
index b5d8d190ed0a097b7d21663146d2a424c64242b2..e5c3f8e53169ff6c83d29dfe20d58de0618872b0 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js |
@@ -146,18 +146,34 @@ WebInspector.ConsoleViewMessage.prototype = { |
WebInspector.appendStyle(formattedMessage, "components/objectValue.css"); |
formattedMessage.className = "console-message-text source-code"; |
- /** |
- * @param {string} title |
- * @return {!Element} |
- * @this {WebInspector.ConsoleMessage} |
- */ |
- function linkifyRequest(title) |
- { |
- return WebInspector.Linkifier.linkifyUsingRevealer(/** @type {!WebInspector.NetworkRequest} */ (this.request), title, this.request.url); |
+ var consoleMessage = this._message; |
+ var messageElement = this._buildMessage(consoleMessage); |
+ formattedMessage.appendChild(messageElement); |
+ |
+ var anchorElement = this._buildAnchor(consoleMessage); |
+ if (anchorElement) { |
+ // Append a space to prevent the anchor text from being glued to the console message when the user selects and copies the console messages. |
+ anchorElement.appendChild(createTextNode(" ")); |
+ formattedMessage.insertBefore(anchorElement, formattedMessage.firstChild); |
} |
- var consoleMessage = this._message; |
- var anchorElement; |
+ var dumpStackTrace = !!consoleMessage.stackTrace && (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError || consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Warning); |
+ var target = this._target(); |
+ if (dumpStackTrace && target) { |
+ var stackTracePreview = WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(target, this._linkifier, consoleMessage.stackTrace); |
+ var autoExpand = consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace; |
+ formattedMessage = this._wrapStackTraceFormatting(formattedMessage, stackTracePreview, autoExpand); |
+ } |
+ |
+ return formattedMessage; |
+ }, |
+ |
+ /** |
+ * @param {!WebInspector.ConsoleMessage} consoleMessage |
+ * @return {!Element} |
+ */ |
+ _buildMessage: function(consoleMessage) |
+ { |
var messageElement; |
if (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource.ConsoleAPI) { |
switch (consoleMessage.type) { |
@@ -165,8 +181,8 @@ WebInspector.ConsoleViewMessage.prototype = { |
messageElement = this._format(consoleMessage.parameters || ["console.trace"]); |
break; |
case WebInspector.ConsoleMessage.MessageType.Clear: |
- messageElement = createTextNode(WebInspector.UIString("Console was cleared")); |
- formattedMessage.classList.add("console-info"); |
+ messageElement = createElementWithClass("span", "console-info"); |
+ messageElement.textContent = WebInspector.UIString("Console was cleared"); |
break; |
case WebInspector.ConsoleMessage.MessageType.Assert: |
var args = [WebInspector.UIString("Assertion failed:")]; |
@@ -204,11 +220,6 @@ WebInspector.ConsoleViewMessage.prototype = { |
messageElement.appendChild(fragment); |
} |
} else { |
- var url = consoleMessage.url; |
- if (url) { |
- var isExternal = !WebInspector.resourceForURL(url) && !WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(url); |
- anchorElement = WebInspector.linkifyURLAsNode(url, url, "console-message-url", isExternal); |
- } |
luoe
2016/09/28 01:08:30
This chunk was moved to L:259
|
messageElement = this._format([consoleMessage.messageText]); |
} |
} else { |
@@ -216,6 +227,26 @@ WebInspector.ConsoleViewMessage.prototype = { |
messageElement = this._format(args); |
} |
+ return messageElement; |
+ |
+ /** |
+ * @param {string} title |
+ * @return {!Element} |
+ * @this {WebInspector.ConsoleMessage} |
+ */ |
+ function linkifyRequest(title) |
+ { |
+ return WebInspector.Linkifier.linkifyUsingRevealer(/** @type {!WebInspector.NetworkRequest} */ (this.request), title, this.request.url); |
+ } |
+ }, |
+ |
+ /** |
+ * @param {!WebInspector.ConsoleMessage} consoleMessage |
+ * @return {?Element} |
+ */ |
+ _buildAnchor: function(consoleMessage) |
+ { |
+ var anchorElement = null; |
if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.request) { |
if (consoleMessage.scriptId) { |
anchorElement = this._linkifyScriptId(consoleMessage.scriptId, consoleMessage.url || "", consoleMessage.line, consoleMessage.column); |
@@ -225,58 +256,60 @@ WebInspector.ConsoleViewMessage.prototype = { |
else if (consoleMessage.url && consoleMessage.url !== "undefined") |
anchorElement = this._linkifyLocation(consoleMessage.url, consoleMessage.line, consoleMessage.column); |
} |
+ } else if (consoleMessage.url) { |
+ var url = consoleMessage.url; |
+ var isExternal = !WebInspector.resourceForURL(url) && !WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(url); |
+ anchorElement = WebInspector.linkifyURLAsNode(url, url, "console-message-url", isExternal); |
} |
- formattedMessage.appendChild(messageElement); |
- if (anchorElement) { |
- // Append a space to prevent the anchor text from being glued to the console message when the user selects and copies the console messages. |
- anchorElement.appendChild(createTextNode(" ")); |
- formattedMessage.insertBefore(anchorElement, formattedMessage.firstChild); |
- } |
+ return anchorElement; |
+ }, |
- var dumpStackTrace = !!consoleMessage.stackTrace && (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError || consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Warning); |
- var target = this._target(); |
- if (dumpStackTrace && target) { |
- var toggleElement = createElementWithClass("div", "console-message-stack-trace-toggle"); |
- var triangleElement = toggleElement.createChild("div", "console-message-stack-trace-triangle"); |
- var contentElement = toggleElement.createChild("div", "console-message-stack-trace-wrapper"); |
- |
- var clickableElement = contentElement.createChild("div"); |
- clickableElement.appendChild(formattedMessage); |
- var stackTraceElement = contentElement.createChild("div"); |
- stackTraceElement.appendChild(WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(target, this._linkifier, this._message.stackTrace)); |
- stackTraceElement.classList.add("hidden"); |
- |
- /** |
- * @param {boolean} expand |
- */ |
- function expandStackTrace(expand) |
- { |
- stackTraceElement.classList.toggle("hidden", !expand); |
- toggleElement.classList.toggle("expanded", expand); |
- } |
+ /** |
+ * @param {!Element} contents |
+ * @param {!Element} stackTracePreview |
+ * @param {boolean=} autoExpand |
+ * @return {!Element} |
+ */ |
+ _wrapStackTraceFormatting: function(contents, stackTracePreview, autoExpand) |
+ { |
+ var toggleElement = createElementWithClass("div", "console-message-stack-trace-toggle"); |
+ var triangleElement = toggleElement.createChild("div", "console-message-stack-trace-triangle"); |
+ var contentElement = toggleElement.createChild("div", "console-message-stack-trace-wrapper"); |
- /** |
- * @param {?Event} event |
- */ |
- function toggleStackTrace(event) |
- { |
- if (event.target.hasSelection()) |
- return; |
- expandStackTrace(stackTraceElement.classList.contains("hidden")); |
- event.consume(); |
- } |
+ var clickableElement = contentElement.createChild("div"); |
+ clickableElement.appendChild(contents); |
+ var stackTraceElement = contentElement.createChild("div"); |
+ stackTraceElement.appendChild(stackTracePreview); |
+ stackTraceElement.classList.add("hidden"); |
- clickableElement.addEventListener("click", toggleStackTrace, false); |
- triangleElement.addEventListener("click", toggleStackTrace, false); |
- if (consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace) |
- expandStackTrace(true); |
+ /** |
+ * @param {boolean} expand |
+ */ |
+ function expandStackTrace(expand) |
+ { |
+ stackTraceElement.classList.toggle("hidden", !expand); |
+ toggleElement.classList.toggle("expanded", expand); |
+ } |
- toggleElement._expandStackTraceForTest = expandStackTrace.bind(null, true); |
- formattedMessage = toggleElement; |
+ /** |
+ * @param {?Event} event |
+ */ |
+ function toggleStackTrace(event) |
+ { |
+ if (event.target.hasSelection()) |
+ return; |
+ expandStackTrace(stackTraceElement.classList.contains("hidden")); |
+ event.consume(); |
} |
- return formattedMessage; |
+ clickableElement.addEventListener("click", toggleStackTrace, false); |
+ triangleElement.addEventListener("click", toggleStackTrace, false); |
+ if (autoExpand) |
+ expandStackTrace(true); |
+ |
+ toggleElement._expandStackTraceForTest = expandStackTrace.bind(null, true); |
+ return toggleElement; |
}, |
/** |
@@ -320,6 +353,10 @@ WebInspector.ConsoleViewMessage.prototype = { |
return this._linkifier.linkifyScriptLocation(target, scriptId, url, lineNumber, columnNumber, "console-message-url"); |
}, |
+ /** |
+ * @param {!Array.<!WebInspector.RemoteObject|string>} parameters |
+ * @return {!Element} |
+ */ |
_format: function(parameters) |
{ |
// This node is used like a Builder. Values are continually appended onto it. |
@@ -348,12 +385,11 @@ WebInspector.ConsoleViewMessage.prototype = { |
} |
// There can be string log and string eval result. We distinguish between them based on message type. |
- var shouldFormatMessage = WebInspector.RemoteObject.type(parameters[0]) === "string" && (this._message.type !== WebInspector.ConsoleMessage.MessageType.Result || this._message.level === WebInspector.ConsoleMessage.MessageLevel.Error || this._message.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError); |
+ var shouldFormatMessage = WebInspector.RemoteObject.type((/** @type {!Array.<!WebInspector.RemoteObject>} **/ (parameters))[0]) === "string" && (this._message.type !== WebInspector.ConsoleMessage.MessageType.Result || this._message.level === WebInspector.ConsoleMessage.MessageLevel.Error || this._message.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError); |
// Multiple parameters with the first being a format string. Save unused substitutions. |
if (shouldFormatMessage) { |
- // Multiple parameters with the first being a format string. Save unused substitutions. |
- var result = this._formatWithSubstitutionString(parameters[0].description, parameters.slice(1), formattedResult); |
+ var result = this._formatWithSubstitutionString(/** @type {string} **/ (parameters[0].description), parameters.slice(1), formattedResult); |
parameters = result.unusedSubstitutions; |
if (parameters.length) |
formattedResult.createTextChild(" "); |
@@ -759,7 +795,7 @@ WebInspector.ConsoleViewMessage.prototype = { |
/** |
* @param {string} format |
- * @param {!Array.<string>} parameters |
+ * @param {!Array.<!WebInspector.RemoteObject>} parameters |
luoe
2016/09/28 01:08:30
Note: the old version was incorrect. It actually
|
* @param {!Element} formattedResult |
*/ |
_formatWithSubstitutionString: function(format, parameters, formattedResult) |