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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
122 | 122 |
123 /** | 123 /** |
124 * @param {!WebInspector.ConsoleMessage} consoleMessage | 124 * @param {!WebInspector.ConsoleMessage} consoleMessage |
125 * @return {!Element} | 125 * @return {!Element} |
126 */ | 126 */ |
127 _buildTableMessage: function(consoleMessage) | 127 _buildTableMessage: function(consoleMessage) |
128 { | 128 { |
129 var formattedMessage = createElement("span"); | 129 var formattedMessage = createElement("span"); |
130 WebInspector.appendStyle(formattedMessage, "components/objectValue.css") ; | 130 WebInspector.appendStyle(formattedMessage, "components/objectValue.css") ; |
131 formattedMessage.className = "console-message-text source-code"; | 131 formattedMessage.className = "console-message-text source-code"; |
132 var anchorElement = this._buildMessageAnchor(consoleMessage); | 132 var anchorElement = this._buildMessageAnchor(consoleMessage, this._linki fier); |
133 if (anchorElement) | 133 if (anchorElement) |
134 formattedMessage.appendChild(anchorElement); | 134 formattedMessage.appendChild(anchorElement); |
135 | 135 |
136 var table = consoleMessage.parameters && consoleMessage.parameters.lengt h ? consoleMessage.parameters[0] : null; | 136 var table = consoleMessage.parameters && consoleMessage.parameters.lengt h ? consoleMessage.parameters[0] : null; |
137 if (table) | 137 if (table) |
138 table = this._parameterToRemoteObject(table, this._target()); | 138 table = this._parameterToRemoteObject(table, this._target()); |
lushnikov
2016/10/22 03:10:19
consoleMessage.target();
| |
139 if (!table || !table.preview) | 139 if (!table || !table.preview) |
140 return formattedMessage; | 140 return formattedMessage; |
141 | 141 |
142 var columnNames = []; | 142 var columnNames = []; |
143 var preview = table.preview; | 143 var preview = table.preview; |
144 var rows = []; | 144 var rows = []; |
145 for (var i = 0; i < preview.properties.length; ++i) { | 145 for (var i = 0; i < preview.properties.length; ++i) { |
146 var rowProperty = preview.properties[i]; | 146 var rowProperty = preview.properties[i]; |
147 var rowPreview = rowProperty.valuePreview; | 147 var rowPreview = rowProperty.valuePreview; |
148 if (!rowPreview) | 148 if (!rowPreview) |
(...skipping 29 matching lines...) Expand all Loading... | |
178 flatValues.push(rowValue[columnNames[j]]); | 178 flatValues.push(rowValue[columnNames[j]]); |
179 } | 179 } |
180 columnNames.unshift(WebInspector.UIString("(index)")); | 180 columnNames.unshift(WebInspector.UIString("(index)")); |
181 | 181 |
182 if (flatValues.length) { | 182 if (flatValues.length) { |
183 this._dataGrid = WebInspector.SortableDataGrid.create(columnNames, f latValues); | 183 this._dataGrid = WebInspector.SortableDataGrid.create(columnNames, f latValues); |
184 | 184 |
185 var formattedResult = createElement("span"); | 185 var formattedResult = createElement("span"); |
186 var tableElement = formattedResult.createChild("div", "console-messa ge-formatted-table"); | 186 var tableElement = formattedResult.createChild("div", "console-messa ge-formatted-table"); |
187 var dataGridContainer = tableElement.createChild("span"); | 187 var dataGridContainer = tableElement.createChild("span"); |
188 tableElement.appendChild(this._formatParameter(table, true, false)); | 188 tableElement.appendChild(this._formatParameter(consoleMessage.type, this._linkifier, table, true, false)); |
189 dataGridContainer.appendChild(this._dataGrid.element); | 189 dataGridContainer.appendChild(this._dataGrid.element); |
190 formattedMessage.appendChild(formattedResult); | 190 formattedMessage.appendChild(formattedResult); |
191 this._dataGrid.renderInline(); | 191 this._dataGrid.renderInline(); |
192 } | 192 } |
193 return formattedMessage; | 193 return formattedMessage; |
194 }, | 194 }, |
195 | 195 |
196 /** | 196 /** |
197 * @param {!WebInspector.ConsoleMessage} consoleMessage | 197 * @param {!WebInspector.ConsoleMessage} consoleMessage |
198 * @param {!WebInspector.Linkifier} linkifier | |
198 * @return {!Element} | 199 * @return {!Element} |
199 */ | 200 */ |
200 _buildMessage: function(consoleMessage) | 201 _buildMessage: function(consoleMessage, linkifier) |
201 { | 202 { |
202 var messageElement; | 203 var messageElement; |
203 if (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource. ConsoleAPI) { | 204 if (consoleMessage.source === WebInspector.ConsoleMessage.MessageSource. ConsoleAPI) { |
204 switch (consoleMessage.type) { | 205 switch (consoleMessage.type) { |
205 case WebInspector.ConsoleMessage.MessageType.Trace: | 206 case WebInspector.ConsoleMessage.MessageType.Trace: |
206 messageElement = this._format(consoleMessage.parameters || ["con sole.trace"]); | 207 messageElement = this._format(consoleMessage, linkifier, console Message.parameters || ["console.trace"]); |
207 break; | 208 break; |
208 case WebInspector.ConsoleMessage.MessageType.Clear: | 209 case WebInspector.ConsoleMessage.MessageType.Clear: |
209 messageElement = createElementWithClass("span", "console-info"); | 210 messageElement = createElementWithClass("span", "console-info"); |
210 messageElement.textContent = WebInspector.UIString("Console was cleared"); | 211 messageElement.textContent = WebInspector.UIString("Console was cleared"); |
211 break; | 212 break; |
212 case WebInspector.ConsoleMessage.MessageType.Assert: | 213 case WebInspector.ConsoleMessage.MessageType.Assert: |
213 var args = [WebInspector.UIString("Assertion failed:")]; | 214 var args = [WebInspector.UIString("Assertion failed:")]; |
214 if (consoleMessage.parameters) | 215 if (consoleMessage.parameters) |
215 args = args.concat(consoleMessage.parameters); | 216 args = args.concat(consoleMessage.parameters); |
216 messageElement = this._format(args); | 217 messageElement = this._format(consoleMessage, linkifier, args); |
217 break; | 218 break; |
218 case WebInspector.ConsoleMessage.MessageType.Dir: | 219 case WebInspector.ConsoleMessage.MessageType.Dir: |
219 var obj = consoleMessage.parameters ? consoleMessage.parameters[ 0] : undefined; | 220 var obj = consoleMessage.parameters ? consoleMessage.parameters[ 0] : undefined; |
220 var args = ["%O", obj]; | 221 var args = ["%O", obj]; |
221 messageElement = this._format(args); | 222 messageElement = this._format(consoleMessage, linkifier, args); |
222 break; | 223 break; |
223 case WebInspector.ConsoleMessage.MessageType.Profile: | 224 case WebInspector.ConsoleMessage.MessageType.Profile: |
224 case WebInspector.ConsoleMessage.MessageType.ProfileEnd: | 225 case WebInspector.ConsoleMessage.MessageType.ProfileEnd: |
225 messageElement = this._format([consoleMessage.messageText]); | 226 messageElement = this._format(consoleMessage, linkifier, [consol eMessage.messageText]); |
226 break; | 227 break; |
227 default: | 228 default: |
228 if (consoleMessage.parameters && consoleMessage.parameters.lengt h === 1 && consoleMessage.parameters[0].type === "string") | 229 if (consoleMessage.parameters && consoleMessage.parameters.lengt h === 1 && consoleMessage.parameters[0].type === "string") |
229 messageElement = this._tryFormatAsError(/** @type {string} * /(consoleMessage.parameters[0].value)); | 230 messageElement = this._tryFormatAsError(consoleMessage.targe t(), linkifier, /** @type {string} */(consoleMessage.parameters[0].value)); |
230 var args = consoleMessage.parameters || [consoleMessage.messageT ext]; | 231 var args = consoleMessage.parameters || [consoleMessage.messageT ext]; |
231 messageElement = messageElement || this._format(args); | 232 messageElement = messageElement || this._format(consoleMessage, linkifier, args); |
232 } | 233 } |
233 } else if (consoleMessage.source === WebInspector.ConsoleMessage.Message Source.Network) { | 234 } else if (consoleMessage.source === WebInspector.ConsoleMessage.Message Source.Network) { |
234 if (consoleMessage.request) { | 235 if (consoleMessage.request) { |
235 messageElement = createElement("span"); | 236 messageElement = createElement("span"); |
236 if (consoleMessage.level === WebInspector.ConsoleMessage.Message Level.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel .RevokedError) { | 237 if (consoleMessage.level === WebInspector.ConsoleMessage.Message Level.Error || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel .RevokedError) { |
237 messageElement.createTextChildren(consoleMessage.request.req uestMethod, " "); | 238 messageElement.createTextChildren(consoleMessage.request.req uestMethod, " "); |
238 messageElement.appendChild(WebInspector.Linkifier.linkifyUsi ngRevealer(consoleMessage.request, consoleMessage.request.url, consoleMessage.re quest.url)); | 239 messageElement.appendChild(WebInspector.Linkifier.linkifyUsi ngRevealer(consoleMessage.request, consoleMessage.request.url, consoleMessage.re quest.url)); |
239 if (consoleMessage.request.failed) | 240 if (consoleMessage.request.failed) |
240 messageElement.createTextChildren(" ", consoleMessage.re quest.localizedFailDescription); | 241 messageElement.createTextChildren(" ", consoleMessage.re quest.localizedFailDescription); |
241 else | 242 else |
242 messageElement.createTextChildren(" ", String(consoleMes sage.request.statusCode), " (", consoleMessage.request.statusText, ")"); | 243 messageElement.createTextChildren(" ", String(consoleMes sage.request.statusCode), " (", consoleMessage.request.statusText, ")"); |
243 } else { | 244 } else { |
244 var fragment = WebInspector.linkifyStringAsFragmentWithCusto mLinkifier(consoleMessage.messageText, linkifyRequest.bind(consoleMessage)); | 245 var fragment = WebInspector.linkifyStringAsFragmentWithCusto mLinkifier(consoleMessage.messageText, linkifyRequest.bind(consoleMessage)); |
245 messageElement.appendChild(fragment); | 246 messageElement.appendChild(fragment); |
246 } | 247 } |
247 } else { | 248 } else { |
248 messageElement = this._format([consoleMessage.messageText]); | 249 messageElement = this._format(consoleMessage, linkifier, [consol eMessage.messageText]); |
249 } | 250 } |
250 } else { | 251 } else { |
251 var args = consoleMessage.parameters || [consoleMessage.messageText] ; | 252 var args = consoleMessage.parameters || [consoleMessage.messageText] ; |
252 messageElement = this._format(args); | 253 messageElement = this._format(consoleMessage, linkifier, args); |
253 } | 254 } |
254 | 255 |
255 var formattedMessage = createElement("span"); | 256 var formattedMessage = createElement("span"); |
256 WebInspector.appendStyle(formattedMessage, "components/objectValue.css") ; | 257 WebInspector.appendStyle(formattedMessage, "components/objectValue.css") ; |
257 formattedMessage.className = "console-message-text source-code"; | 258 formattedMessage.className = "console-message-text source-code"; |
258 | 259 |
259 var anchorElement = this._buildMessageAnchor(consoleMessage); | 260 var anchorElement = this._buildMessageAnchor(consoleMessage, linkifier); |
260 if (anchorElement) | 261 if (anchorElement) |
261 formattedMessage.appendChild(anchorElement); | 262 formattedMessage.appendChild(anchorElement); |
262 formattedMessage.appendChild(messageElement); | 263 formattedMessage.appendChild(messageElement); |
263 return formattedMessage; | 264 return formattedMessage; |
264 | 265 |
265 /** | 266 /** |
266 * @param {string} title | 267 * @param {string} title |
267 * @return {!Element} | 268 * @return {!Element} |
268 * @this {WebInspector.ConsoleMessage} | 269 * @this {WebInspector.ConsoleMessage} |
269 */ | 270 */ |
270 function linkifyRequest(title) | 271 function linkifyRequest(title) |
271 { | 272 { |
272 return WebInspector.Linkifier.linkifyUsingRevealer(/** @type {!WebIn spector.NetworkRequest} */ (this.request), title, this.request.url); | 273 return WebInspector.Linkifier.linkifyUsingRevealer(/** @type {!WebIn spector.NetworkRequest} */ (this.request), title, this.request.url); |
273 } | 274 } |
274 }, | 275 }, |
275 | 276 |
276 /** | 277 /** |
277 * @param {!WebInspector.ConsoleMessage} consoleMessage | 278 * @param {!WebInspector.ConsoleMessage} consoleMessage |
279 * @param {!WebInspector.Linkifier} linkifier | |
278 * @return {?Element} | 280 * @return {?Element} |
279 */ | 281 */ |
280 _buildMessageAnchor: function(consoleMessage) | 282 _buildMessageAnchor: function(consoleMessage, linkifier) |
281 { | 283 { |
282 var anchorElement = null; | 284 var anchorElement = null; |
283 if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource. Network || consoleMessage.request) { | 285 if (consoleMessage.source !== WebInspector.ConsoleMessage.MessageSource. Network || consoleMessage.request) { |
284 if (consoleMessage.scriptId) | 286 if (consoleMessage.scriptId) |
285 anchorElement = this._linkifyScriptId(consoleMessage.scriptId, c onsoleMessage.url || "", consoleMessage.line, consoleMessage.column); | 287 anchorElement = this._linkifyScriptId(linkifier, consoleMessage) ; |
lushnikov
2016/10/22 03:10:18
1. the order should be consistent
2. can we pass j
| |
286 else if (consoleMessage.stackTrace && consoleMessage.stackTrace.call Frames.length) | 288 else if (consoleMessage.stackTrace && consoleMessage.stackTrace.call Frames.length) |
287 anchorElement = this._linkifyStackTraceTopFrame(consoleMessage.s tackTrace); | 289 anchorElement = this._linkifyStackTraceTopFrame(linkifier, conso leMessage); |
lushnikov
2016/10/22 03:10:18
inline this as well
| |
288 else if (consoleMessage.url && consoleMessage.url !== "undefined") | 290 else if (consoleMessage.url && consoleMessage.url !== "undefined") |
289 anchorElement = this._linkifyLocation(consoleMessage.url, consol eMessage.line, consoleMessage.column); | 291 anchorElement = this._linkifyLocation(linkifier, consoleMessage) ; |
lushnikov
2016/10/22 03:10:18
inline this as well
| |
290 } else if (consoleMessage.url) { | 292 } else if (consoleMessage.url) { |
291 var url = consoleMessage.url; | 293 var url = consoleMessage.url; |
292 var isExternal = !WebInspector.resourceForURL(url) && !WebInspector. networkMapping.uiSourceCodeForURLForAnyTarget(url); | 294 var isExternal = !WebInspector.resourceForURL(url) && !WebInspector. networkMapping.uiSourceCodeForURLForAnyTarget(url); |
293 anchorElement = WebInspector.linkifyURLAsNode(url, url, "console-mes sage-url", isExternal); | 295 anchorElement = WebInspector.linkifyURLAsNode(url, url, "console-mes sage-url", isExternal); |
294 } | 296 } |
295 | 297 |
296 // 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. | 298 // 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. |
297 if (anchorElement) | 299 if (anchorElement) |
298 anchorElement.appendChild(createTextNode(" ")); | 300 anchorElement.appendChild(createTextNode(" ")); |
299 return anchorElement; | 301 return anchorElement; |
300 }, | 302 }, |
301 | 303 |
302 /** | 304 /** |
303 * @param {!WebInspector.ConsoleMessage} consoleMessage | 305 * @param {!WebInspector.ConsoleMessage} consoleMessage |
304 * @param {!WebInspector.Target} target | 306 * @param {!WebInspector.Target} target |
305 * @param {!WebInspector.Linkifier} linkifier | 307 * @param {!WebInspector.Linkifier} linkifier |
306 * @return {!Element} | 308 * @return {!Element} |
307 */ | 309 */ |
308 _buildMessageWithStackTrace: function(consoleMessage, target, linkifier) | 310 _buildMessageWithStackTrace: function(consoleMessage, target, linkifier) |
309 { | 311 { |
310 var toggleElement = createElementWithClass("div", "console-message-stack -trace-toggle"); | 312 var toggleElement = createElementWithClass("div", "console-message-stack -trace-toggle"); |
311 var triangleElement = toggleElement.createChild("div", "console-message- stack-trace-triangle"); | 313 var triangleElement = toggleElement.createChild("div", "console-message- stack-trace-triangle"); |
312 var contentElement = toggleElement.createChild("div", "console-message-s tack-trace-wrapper"); | 314 var contentElement = toggleElement.createChild("div", "console-message-s tack-trace-wrapper"); |
313 | 315 |
314 var messageElement = this._buildMessage(consoleMessage); | 316 var messageElement = this._buildMessage(consoleMessage, linkifier); |
315 var clickableElement = contentElement.createChild("div"); | 317 var clickableElement = contentElement.createChild("div"); |
316 clickableElement.appendChild(messageElement); | 318 clickableElement.appendChild(messageElement); |
317 var stackTraceElement = contentElement.createChild("div"); | 319 var stackTraceElement = contentElement.createChild("div"); |
318 var stackTracePreview = WebInspector.DOMPresentationUtils.buildStackTrac ePreviewContents(target, linkifier, consoleMessage.stackTrace); | 320 var stackTracePreview = WebInspector.DOMPresentationUtils.buildStackTrac ePreviewContents(target, linkifier, consoleMessage.stackTrace); |
319 stackTraceElement.appendChild(stackTracePreview); | 321 stackTraceElement.appendChild(stackTracePreview); |
320 stackTraceElement.classList.add("hidden"); | 322 stackTraceElement.classList.add("hidden"); |
321 | 323 |
322 /** | 324 /** |
323 * @param {boolean} expand | 325 * @param {boolean} expand |
324 */ | 326 */ |
(...skipping 17 matching lines...) Expand all Loading... | |
342 clickableElement.addEventListener("click", toggleStackTrace, false); | 344 clickableElement.addEventListener("click", toggleStackTrace, false); |
343 triangleElement.addEventListener("click", toggleStackTrace, false); | 345 triangleElement.addEventListener("click", toggleStackTrace, false); |
344 if (consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trac e) | 346 if (consoleMessage.type === WebInspector.ConsoleMessage.MessageType.Trac e) |
345 expandStackTrace(true); | 347 expandStackTrace(true); |
346 | 348 |
347 toggleElement._expandStackTraceForTest = expandStackTrace.bind(null, tru e); | 349 toggleElement._expandStackTraceForTest = expandStackTrace.bind(null, tru e); |
348 return toggleElement; | 350 return toggleElement; |
349 }, | 351 }, |
350 | 352 |
351 /** | 353 /** |
352 * @param {string} url | 354 * @param {!WebInspector.Linkifier} linkifier |
353 * @param {number} lineNumber | 355 * @param {!WebInspector.ConsoleMessage} consoleMessage |
354 * @param {number} columnNumber | |
355 * @return {?Element} | 356 * @return {?Element} |
356 */ | 357 */ |
357 _linkifyLocation: function(url, lineNumber, columnNumber) | 358 _linkifyLocation: function(linkifier, consoleMessage) |
lushnikov
2016/10/22 03:10:19
will be removed
| |
358 { | 359 { |
359 var target = this._target(); | 360 var target = consoleMessage.target(); |
360 if (!target) | 361 if (!target) |
361 return null; | 362 return null; |
362 return this._linkifier.linkifyScriptLocation(target, null, url, lineNumb er, columnNumber, "console-message-url"); | 363 return this._linkifier.linkifyScriptLocation(target, null, consoleMessag e.url || "", consoleMessage.line, consoleMessage.column, "console-message-url"); |
lushnikov
2016/10/22 03:10:18
linkifier
| |
363 }, | 364 }, |
364 | 365 |
365 /** | 366 /** |
366 * @param {!RuntimeAgent.StackTrace} stackTrace | 367 * @param {!WebInspector.Linkifier} linkifier |
368 * @param {!WebInspector.ConsoleMessage} consoleMessage | |
367 * @return {?Element} | 369 * @return {?Element} |
368 */ | 370 */ |
lushnikov
2016/10/22 03:10:18
will be removed
| |
369 _linkifyStackTraceTopFrame: function(stackTrace) | 371 _linkifyStackTraceTopFrame: function(linkifier, consoleMessage) |
370 { | 372 { |
371 var target = this._target(); | 373 var target = consoleMessage.target(); |
372 if (!target) | 374 if (!target) |
373 return null; | 375 return null; |
374 return this._linkifier.linkifyStackTraceTopFrame(target, stackTrace, "co nsole-message-url"); | 376 return this._linkifier.linkifyStackTraceTopFrame(target, /** @type {!Run timeAgent.StackTrace} **/ (consoleMessage.stackTrace), "console-message-url"); |
375 }, | 377 }, |
376 | 378 |
377 /** | 379 /** |
378 * @param {string} scriptId | 380 * @param {!WebInspector.Linkifier} linkifier |
379 * @param {string} url | 381 * @param {!WebInspector.ConsoleMessage} consoleMessage |
380 * @param {number} lineNumber | |
381 * @param {number} columnNumber | |
382 * @return {?Element} | 382 * @return {?Element} |
383 */ | 383 */ |
384 _linkifyScriptId: function(scriptId, url, lineNumber, columnNumber) | 384 _linkifyScriptId: function(linkifier, consoleMessage) |
lushnikov
2016/10/22 03:10:19
will be removed
| |
385 { | 385 { |
386 var target = this._target(); | 386 var target = consoleMessage.target(); |
387 if (!target) | 387 if (!target) |
388 return null; | 388 return null; |
389 return this._linkifier.linkifyScriptLocation(target, scriptId, url, line Number, columnNumber, "console-message-url"); | 389 return this._linkifier.linkifyScriptLocation(target, consoleMessage.scri ptId, consoleMessage.url || "", consoleMessage.line, consoleMessage.column, "con sole-message-url"); |
390 }, | 390 }, |
391 | 391 |
392 /** | 392 /** |
393 * @param {!WebInspector.RemoteObject|!Object|string} parameter | 393 * @param {!WebInspector.RemoteObject|!Object|string} parameter |
394 * @param {?WebInspector.Target} target | 394 * @param {?WebInspector.Target} target |
395 * @return {!WebInspector.RemoteObject} | 395 * @return {!WebInspector.RemoteObject} |
396 */ | 396 */ |
397 _parameterToRemoteObject: function(parameter, target) | 397 _parameterToRemoteObject: function(parameter, target) |
398 { | 398 { |
399 if (parameter instanceof WebInspector.RemoteObject) | 399 if (parameter instanceof WebInspector.RemoteObject) |
400 return parameter; | 400 return parameter; |
401 if (!target) | 401 if (!target) |
402 return WebInspector.RemoteObject.fromLocalObject(parameter); | 402 return WebInspector.RemoteObject.fromLocalObject(parameter); |
403 if (typeof parameter === "object") | 403 if (typeof parameter === "object") |
404 return target.runtimeModel.createRemoteObject(parameter); | 404 return target.runtimeModel.createRemoteObject(parameter); |
405 return target.runtimeModel.createRemoteObjectFromPrimitiveValue(paramete r); | 405 return target.runtimeModel.createRemoteObjectFromPrimitiveValue(paramete r); |
406 }, | 406 }, |
407 | 407 |
408 /** | 408 /** |
409 * @param {!WebInspector.ConsoleMessage} consoleMessage | |
410 * @param {!WebInspector.Linkifier} linkifier | |
409 * @param {!Array.<!WebInspector.RemoteObject|string>} parameters | 411 * @param {!Array.<!WebInspector.RemoteObject|string>} parameters |
410 * @return {!Element} | 412 * @return {!Element} |
411 */ | 413 */ |
412 _format: function(parameters) | 414 _format: function(consoleMessage, linkifier, parameters) |
413 { | 415 { |
414 // This node is used like a Builder. Values are continually appended ont o it. | 416 // This node is used like a Builder. Values are continually appended ont o it. |
415 var formattedResult = createElement("span"); | 417 var formattedResult = createElement("span"); |
416 if (!parameters.length) | 418 if (!parameters.length) |
417 return formattedResult; | 419 return formattedResult; |
418 | 420 |
419 // Formatting code below assumes that parameters are all wrappers wherea s frontend console | 421 // Formatting code below assumes that parameters are all wrappers wherea s frontend console |
420 // API allows passing arbitrary values as messages (strings, numbers, et c.). Wrap them here. | 422 // API allows passing arbitrary values as messages (strings, numbers, et c.). Wrap them here. |
421 // FIXME: Only pass runtime wrappers here. | 423 // FIXME: Only pass runtime wrappers here. |
422 for (var i = 0; i < parameters.length; ++i) | 424 for (var i = 0; i < parameters.length; ++i) |
423 parameters[i] = this._parameterToRemoteObject(parameters[i], this._t arget()); | 425 parameters[i] = this._parameterToRemoteObject(parameters[i], console Message.target()); |
424 | 426 |
425 // There can be string log and string eval result. We distinguish betwee n them based on message type. | 427 // There can be string log and string eval result. We distinguish betwee n them based on message type. |
426 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); | 428 var messageType = consoleMessage.type; |
429 var shouldFormatMessage = WebInspector.RemoteObject.type((/** @type {!Ar ray.<!WebInspector.RemoteObject>} **/ (parameters))[0]) === "string" && (message Type !== WebInspector.ConsoleMessage.MessageType.Result || consoleMessage.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.level === W ebInspector.ConsoleMessage.MessageLevel.RevokedError); | |
427 | 430 |
428 // Multiple parameters with the first being a format string. Save unused substitutions. | 431 // Multiple parameters with the first being a format string. Save unused substitutions. |
429 if (shouldFormatMessage) { | 432 if (shouldFormatMessage) { |
430 var result = this._formatWithSubstitutionString(/** @type {string} * */ (parameters[0].description), parameters.slice(1), formattedResult); | 433 var result = this._formatWithSubstitutionString(messageType, linkifi er, /** @type {string} **/ (parameters[0].description), parameters.slice(1), for mattedResult); |
431 parameters = result.unusedSubstitutions; | 434 parameters = result.unusedSubstitutions; |
432 if (parameters.length) | 435 if (parameters.length) |
433 formattedResult.createTextChild(" "); | 436 formattedResult.createTextChild(" "); |
434 } | 437 } |
435 | 438 |
436 // Single parameter, or unused substitutions from above. | 439 // Single parameter, or unused substitutions from above. |
437 for (var i = 0; i < parameters.length; ++i) { | 440 for (var i = 0; i < parameters.length; ++i) { |
438 // Inline strings when formatting. | 441 // Inline strings when formatting. |
439 if (shouldFormatMessage && parameters[i].type === "string") | 442 if (shouldFormatMessage && parameters[i].type === "string") |
440 formattedResult.appendChild(WebInspector.linkifyStringAsFragment (parameters[i].description)); | 443 formattedResult.appendChild(WebInspector.linkifyStringAsFragment (parameters[i].description)); |
441 else | 444 else |
442 formattedResult.appendChild(this._formatParameter(parameters[i], false, true)); | 445 formattedResult.appendChild(this._formatParameter(messageType, l inkifier, parameters[i], false, true)); |
443 if (i < parameters.length - 1) | 446 if (i < parameters.length - 1) |
444 formattedResult.createTextChild(" "); | 447 formattedResult.createTextChild(" "); |
445 } | 448 } |
446 return formattedResult; | 449 return formattedResult; |
447 }, | 450 }, |
448 | 451 |
449 /** | 452 /** |
453 * @param {string} messageType | |
454 * @param {!WebInspector.Linkifier} linkifier | |
450 * @param {!WebInspector.RemoteObject} output | 455 * @param {!WebInspector.RemoteObject} output |
451 * @param {boolean=} forceObjectFormat | 456 * @param {boolean=} forceObjectFormat |
452 * @param {boolean=} includePreview | 457 * @param {boolean=} includePreview |
453 * @return {!Element} | 458 * @return {!Element} |
454 */ | 459 */ |
455 _formatParameter: function(output, forceObjectFormat, includePreview) | 460 _formatParameter: function(messageType, linkifier, output, forceObjectFormat , includePreview) |
456 { | 461 { |
457 if (output.customPreview()) | 462 if (output.customPreview()) |
458 return (new WebInspector.CustomPreviewComponent(output)).element; | 463 return (new WebInspector.CustomPreviewComponent(output)).element; |
459 | 464 |
460 var type = forceObjectFormat ? "object" : (output.subtype || output.type ); | 465 var type = forceObjectFormat ? "object" : (output.subtype || output.type ); |
461 var span = createElement("span"); | 466 var element; |
462 span.className = "object-value-" + type + " source-code"; | |
463 switch (type) { | 467 switch (type) { |
464 case "array": | 468 case "array": |
465 case "typedarray": | 469 case "typedarray": |
466 this._formatParameterAsArray(output, span); | 470 element = this._formatParameterAsArray(output, linkifier, messageTyp e); |
467 break; | 471 break; |
468 case "error": | 472 case "error": |
469 this._formatParameterAsError(output, span); | 473 element = this._formatParameterAsError(output, linkifier); |
470 break; | 474 break; |
471 case "function": | 475 case "function": |
472 case "generator": | 476 case "generator": |
473 this._formatParameterAsFunction(output, span, includePreview); | 477 element = this._formatParameterAsFunction(output, includePreview); |
474 break; | 478 break; |
475 case "iterator": | 479 case "iterator": |
476 case "map": | 480 case "map": |
477 case "object": | 481 case "object": |
478 case "promise": | 482 case "promise": |
479 case "proxy": | 483 case "proxy": |
480 case "set": | 484 case "set": |
481 this._formatParameterAsObject(output, span, includePreview); | 485 element = this._formatParameterAsObject(output, linkifier, includePr eview); |
lushnikov
2016/10/22 03:10:18
element= createElement("span");
element.appendChil
| |
482 break; | 486 break; |
483 case "node": | 487 case "node": |
484 this._formatParameterAsNode(output, span); | 488 element = this._formatParameterAsNode(output, linkifier); |
485 break; | 489 break; |
486 case "string": | 490 case "string": |
487 this._formatParameterAsString(output, span); | 491 element = this._formatParameterAsString(output); |
488 break; | 492 break; |
489 case "boolean": | 493 case "boolean": |
490 case "date": | 494 case "date": |
491 case "null": | 495 case "null": |
492 case "number": | 496 case "number": |
493 case "regexp": | 497 case "regexp": |
494 case "symbol": | 498 case "symbol": |
495 case "undefined": | 499 case "undefined": |
496 this._formatParameterAsValue(output, span); | 500 element = this._formatParameterAsValue(output); |
497 break; | 501 break; |
498 default: | 502 default: |
499 this._formatParameterAsValue(output, span); | 503 element = this._formatParameterAsValue(output); |
500 console.error("Tried to format remote object of unknown type."); | 504 console.error("Tried to format remote object of unknown type."); |
501 } | 505 } |
502 return span; | 506 element.className = "object-value-" + type + " source-code"; |
507 return element; | |
503 }, | 508 }, |
504 | 509 |
505 /** | 510 /** |
506 * @param {!WebInspector.RemoteObject} obj | 511 * @param {!WebInspector.RemoteObject} obj |
507 * @param {!Element} elem | 512 * @return {!Element} |
508 */ | 513 */ |
509 _formatParameterAsValue: function(obj, elem) | 514 _formatParameterAsValue: function(obj) |
510 { | 515 { |
511 elem.createTextChild(obj.description || ""); | 516 var element = createElement("span"); |
517 element.createTextChild(obj.description || ""); | |
512 if (obj.objectId) | 518 if (obj.objectId) |
513 elem.addEventListener("contextmenu", this._contextMenuEventFired.bin d(this, obj), false); | 519 element.addEventListener("contextmenu", this._contextMenuEventFired. bind(this, obj), false); |
520 return element; | |
514 }, | 521 }, |
515 | 522 |
516 /** | 523 /** |
517 * @param {!WebInspector.RemoteObject} obj | 524 * @param {!WebInspector.RemoteObject} obj |
518 * @param {!Element} elem | 525 * @param {!WebInspector.Linkifier} linkifier |
519 * @param {boolean=} includePreview | 526 * @param {boolean=} includePreview |
527 * @return {!Element} | |
520 */ | 528 */ |
521 _formatParameterAsObject: function(obj, elem, includePreview) | 529 _formatParameterAsObject: function(obj, linkifier, includePreview) |
lushnikov
2016/10/22 03:10:18
let's not split this into two - we don't need more
| |
530 { | |
531 var element = createElement("span"); | |
532 var expandableObject = this._formatAsExpandableObject(obj, linkifier, in cludePreview); | |
533 element.appendChild(expandableObject); | |
534 return element; | |
535 }, | |
536 | |
537 /** | |
538 * @param {!WebInspector.RemoteObject} obj | |
539 * @param {!WebInspector.Linkifier} linkifier | |
540 * @param {boolean=} includePreview | |
541 * @return {!Element} | |
542 */ | |
543 _formatAsExpandableObject: function(obj, linkifier, includePreview) | |
522 { | 544 { |
523 var titleElement = createElement("span"); | 545 var titleElement = createElement("span"); |
524 if (includePreview && obj.preview) { | 546 if (includePreview && obj.preview) { |
525 titleElement.classList.add("console-object-preview"); | 547 titleElement.classList.add("console-object-preview"); |
526 this._previewFormatter.appendObjectPreview(titleElement, obj.preview ); | 548 this._previewFormatter.appendObjectPreview(titleElement, obj.preview ); |
527 } else if (obj.type === "function") { | 549 } else if (obj.type === "function") { |
528 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(obj, tit leElement, false); | 550 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(obj, tit leElement, false); |
529 titleElement.classList.add("object-value-function"); | 551 titleElement.classList.add("object-value-function"); |
530 } else { | 552 } else { |
531 titleElement.createTextChild(obj.description || ""); | 553 titleElement.createTextChild(obj.description || ""); |
532 } | 554 } |
533 | 555 |
534 var section = new WebInspector.ObjectPropertiesSection(obj, titleElement , this._linkifier); | 556 var section = new WebInspector.ObjectPropertiesSection(obj, titleElement , linkifier); |
535 section.element.classList.add("console-view-object-properties-section"); | 557 section.element.classList.add("console-view-object-properties-section"); |
536 section.enableContextMenu(); | 558 section.enableContextMenu(); |
537 elem.appendChild(section.element); | 559 return section.element; |
538 }, | 560 }, |
539 | 561 |
540 /** | 562 /** |
541 * @param {!WebInspector.RemoteObject} func | 563 * @param {!WebInspector.RemoteObject} func |
542 * @param {!Element} element | |
543 * @param {boolean=} includePreview | 564 * @param {boolean=} includePreview |
565 * @return {!Element} | |
544 */ | 566 */ |
545 _formatParameterAsFunction: function(func, element, includePreview) | 567 _formatParameterAsFunction: function(func, includePreview) |
546 { | 568 { |
569 var element = createElement("span"); | |
547 WebInspector.RemoteFunction.objectAsFunction(func).targetFunction().then (formatTargetFunction.bind(this)); | 570 WebInspector.RemoteFunction.objectAsFunction(func).targetFunction().then (formatTargetFunction.bind(this)); |
571 return element; | |
548 | 572 |
549 /** | 573 /** |
550 * @param {!WebInspector.RemoteObject} targetFunction | 574 * @param {!WebInspector.RemoteObject} targetFunction |
551 * @this {WebInspector.ConsoleViewMessage} | 575 * @this {WebInspector.ConsoleViewMessage} |
552 */ | 576 */ |
553 function formatTargetFunction(targetFunction) | 577 function formatTargetFunction(targetFunction) |
554 { | 578 { |
555 var functionElement = createElement("span"); | 579 var functionElement = createElement("span"); |
556 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(targetFu nction, functionElement, true, includePreview); | 580 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(targetFu nction, functionElement, true, includePreview); |
557 element.appendChild(functionElement); | 581 element.appendChild(functionElement); |
(...skipping 24 matching lines...) Expand all Loading... | |
582 _renderPropertyPreviewOrAccessor: function(object, propertyPath) | 606 _renderPropertyPreviewOrAccessor: function(object, propertyPath) |
583 { | 607 { |
584 var property = propertyPath.peekLast(); | 608 var property = propertyPath.peekLast(); |
585 if (property.type === "accessor") | 609 if (property.type === "accessor") |
586 return this._formatAsAccessorProperty(object, propertyPath.map(prope rty => property.name), false); | 610 return this._formatAsAccessorProperty(object, propertyPath.map(prope rty => property.name), false); |
587 return this._previewFormatter.renderPropertyPreview(property.type, /** @ type {string} */ (property.subtype), property.value); | 611 return this._previewFormatter.renderPropertyPreview(property.type, /** @ type {string} */ (property.subtype), property.value); |
588 }, | 612 }, |
589 | 613 |
590 /** | 614 /** |
591 * @param {!WebInspector.RemoteObject} object | 615 * @param {!WebInspector.RemoteObject} object |
592 * @param {!Element} elem | 616 * @param {!WebInspector.Linkifier} linkifier |
617 * @return {!Element} | |
593 */ | 618 */ |
594 _formatParameterAsNode: function(object, elem) | 619 _formatParameterAsNode: function(object, linkifier) |
595 { | 620 { |
621 var element = createElement("span"); | |
596 WebInspector.Renderer.renderPromise(object).then(appendRenderer.bind(thi s), failedToRender.bind(this)); | 622 WebInspector.Renderer.renderPromise(object).then(appendRenderer.bind(thi s), failedToRender.bind(this)); |
623 return element; | |
624 | |
597 /** | 625 /** |
598 * @param {!Element} rendererElement | 626 * @param {!Element} rendererElement |
599 * @this {WebInspector.ConsoleViewMessage} | 627 * @this {WebInspector.ConsoleViewMessage} |
600 */ | 628 */ |
601 function appendRenderer(rendererElement) | 629 function appendRenderer(rendererElement) |
602 { | 630 { |
603 elem.appendChild(rendererElement); | 631 element.appendChild(rendererElement); |
604 this._formattedParameterAsNodeForTest(); | 632 this._formattedParameterAsNodeForTest(); |
605 } | 633 } |
606 | 634 |
607 /** | 635 /** |
608 * @this {WebInspector.ConsoleViewMessage} | 636 * @this {WebInspector.ConsoleViewMessage} |
609 */ | 637 */ |
610 function failedToRender() | 638 function failedToRender() |
611 { | 639 { |
612 this._formatParameterAsObject(object, elem, false); | 640 var expandableObject = this._formatAsExpandableObject(object, linkif ier, false); |
641 element.appendChild(expandableObject); | |
613 } | 642 } |
614 }, | 643 }, |
615 | 644 |
616 _formattedParameterAsNodeForTest: function() | 645 _formattedParameterAsNodeForTest: function() |
617 { | 646 { |
618 }, | 647 }, |
619 | 648 |
620 /** | 649 /** |
621 * @param {!WebInspector.RemoteObject} array | 650 * @param {!WebInspector.RemoteObject} array |
622 * @param {!Element} elem | 651 * @param {!WebInspector.Linkifier} linkifier |
652 * @param {string} messageType | |
653 * @return {!Element} | |
623 */ | 654 */ |
624 _formatParameterAsArray: function(array, elem) | 655 _formatParameterAsArray: function(array, linkifier, messageType) |
lushnikov
2016/10/22 03:10:18
let's pass linkifier as the last argument -- every
| |
625 { | 656 { |
626 var usePrintedArrayFormat = this._message.type !== WebInspector.ConsoleM essage.MessageType.DirXML && this._message.type !== WebInspector.ConsoleMessage. MessageType.Result; | 657 var element = createElement("span"); |
lushnikov
2016/10/22 03:10:18
var result = .. -- everywhere
| |
658 var usePrintedArrayFormat = messageType !== WebInspector.ConsoleMessage. MessageType.DirXML && messageType !== WebInspector.ConsoleMessage.MessageType.Re sult; | |
627 var isLongArray = array.arrayLength() > 100; | 659 var isLongArray = array.arrayLength() > 100; |
628 if (usePrintedArrayFormat || isLongArray) | 660 if (usePrintedArrayFormat || isLongArray) |
629 this._formatParameterAsObject(array, elem, usePrintedArrayFormat || !isLongArray); | 661 return this._formatParameterAsObject(array, linkifier, usePrintedArr ayFormat || !isLongArray); |
630 else | 662 array.getAllProperties(false, printArrayResult.bind(this)); |
631 array.getAllProperties(false, printArrayResult.bind(this)); | 663 return element; |
632 | 664 |
633 /** | 665 /** |
634 * @param {?Array.<!WebInspector.RemoteObjectProperty>} properties | 666 * @param {?Array.<!WebInspector.RemoteObjectProperty>} properties |
635 * @this {!WebInspector.ConsoleViewMessage} | 667 * @this {!WebInspector.ConsoleViewMessage} |
636 */ | 668 */ |
637 function printArrayResult(properties) | 669 function printArrayResult(properties) |
638 { | 670 { |
639 if (!properties) { | 671 if (!properties) { |
640 this._formatParameterAsObject(array, elem, false); | 672 var expandableObject = this._formatAsExpandableObject(array, lin kifier, false); |
673 element.appendChild(expandableObject); | |
641 return; | 674 return; |
642 } | 675 } |
643 | 676 |
644 var titleElement = createElement("span"); | 677 var titleElement = createElement("span"); |
645 var elements = {}; | 678 var elements = {}; |
646 for (var i = 0; i < properties.length; ++i) { | 679 for (var i = 0; i < properties.length; ++i) { |
647 var property = properties[i]; | 680 var property = properties[i]; |
648 var name = property.name; | 681 var name = property.name; |
649 if (isNaN(name)) | 682 if (isNaN(name)) |
650 continue; | 683 continue; |
651 if (property.getter) | 684 if (property.getter) |
652 elements[name] = this._formatAsAccessorProperty(array, [name ], true); | 685 elements[name] = this._formatAsAccessorProperty(array, [name ], true); |
653 else if (property.value) | 686 else if (property.value) |
654 elements[name] = this._formatAsArrayEntry(property.value); | 687 elements[name] = this._formatAsArrayEntry(property.value); |
655 } | 688 } |
656 | 689 |
657 titleElement.createTextChild("["); | 690 titleElement.createTextChild("["); |
658 var lastNonEmptyIndex = -1; | 691 var lastNonEmptyIndex = -1; |
659 | 692 |
660 function appendUndefined(titleElement, index) | 693 function appendUndefined(titleElement, index) |
661 { | 694 { |
662 if (index - lastNonEmptyIndex <= 1) | 695 if (index - lastNonEmptyIndex <= 1) |
663 return; | 696 return; |
664 var span = titleElement.createChild("span", "object-value-undefi ned"); | 697 var span = titleElement.createChild("span", "object-value-undefi ned"); |
665 span.textContent = WebInspector.UIString("undefined × %d", index - lastNonEmptyIndex - 1); | 698 span.textContent = WebInspector.UIString("undefined × %d", index - lastNonEmptyIndex - 1); |
666 } | 699 } |
667 | 700 |
668 var length = array.arrayLength(); | 701 var length = array.arrayLength(); |
669 for (var i = 0; i < length; ++i) { | 702 for (var i = 0; i < length; ++i) { |
670 var element = elements[i]; | 703 var entryElement = elements[i]; |
lushnikov
2016/10/22 03:10:18
discard this
| |
671 if (!element) | 704 if (!entryElement) |
672 continue; | 705 continue; |
673 | 706 |
674 if (i - lastNonEmptyIndex > 1) { | 707 if (i - lastNonEmptyIndex > 1) { |
675 appendUndefined(titleElement, i); | 708 appendUndefined(titleElement, i); |
676 titleElement.createTextChild(", "); | 709 titleElement.createTextChild(", "); |
677 } | 710 } |
678 | 711 |
679 titleElement.appendChild(element); | 712 titleElement.appendChild(entryElement); |
680 lastNonEmptyIndex = i; | 713 lastNonEmptyIndex = i; |
681 if (i < length - 1) | 714 if (i < length - 1) |
682 titleElement.createTextChild(", "); | 715 titleElement.createTextChild(", "); |
683 } | 716 } |
684 appendUndefined(titleElement, length); | 717 appendUndefined(titleElement, length); |
685 | 718 |
686 titleElement.createTextChild("]"); | 719 titleElement.createTextChild("]"); |
687 | 720 |
688 var section = new WebInspector.ObjectPropertiesSection(array, titleE lement, this._linkifier); | 721 var section = new WebInspector.ObjectPropertiesSection(array, titleE lement, linkifier); |
689 section.element.classList.add("console-view-object-properties-sectio n"); | 722 section.element.classList.add("console-view-object-properties-sectio n"); |
690 section.enableContextMenu(); | 723 section.enableContextMenu(); |
691 elem.appendChild(section.element); | 724 element.appendChild(section.element); |
692 } | 725 } |
693 }, | 726 }, |
694 | 727 |
695 /** | 728 /** |
696 * @param {!WebInspector.RemoteObject} output | 729 * @param {!WebInspector.RemoteObject} output |
697 * @param {!Element} elem | 730 * @return {!Element} |
698 */ | 731 */ |
699 _formatParameterAsString: function(output, elem) | 732 _formatParameterAsString: function(output) |
700 { | 733 { |
701 var span = createElement("span"); | 734 var span = createElement("span"); |
702 span.className = "object-value-string source-code"; | 735 span.className = "object-value-string-inner source-code"; |
703 span.appendChild(WebInspector.linkifyStringAsFragment(output.description || "")); | 736 span.appendChild(WebInspector.linkifyStringAsFragment(output.description || "")); |
704 | 737 |
705 // Make black quotes. | 738 // Make black quotes. |
706 elem.classList.remove("object-value-string"); | 739 var element = createElement("span"); |
lushnikov
2016/10/18 23:07:40
this is non-trivial change in this mostly mechanic
luoe
2016/10/20 23:01:57
This "object-value-string-inner" change should* be
| |
707 elem.createTextChild("\""); | 740 element.createTextChild("\""); |
708 elem.appendChild(span); | 741 element.appendChild(span); |
709 elem.createTextChild("\""); | 742 element.createTextChild("\""); |
743 return element; | |
710 }, | 744 }, |
711 | 745 |
712 /** | 746 /** |
713 * @param {!WebInspector.RemoteObject} output | 747 * @param {!WebInspector.RemoteObject} output |
714 * @param {!Element} elem | 748 * @param {!WebInspector.Linkifier} linkifier |
749 * @return {!Element} | |
715 */ | 750 */ |
716 _formatParameterAsError: function(output, elem) | 751 _formatParameterAsError: function(output, linkifier) |
717 { | 752 { |
718 var span = elem.createChild("span", "object-value-error source-code"); | 753 var element = createElement("span"); |
719 var errorSpan = this._tryFormatAsError(output.description || ""); | 754 var span = element.createChild("span", "object-value-error source-code") ; |
755 var errorSpan = this._tryFormatAsError(output.target(), linkifier, outpu t.description || ""); | |
720 span.appendChild(errorSpan ? errorSpan : WebInspector.linkifyStringAsFra gment(output.description || "")); | 756 span.appendChild(errorSpan ? errorSpan : WebInspector.linkifyStringAsFra gment(output.description || "")); |
757 return element; | |
721 }, | 758 }, |
722 | 759 |
723 /** | 760 /** |
724 * @param {!WebInspector.RemoteObject} output | 761 * @param {!WebInspector.RemoteObject} output |
725 * @return {!Element} | 762 * @return {!Element} |
726 */ | 763 */ |
727 _formatAsArrayEntry: function(output) | 764 _formatAsArrayEntry: function(output) |
728 { | 765 { |
729 return this._previewFormatter.renderPropertyPreview(output.type, output. subtype, output.description); | 766 return this._previewFormatter.renderPropertyPreview(output.type, output. subtype, output.description); |
730 }, | 767 }, |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
768 description = result.description.trimEnd(maxLength); | 805 description = result.description.trimEnd(maxLength); |
769 } | 806 } |
770 rootElement.appendChild(this._previewFormatter.renderPropertyPre view(type, subtype, description)); | 807 rootElement.appendChild(this._previewFormatter.renderPropertyPre view(type, subtype, description)); |
771 } | 808 } |
772 } | 809 } |
773 | 810 |
774 return rootElement; | 811 return rootElement; |
775 }, | 812 }, |
776 | 813 |
777 /** | 814 /** |
815 * @param {string} messageType | |
816 * @param {!WebInspector.Linkifier} linkifier | |
lushnikov
2016/10/22 03:10:18
make it last -- everywhere
| |
778 * @param {string} format | 817 * @param {string} format |
779 * @param {!Array.<!WebInspector.RemoteObject>} parameters | 818 * @param {!Array.<!WebInspector.RemoteObject>} parameters |
780 * @param {!Element} formattedResult | 819 * @param {!Element} formattedResult |
781 */ | 820 */ |
782 _formatWithSubstitutionString: function(format, parameters, formattedResult) | 821 _formatWithSubstitutionString: function(messageType, linkifier, format, para meters, formattedResult) |
783 { | 822 { |
784 var formatters = {}; | 823 var formatters = {}; |
785 | 824 |
786 /** | 825 /** |
787 * @param {boolean} force | 826 * @param {boolean} force |
788 * @param {!WebInspector.RemoteObject} obj | 827 * @param {!WebInspector.RemoteObject} obj |
789 * @return {!Element} | 828 * @return {!Element} |
790 * @this {WebInspector.ConsoleViewMessage} | 829 * @this {WebInspector.ConsoleViewMessage} |
791 */ | 830 */ |
792 function parameterFormatter(force, obj) | 831 function parameterFormatter(force, obj) |
793 { | 832 { |
794 return this._formatParameter(obj, force, false); | 833 return this._formatParameter(messageType, linkifier, obj, force, fal se); |
795 } | 834 } |
796 | 835 |
797 function stringFormatter(obj) | 836 function stringFormatter(obj) |
798 { | 837 { |
799 return obj.description; | 838 return obj.description; |
800 } | 839 } |
801 | 840 |
802 function floatFormatter(obj) | 841 function floatFormatter(obj) |
803 { | 842 { |
804 if (typeof obj.value !== "number") | 843 if (typeof obj.value !== "number") |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
967 | 1006 |
968 var formattedMessage; | 1007 var formattedMessage; |
969 var consoleMessage = this._message; | 1008 var consoleMessage = this._message; |
970 var target = consoleMessage.target(); | 1009 var target = consoleMessage.target(); |
971 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); | 1010 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); |
972 if (target && shouldIncludeTrace) | 1011 if (target && shouldIncludeTrace) |
973 formattedMessage = this._buildMessageWithStackTrace(consoleMessage, target, this._linkifier); | 1012 formattedMessage = this._buildMessageWithStackTrace(consoleMessage, target, this._linkifier); |
974 else if (this._message.type === WebInspector.ConsoleMessage.MessageType. Table) | 1013 else if (this._message.type === WebInspector.ConsoleMessage.MessageType. Table) |
975 formattedMessage = this._buildTableMessage(this._message); | 1014 formattedMessage = this._buildTableMessage(this._message); |
976 else | 1015 else |
977 formattedMessage = this._buildMessage(consoleMessage); | 1016 formattedMessage = this._buildMessage(consoleMessage, this._linkifie r); |
978 contentElement.appendChild(formattedMessage); | 1017 contentElement.appendChild(formattedMessage); |
979 | 1018 |
980 this.updateTimestamp(WebInspector.moduleSetting("consoleTimestampsEnable d").get()); | 1019 this.updateTimestamp(WebInspector.moduleSetting("consoleTimestampsEnable d").get()); |
981 return this._contentElement; | 1020 return this._contentElement; |
982 }, | 1021 }, |
983 | 1022 |
984 /** | 1023 /** |
985 * @return {!Element} | 1024 * @return {!Element} |
986 */ | 1025 */ |
987 toMessageElement: function() | 1026 toMessageElement: function() |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1131 | 1170 |
1132 /** | 1171 /** |
1133 * @return {!Element} | 1172 * @return {!Element} |
1134 */ | 1173 */ |
1135 searchHighlightNode: function(index) | 1174 searchHighlightNode: function(index) |
1136 { | 1175 { |
1137 return this._searchHighlightNodes[index]; | 1176 return this._searchHighlightNodes[index]; |
1138 }, | 1177 }, |
1139 | 1178 |
1140 /** | 1179 /** |
1180 * @param {?WebInspector.Target} target | |
1181 * @param {!WebInspector.Linkifier} linkifier | |
1141 * @param {string} string | 1182 * @param {string} string |
1142 * @return {?Element} | 1183 * @return {?Element} |
1143 */ | 1184 */ |
1144 _tryFormatAsError: function(string) | 1185 _tryFormatAsError: function(target, linkifier, string) |
1145 { | 1186 { |
1146 /** | 1187 /** |
1147 * @param {string} prefix | 1188 * @param {string} prefix |
1148 */ | 1189 */ |
1149 function startsWith(prefix) | 1190 function startsWith(prefix) |
1150 { | 1191 { |
1151 return string.startsWith(prefix); | 1192 return string.startsWith(prefix); |
1152 } | 1193 } |
1153 | 1194 |
1154 var errorPrefixes = ["EvalError", "ReferenceError", "SyntaxError", "Type Error", "RangeError", "Error", "URIError"]; | 1195 var errorPrefixes = ["EvalError", "ReferenceError", "SyntaxError", "Type Error", "RangeError", "Error", "URIError"]; |
1155 var target = this._target(); | |
1156 if (!target || !errorPrefixes.some(startsWith)) | 1196 if (!target || !errorPrefixes.some(startsWith)) |
1157 return null; | 1197 return null; |
1158 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | 1198 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); |
1159 if (!debuggerModel) | 1199 if (!debuggerModel) |
1160 return null; | 1200 return null; |
1161 | 1201 |
1162 var lines = string.split("\n"); | 1202 var lines = string.split("\n"); |
1163 var links = []; | 1203 var links = []; |
1164 var position = 0; | 1204 var position = 0; |
1165 for (var i = 0; i < lines.length; ++i) { | 1205 for (var i = 0; i < lines.length; ++i) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1200 links.push({url: url, positionLeft: position + left, positionRight: position + right, lineNumber: splitResult.lineNumber, columnNumber: splitResult. columnNumber}); | 1240 links.push({url: url, positionLeft: position + left, positionRight: position + right, lineNumber: splitResult.lineNumber, columnNumber: splitResult. columnNumber}); |
1201 } | 1241 } |
1202 | 1242 |
1203 if (!links.length) | 1243 if (!links.length) |
1204 return null; | 1244 return null; |
1205 | 1245 |
1206 var formattedResult = createElement("span"); | 1246 var formattedResult = createElement("span"); |
1207 var start = 0; | 1247 var start = 0; |
1208 for (var i = 0; i < links.length; ++i) { | 1248 for (var i = 0; i < links.length; ++i) { |
1209 formattedResult.appendChild(WebInspector.linkifyStringAsFragment(str ing.substring(start, links[i].positionLeft))); | 1249 formattedResult.appendChild(WebInspector.linkifyStringAsFragment(str ing.substring(start, links[i].positionLeft))); |
1210 formattedResult.appendChild(this._linkifier.linkifyScriptLocation(ta rget, null, links[i].url, links[i].lineNumber, links[i].columnNumber)); | 1250 formattedResult.appendChild(linkifier.linkifyScriptLocation(target, null, links[i].url, links[i].lineNumber, links[i].columnNumber)); |
1211 start = links[i].positionRight; | 1251 start = links[i].positionRight; |
1212 } | 1252 } |
1213 | 1253 |
1214 if (start !== string.length) | 1254 if (start !== string.length) |
1215 formattedResult.appendChild(WebInspector.linkifyStringAsFragment(str ing.substring(start))); | 1255 formattedResult.appendChild(WebInspector.linkifyStringAsFragment(str ing.substring(start))); |
1216 | 1256 |
1217 return formattedResult; | 1257 return formattedResult; |
1218 } | 1258 } |
1219 } | 1259 } |
1220 | 1260 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1259 { | 1299 { |
1260 if (!this._element) { | 1300 if (!this._element) { |
1261 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this ); | 1301 WebInspector.ConsoleViewMessage.prototype.toMessageElement.call(this ); |
1262 this._element.classList.toggle("collapsed", this._collapsed); | 1302 this._element.classList.toggle("collapsed", this._collapsed); |
1263 } | 1303 } |
1264 return this._element; | 1304 return this._element; |
1265 }, | 1305 }, |
1266 | 1306 |
1267 __proto__: WebInspector.ConsoleViewMessage.prototype | 1307 __proto__: WebInspector.ConsoleViewMessage.prototype |
1268 } | 1308 } |
OLD | NEW |