Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 3 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 131 | 131 |
| 132 /** | 132 /** |
| 133 * @return {!WebInspector.ConsoleMessage} | 133 * @return {!WebInspector.ConsoleMessage} |
| 134 */ | 134 */ |
| 135 consoleMessage: function() | 135 consoleMessage: function() |
| 136 { | 136 { |
| 137 return this._message; | 137 return this._message; |
| 138 }, | 138 }, |
| 139 | 139 |
| 140 /** | 140 /** |
| 141 * @param {!WebInspector.ConsoleMessage} consoleMessage | |
| 141 * @return {!Element} | 142 * @return {!Element} |
| 142 */ | 143 */ |
| 143 _formatMessage: function() | 144 _buildMessage: function(consoleMessage) |
| 144 { | 145 { |
| 145 var formattedMessage = createElement("span"); | |
| 146 WebInspector.appendStyle(formattedMessage, "components/objectValue.css") ; | |
| 147 formattedMessage.className = "console-message-text source-code"; | |
| 148 | |
| 149 /** | |
| 150 * @param {string} title | |
| 151 * @return {!Element} | |
| 152 * @this {WebInspector.ConsoleMessage} | |
| 153 */ | |
| 154 function linkifyRequest(title) | |
| 155 { | |
| 156 return WebInspector.Linkifier.linkifyUsingRevealer(/** @type {!WebIn spector.NetworkRequest} */ (this.request), title, this.request.url); | |
| 157 } | |
| 158 | |
| 159 var consoleMessage = this._message; | |
| 160 var anchorElement; | |
| 161 var messageElement; | 146 var messageElement; |
| 162 if (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource. ConsoleAPI) { | 147 if (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource. ConsoleAPI) { |
| 163 switch (consoleMessage.type) { | 148 switch (consoleMessage.type) { |
| 164 case WebInspector.ConsoleMessage.MessageType.Trace: | 149 case WebInspector.ConsoleMessage.MessageType.Trace: |
| 165 messageElement = this._format(consoleMessage.parameters || ["con sole.trace"]); | 150 messageElement = this._format(consoleMessage.parameters || ["con sole.trace"]); |
| 166 break; | 151 break; |
| 167 case WebInspector.ConsoleMessage.MessageType.Clear: | 152 case WebInspector.ConsoleMessage.MessageType.Clear: |
| 168 messageElement = createTextNode(WebInspector.UIString("Console w as cleared")); | 153 messageElement = createElementWithClass("span", "console-info"); |
| 169 formattedMessage.classList.add("console-info"); | 154 messageElement.textContent = WebInspector.UIString("Console was cleared"); |
| 170 break; | 155 break; |
| 171 case WebInspector.ConsoleMessage.MessageType.Assert: | 156 case WebInspector.ConsoleMessage.MessageType.Assert: |
| 172 var args = [WebInspector.UIString("Assertion failed:")]; | 157 var args = [WebInspector.UIString("Assertion failed:")]; |
| 173 if (consoleMessage.parameters) | 158 if (consoleMessage.parameters) |
| 174 args = args.concat(consoleMessage.parameters); | 159 args = args.concat(consoleMessage.parameters); |
| 175 messageElement = this._format(args); | 160 messageElement = this._format(args); |
| 176 break; | 161 break; |
| 177 case WebInspector.ConsoleMessage.MessageType.Dir: | 162 case WebInspector.ConsoleMessage.MessageType.Dir: |
| 178 var obj = consoleMessage.parameters ? consoleMessage.parameters[ 0] : undefined; | 163 var obj = consoleMessage.parameters ? consoleMessage.parameters[ 0] : undefined; |
| 179 var args = ["%O", obj]; | 164 var args = ["%O", obj]; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 197 messageElement.appendChild(WebInspector.Linkifier.linkifyUsi ngRevealer(consoleMessage.request, consoleMessage.request.url, consoleMessage.re quest.url)); | 182 messageElement.appendChild(WebInspector.Linkifier.linkifyUsi ngRevealer(consoleMessage.request, consoleMessage.request.url, consoleMessage.re quest.url)); |
| 198 if (consoleMessage.request.failed) | 183 if (consoleMessage.request.failed) |
| 199 messageElement.createTextChildren(" ", consoleMessage.re quest.localizedFailDescription); | 184 messageElement.createTextChildren(" ", consoleMessage.re quest.localizedFailDescription); |
| 200 else | 185 else |
| 201 messageElement.createTextChildren(" ", String(consoleMes sage.request.statusCode), " (", consoleMessage.request.statusText, ")"); | 186 messageElement.createTextChildren(" ", String(consoleMes sage.request.statusCode), " (", consoleMessage.request.statusText, ")"); |
| 202 } else { | 187 } else { |
| 203 var fragment = WebInspector.linkifyStringAsFragmentWithCusto mLinkifier(consoleMessage.messageText, linkifyRequest.bind(consoleMessage)); | 188 var fragment = WebInspector.linkifyStringAsFragmentWithCusto mLinkifier(consoleMessage.messageText, linkifyRequest.bind(consoleMessage)); |
| 204 messageElement.appendChild(fragment); | 189 messageElement.appendChild(fragment); |
| 205 } | 190 } |
| 206 } else { | 191 } else { |
| 207 var url = consoleMessage.url; | |
| 208 if (url) { | |
| 209 var isExternal = !WebInspector.resourceForURL(url) && !WebIn spector.networkMapping.uiSourceCodeForURLForAnyTarget(url); | |
| 210 anchorElement = WebInspector.linkifyURLAsNode(url, url, "con sole-message-url", isExternal); | |
| 211 } | |
| 212 messageElement = this._format([consoleMessage.messageText]); | 192 messageElement = this._format([consoleMessage.messageText]); |
| 213 } | 193 } |
| 214 } else { | 194 } else { |
| 215 var args = consoleMessage.parameters || [consoleMessage.messageText] ; | 195 var args = consoleMessage.parameters || [consoleMessage.messageText] ; |
| 216 messageElement = this._format(args); | 196 messageElement = this._format(args); |
| 217 } | 197 } |
| 218 | 198 |
| 199 var formattedMessage = createElement("span"); | |
| 200 WebInspector.appendStyle(formattedMessage, "components/objectValue.css") ; | |
| 201 formattedMessage.className = "console-message-text source-code"; | |
| 202 | |
| 203 var anchorElement = this._buildMessageAnchor(consoleMessage); | |
| 204 if (anchorElement) | |
| 205 formattedMessage.appendChild(anchorElement); | |
| 206 formattedMessage.appendChild(messageElement); | |
| 207 return formattedMessage; | |
| 208 | |
| 209 /** | |
| 210 * @param {string} title | |
| 211 * @return {!Element} | |
| 212 * @this {WebInspector.ConsoleMessage} | |
| 213 */ | |
| 214 function linkifyRequest(title) | |
| 215 { | |
| 216 return WebInspector.Linkifier.linkifyUsingRevealer(/** @type {!WebIn spector.NetworkRequest} */ (this.request), title, this.request.url); | |
| 217 } | |
| 218 }, | |
| 219 | |
| 220 /** | |
| 221 * @param {!WebInspector.ConsoleMessage} consoleMessage | |
| 222 * @return {?Element} | |
| 223 */ | |
| 224 _buildMessageAnchor: function(consoleMessage) | |
| 225 { | |
| 226 var anchorElement = null; | |
| 219 if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource. Network || consoleMessage.request) { | 227 if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource. Network || consoleMessage.request) { |
| 220 if (consoleMessage.scriptId) { | 228 if (consoleMessage.scriptId) { |
| 221 anchorElement = this._linkifyScriptId(consoleMessage.scriptId, c onsoleMessage.url || "", consoleMessage.line, consoleMessage.column); | 229 anchorElement = this._linkifyScriptId(consoleMessage.scriptId, c onsoleMessage.url || "", consoleMessage.line, consoleMessage.column); |
| 222 } else { | 230 } else { |
| 223 if (consoleMessage.stackTrace && consoleMessage.stackTrace.callF rames.length) | 231 if (consoleMessage.stackTrace && consoleMessage.stackTrace.callF rames.length) |
| 224 anchorElement = this._linkifyStackTraceTopFrame(consoleMessa ge.stackTrace); | 232 anchorElement = this._linkifyStackTraceTopFrame(consoleMessa ge.stackTrace); |
| 225 else if (consoleMessage.url && consoleMessage.url !== "undefined ") | 233 else if (consoleMessage.url && consoleMessage.url !== "undefined ") |
| 226 anchorElement = this._linkifyLocation(consoleMessage.url, co nsoleMessage.line, consoleMessage.column); | 234 anchorElement = this._linkifyLocation(consoleMessage.url, co nsoleMessage.line, consoleMessage.column); |
| 227 } | 235 } |
| 236 } else if (consoleMessage.url) { | |
| 237 var url = consoleMessage.url; | |
| 238 var isExternal = !WebInspector.resourceForURL(url) && !WebInspector. networkMapping.uiSourceCodeForURLForAnyTarget(url); | |
| 239 anchorElement = WebInspector.linkifyURLAsNode(url, url, "console-mes sage-url", isExternal); | |
| 228 } | 240 } |
| 229 | 241 |
| 230 formattedMessage.appendChild(messageElement); | 242 // Append a space to prevent the anchor text from being glued to the con sole message when the user selects and copies the console messages. |
| 231 if (anchorElement) { | 243 if (anchorElement) |
| 232 // Append a space to prevent the anchor text from being glued to the console message when the user selects and copies the console messages. | |
| 233 anchorElement.appendChild(createTextNode(" ")); | 244 anchorElement.appendChild(createTextNode(" ")); |
| 234 formattedMessage.insertBefore(anchorElement, formattedMessage.firstC hild); | 245 return anchorElement; |
| 235 } | |
| 236 | |
| 237 var dumpStackTrace = !!consoleMessage.stackTrace && (consoleMessage.sour ce === WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError || consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace || consoleMessage.level === WebIn spector.ConsoleMessage.MessageLevel.Warning); | |
| 238 var target = this._target(); | |
| 239 if (dumpStackTrace && target) { | |
| 240 var toggleElement = createElementWithClass("div", "console-message-s tack-trace-toggle"); | |
| 241 var triangleElement = toggleElement.createChild("div", "console-mess age-stack-trace-triangle"); | |
| 242 var contentElement = toggleElement.createChild("div", "console-messa ge-stack-trace-wrapper"); | |
| 243 | |
| 244 var clickableElement = contentElement.createChild("div"); | |
| 245 clickableElement.appendChild(formattedMessage); | |
| 246 var stackTraceElement = contentElement.createChild("div"); | |
| 247 stackTraceElement.appendChild(WebInspector.DOMPresentationUtils.buil dStackTracePreviewContents(target, this._linkifier, this._message.stackTrace)); | |
| 248 stackTraceElement.classList.add("hidden"); | |
| 249 | |
| 250 /** | |
| 251 * @param {boolean} expand | |
| 252 */ | |
| 253 function expandStackTrace(expand) | |
| 254 { | |
| 255 stackTraceElement.classList.toggle("hidden", !expand); | |
| 256 toggleElement.classList.toggle("expanded", expand); | |
| 257 } | |
| 258 | |
| 259 /** | |
| 260 * @param {?Event} event | |
| 261 */ | |
| 262 function toggleStackTrace(event) | |
| 263 { | |
| 264 if (event.target.hasSelection()) | |
| 265 return; | |
| 266 expandStackTrace(stackTraceElement.classList.contains("hidden")) ; | |
| 267 event.consume(); | |
| 268 } | |
| 269 | |
| 270 clickableElement.addEventListener("click", toggleStackTrace, false); | |
| 271 triangleElement.addEventListener("click", toggleStackTrace, false); | |
| 272 if (consoleMessage.type === WebInspector.ConsoleMessage.MessageType. Trace) | |
| 273 expandStackTrace(true); | |
| 274 | |
| 275 toggleElement._expandStackTraceForTest = expandStackTrace.bind(null, true); | |
| 276 formattedMessage = toggleElement; | |
| 277 } | |
| 278 | |
| 279 return formattedMessage; | |
| 280 }, | 246 }, |
| 281 | 247 |
| 282 /** | 248 /** |
| 249 * @param {!WebInspector.ConsoleMessage} consoleMessage | |
| 250 * @param {!WebInspector.Linkifier} linkifier | |
| 251 * @return {!Element} | |
| 252 */ | |
| 253 _buildMessageWithStackTrace: function(consoleMessage, linkifier) | |
| 254 { | |
| 255 var messageElement = this._buildMessage(consoleMessage); | |
| 256 var target = consoleMessage.target(); | |
| 257 if (!target) | |
|
lushnikov
2016/10/04 00:10:05
let's move this check up to the "shouldIncludeTrac
luoe
2016/10/04 20:25:11
Moved next to the shouldIncludeTrace. It turns ou
| |
| 258 return messageElement; | |
| 259 | |
| 260 var toggleElement = createElementWithClass("div", "console-message-stack -trace-toggle"); | |
| 261 var triangleElement = toggleElement.createChild("div", "console-message- stack-trace-triangle"); | |
| 262 var contentElement = toggleElement.createChild("div", "console-message-s tack-trace-wrapper"); | |
| 263 | |
| 264 var clickableElement = contentElement.createChild("div"); | |
| 265 clickableElement.appendChild(messageElement); | |
| 266 var stackTraceElement = contentElement.createChild("div"); | |
| 267 var stackTracePreview = WebInspector.DOMPresentationUtils.buildStackTrac ePreviewContents(target, linkifier, consoleMessage.stackTrace); | |
| 268 stackTraceElement.appendChild(stackTracePreview); | |
| 269 stackTraceElement.classList.add("hidden"); | |
| 270 | |
| 271 /** | |
| 272 * @param {boolean} expand | |
| 273 */ | |
| 274 function expandStackTrace(expand) | |
| 275 { | |
| 276 stackTraceElement.classList.toggle("hidden", !expand); | |
| 277 toggleElement.classList.toggle("expanded", expand); | |
| 278 } | |
| 279 | |
| 280 /** | |
| 281 * @param {?Event} event | |
| 282 */ | |
| 283 function toggleStackTrace(event) | |
| 284 { | |
| 285 if (event.target.hasSelection()) | |
| 286 return; | |
| 287 expandStackTrace(stackTraceElement.classList.contains("hidden")); | |
| 288 event.consume(); | |
| 289 } | |
| 290 | |
| 291 clickableElement.addEventListener("click", toggleStackTrace, false); | |
| 292 triangleElement.addEventListener("click", toggleStackTrace, false); | |
| 293 if (consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trac e) | |
| 294 expandStackTrace(true); | |
| 295 | |
| 296 toggleElement._expandStackTraceForTest = expandStackTrace.bind(null, tru e); | |
| 297 return toggleElement; | |
| 298 }, | |
| 299 | |
| 300 /** | |
| 283 * @param {string} url | 301 * @param {string} url |
| 284 * @param {number} lineNumber | 302 * @param {number} lineNumber |
| 285 * @param {number} columnNumber | 303 * @param {number} columnNumber |
| 286 * @return {?Element} | 304 * @return {?Element} |
| 287 */ | 305 */ |
| 288 _linkifyLocation: function(url, lineNumber, columnNumber) | 306 _linkifyLocation: function(url, lineNumber, columnNumber) |
| 289 { | 307 { |
| 290 var target = this._target(); | 308 var target = this._target(); |
| 291 if (!target) | 309 if (!target) |
| 292 return null; | 310 return null; |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 313 * @return {?Element} | 331 * @return {?Element} |
| 314 */ | 332 */ |
| 315 _linkifyScriptId: function(scriptId, url, lineNumber, columnNumber) | 333 _linkifyScriptId: function(scriptId, url, lineNumber, columnNumber) |
| 316 { | 334 { |
| 317 var target = this._target(); | 335 var target = this._target(); |
| 318 if (!target) | 336 if (!target) |
| 319 return null; | 337 return null; |
| 320 return this._linkifier.linkifyScriptLocation(target, scriptId, url, line Number, columnNumber, "console-message-url"); | 338 return this._linkifier.linkifyScriptLocation(target, scriptId, url, line Number, columnNumber, "console-message-url"); |
| 321 }, | 339 }, |
| 322 | 340 |
| 341 /** | |
| 342 * @param {!WebInspector.RemoteObject|!Object|string} parameter | |
| 343 * @param {?WebInspector.Target} target | |
| 344 * @return {!WebInspector.RemoteObject} | |
| 345 */ | |
| 346 _parameterToRemoteObject: function(parameter, target) | |
| 347 { | |
| 348 if (parameter instanceof WebInspector.RemoteObject) | |
| 349 return parameter; | |
| 350 if (!target) | |
| 351 return WebInspector.RemoteObject.fromLocalObject(parameter); | |
| 352 if (typeof parameter === "object") | |
| 353 return target.runtimeModel.createRemoteObject(parameter); | |
| 354 return target.runtimeModel.createRemoteObjectFromPrimitiveValue(paramete r); | |
| 355 }, | |
| 356 | |
| 357 /** | |
| 358 * @param {!Array.<!WebInspector.RemoteObject|string>} parameters | |
| 359 * @return {!Element} | |
| 360 */ | |
| 323 _format: function(parameters) | 361 _format: function(parameters) |
| 324 { | 362 { |
| 325 // This node is used like a Builder. Values are continually appended ont o it. | 363 // This node is used like a Builder. Values are continually appended ont o it. |
| 326 var formattedResult = createElement("span"); | 364 var formattedResult = createElement("span"); |
| 327 if (!parameters.length) | 365 if (!parameters.length) |
| 328 return formattedResult; | 366 return formattedResult; |
| 329 | 367 |
| 330 var target = this._target(); | |
| 331 | |
| 332 // Formatting code below assumes that parameters are all wrappers wherea s frontend console | 368 // Formatting code below assumes that parameters are all wrappers wherea s frontend console |
| 333 // API allows passing arbitrary values as messages (strings, numbers, et c.). Wrap them here. | 369 // API allows passing arbitrary values as messages (strings, numbers, et c.). Wrap them here. |
| 334 for (var i = 0; i < parameters.length; ++i) { | 370 // FIXME: Only pass runtime wrappers here. |
| 335 // FIXME: Only pass runtime wrappers here. | 371 for (var i = 0; i < parameters.length; ++i) |
| 336 if (parameters[i] instanceof WebInspector.RemoteObject) | 372 parameters[i] = this._parameterToRemoteObject(parameters[i], this._t arget()); |
| 337 continue; | |
| 338 | |
| 339 if (!target) { | |
| 340 parameters[i] = WebInspector.RemoteObject.fromLocalObject(parame ters[i]); | |
| 341 continue; | |
| 342 } | |
| 343 | |
| 344 if (typeof parameters[i] === "object") | |
| 345 parameters[i] = target.runtimeModel.createRemoteObject(parameter s[i]); | |
| 346 else | |
| 347 parameters[i] = target.runtimeModel.createRemoteObjectFromPrimit iveValue(parameters[i]); | |
| 348 } | |
| 349 | 373 |
| 350 // There can be string log and string eval result. We distinguish betwee n them based on message type. | 374 // There can be string log and string eval result. We distinguish betwee n them based on message type. |
| 351 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.RevokedErro r); | 375 var shouldFormatMessage = WebInspector.RemoteObject.type((/** @type {!Ar ray.<!WebInspector.RemoteObject>} **/ (parameters))[0]) === "string" && (this._m essage.type !== WebInspector.ConsoleMessage.MessageType.Result || this._message. level === WebInspector.ConsoleMessage.MessageLevel.Error || this._message.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError); |
| 352 | 376 |
| 353 // Multiple parameters with the first being a format string. Save unused substitutions. | 377 // Multiple parameters with the first being a format string. Save unused substitutions. |
| 354 if (shouldFormatMessage) { | 378 if (shouldFormatMessage) { |
| 355 // Multiple parameters with the first being a format string. Save un used substitutions. | 379 var result = this._formatWithSubstitutionString(/** @type {string} * */ (parameters[0].description), parameters.slice(1), formattedResult); |
| 356 var result = this._formatWithSubstitutionString(parameters[0].descri ption, parameters.slice(1), formattedResult); | |
| 357 parameters = result.unusedSubstitutions; | 380 parameters = result.unusedSubstitutions; |
| 358 if (parameters.length) | 381 if (parameters.length) |
| 359 formattedResult.createTextChild(" "); | 382 formattedResult.createTextChild(" "); |
| 360 } | 383 } |
| 361 | 384 |
| 362 if (this._message.type === WebInspector.ConsoleMessage.MessageType.Table ) { | 385 if (this._message.type === WebInspector.ConsoleMessage.MessageType.Table ) { |
| 363 formattedResult.appendChild(this._formatParameterAsTable(parameters) ); | 386 formattedResult.appendChild(this._formatParameterAsTable(parameters) ); |
| 364 return formattedResult; | 387 return formattedResult; |
| 365 } | 388 } |
| 366 | 389 |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 748 } | 771 } |
| 749 rootElement.appendChild(this._previewFormatter.renderPropertyPre view(type, subtype, description)); | 772 rootElement.appendChild(this._previewFormatter.renderPropertyPre view(type, subtype, description)); |
| 750 } | 773 } |
| 751 } | 774 } |
| 752 | 775 |
| 753 return rootElement; | 776 return rootElement; |
| 754 }, | 777 }, |
| 755 | 778 |
| 756 /** | 779 /** |
| 757 * @param {string} format | 780 * @param {string} format |
| 758 * @param {!Array.<string>} parameters | 781 * @param {!Array.<!WebInspector.RemoteObject>} parameters |
| 759 * @param {!Element} formattedResult | 782 * @param {!Element} formattedResult |
| 760 */ | 783 */ |
| 761 _formatWithSubstitutionString: function(format, parameters, formattedResult) | 784 _formatWithSubstitutionString: function(format, parameters, formattedResult) |
| 762 { | 785 { |
| 763 var formatters = {}; | 786 var formatters = {}; |
| 764 | 787 |
| 765 /** | 788 /** |
| 766 * @param {boolean} force | 789 * @param {boolean} force |
| 767 * @param {!WebInspector.RemoteObject} obj | 790 * @param {!WebInspector.RemoteObject} obj |
| 768 * @return {!Element} | 791 * @return {!Element} |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 934 /** | 957 /** |
| 935 * @return {!Element} | 958 * @return {!Element} |
| 936 */ | 959 */ |
| 937 contentElement: function() | 960 contentElement: function() |
| 938 { | 961 { |
| 939 if (this._contentElement) | 962 if (this._contentElement) |
| 940 return this._contentElement; | 963 return this._contentElement; |
| 941 | 964 |
| 942 var contentElement = createElementWithClass("div", "console-message"); | 965 var contentElement = createElementWithClass("div", "console-message"); |
| 943 this._contentElement = contentElement; | 966 this._contentElement = contentElement; |
| 944 | |
| 945 if (this._message.type === WebInspector.ConsoleMessage.MessageType.Start Group || this._message.type === WebInspector.ConsoleMessage.MessageType.StartGro upCollapsed) | 967 if (this._message.type === WebInspector.ConsoleMessage.MessageType.Start Group || this._message.type === WebInspector.ConsoleMessage.MessageType.StartGro upCollapsed) |
| 946 contentElement.classList.add("console-group-title"); | 968 contentElement.classList.add("console-group-title"); |
| 947 | 969 |
| 948 contentElement.appendChild(this._formatMessage()); | 970 var formattedMessage; |
| 971 var consoleMessage = this._message; | |
| 972 var shouldIncludeTrace = !!consoleMessage.stackTrace && (consoleMessage. source === WebInspector.ConsoleMessage.MessageSource.Network || consoleMessage.l evel === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.RevokedError || consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trace || consoleMessage.level === W ebInspector.ConsoleMessage.MessageLevel.Warning); | |
| 973 if (shouldIncludeTrace) | |
| 974 formattedMessage = this._buildMessageWithStackTrace(consoleMessage, this._linkifier); | |
| 975 else | |
| 976 formattedMessage = this._buildMessage(consoleMessage); | |
| 977 contentElement.appendChild(formattedMessage); | |
| 949 | 978 |
| 950 this.updateTimestamp(WebInspector.moduleSetting("consoleTimestampsEnable d").get()); | 979 this.updateTimestamp(WebInspector.moduleSetting("consoleTimestampsEnable d").get()); |
| 951 | |
| 952 return this._contentElement; | 980 return this._contentElement; |
| 953 }, | 981 }, |
| 954 | 982 |
| 955 /** | 983 /** |
| 956 * @return {!Element} | 984 * @return {!Element} |
| 957 */ | 985 */ |
| 958 toMessageElement: function() | 986 toMessageElement: function() |
| 959 { | 987 { |
| 960 if (this._element) | 988 if (this._element) |
| 961 return this._element; | 989 return this._element; |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1230 { | 1258 { |
| 1231 if (!this._element) { | 1259 if (!this._element) { |
| 1232 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this ); | 1260 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this ); |
| 1233 this._element.classList.toggle("collapsed", this._collapsed); | 1261 this._element.classList.toggle("collapsed", this._collapsed); |
| 1234 } | 1262 } |
| 1235 return this._element; | 1263 return this._element; |
| 1236 }, | 1264 }, |
| 1237 | 1265 |
| 1238 __proto__: WebInspector.ConsoleViewMessage.prototype | 1266 __proto__: WebInspector.ConsoleViewMessage.prototype |
| 1239 } | 1267 } |
| OLD | NEW |