Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/console/ConsoleViewMessage.js

Issue 2397933005: DevTools: ConsoleViewMessage rewrite signatures for formatter functions (Closed)
Patch Set: rewrite signatures Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/components/objectValue.css ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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());
139 if (!table || !table.preview) 139 if (!table || !table.preview)
140 return formattedMessage; 140 return formattedMessage;
141 141
142 var columnNames = []; 142 var columnNames = [];
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
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, 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) ;
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);
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) ;
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
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)
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");
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 */
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)
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 shouldFormatMessage = WebInspector.RemoteObject.type((/** @type {!Ar ray.<!WebInspector.RemoteObject>} **/ (parameters))[0]) === "string" && (console Message.type !== WebInspector.ConsoleMessage.MessageType.Result || consoleMessag e.level === WebInspector.ConsoleMessage.MessageLevel.Error || consoleMessage.lev el === WebInspector.ConsoleMessage.MessageLevel.RevokedError);
427 429
428 // Multiple parameters with the first being a format string. Save unused substitutions. 430 // Multiple parameters with the first being a format string. Save unused substitutions.
429 if (shouldFormatMessage) { 431 if (shouldFormatMessage) {
430 var result = this._formatWithSubstitutionString(/** @type {string} * */ (parameters[0].description), parameters.slice(1), formattedResult); 432 var result = this._formatWithSubstitutionString(consoleMessage, link ifier, /** @type {string} **/ (parameters[0].description), parameters.slice(1), formattedResult);
431 parameters = result.unusedSubstitutions; 433 parameters = result.unusedSubstitutions;
432 if (parameters.length) 434 if (parameters.length)
433 formattedResult.createTextChild(" "); 435 formattedResult.createTextChild(" ");
434 } 436 }
435 437
436 // Single parameter, or unused substitutions from above. 438 // Single parameter, or unused substitutions from above.
437 for (var i = 0; i < parameters.length; ++i) { 439 for (var i = 0; i < parameters.length; ++i) {
438 // Inline strings when formatting. 440 // Inline strings when formatting.
439 if (shouldFormatMessage && parameters[i].type === "string") 441 if (shouldFormatMessage && parameters[i].type === "string")
440 formattedResult.appendChild(WebInspector.linkifyStringAsFragment (parameters[i].description)); 442 formattedResult.appendChild(WebInspector.linkifyStringAsFragment (parameters[i].description));
441 else 443 else
442 formattedResult.appendChild(this._formatParameter(parameters[i], false, true)); 444 formattedResult.appendChild(this._formatParameter(consoleMessage , linkifier, parameters[i], false, true));
443 if (i < parameters.length - 1) 445 if (i < parameters.length - 1)
444 formattedResult.createTextChild(" "); 446 formattedResult.createTextChild(" ");
445 } 447 }
446 return formattedResult; 448 return formattedResult;
447 }, 449 },
448 450
449 /** 451 /**
452 * @param {!WebInspector.ConsoleMessage} consoleMessage
453 * @param {!WebInspector.Linkifier} linkifier
450 * @param {!WebInspector.RemoteObject} output 454 * @param {!WebInspector.RemoteObject} output
451 * @param {boolean=} forceObjectFormat 455 * @param {boolean=} forceObjectFormat
452 * @param {boolean=} includePreview 456 * @param {boolean=} includePreview
453 * @return {!Element} 457 * @return {!Element}
454 */ 458 */
455 _formatParameter: function(output, forceObjectFormat, includePreview) 459 _formatParameter: function(consoleMessage, linkifier, output, forceObjectFor mat, includePreview)
lushnikov 2016/10/12 20:58:23 let's pass consoleMessageType only
luoe 2016/10/13 20:44:20 Done.
456 { 460 {
457 if (output.customPreview()) 461 if (output.customPreview())
458 return (new WebInspector.CustomPreviewComponent(output)).element; 462 return (new WebInspector.CustomPreviewComponent(output)).element;
459 463
460 var type = forceObjectFormat ? "object" : (output.subtype || output.type ); 464 var type = forceObjectFormat ? "object" : (output.subtype || output.type );
461 var span = createElement("span"); 465 var element;
462 span.className = "object-value-" + type + " source-code";
463 switch (type) { 466 switch (type) {
464 case "array": 467 case "array":
465 case "typedarray": 468 case "typedarray":
466 this._formatParameterAsArray(output, span); 469 element = this._formatParameterAsArray(output, linkifier, consoleMes sage.type);
467 break; 470 break;
468 case "error": 471 case "error":
469 this._formatParameterAsError(output, span); 472 element = this._formatParameterAsError(output, linkifier, consoleMes sage.target());
lushnikov 2016/10/12 20:58:23 you can get target from remoteobject
luoe 2016/10/13 20:44:20 Done.
470 break; 473 break;
471 case "function": 474 case "function":
472 case "generator": 475 case "generator":
473 this._formatParameterAsFunction(output, span, includePreview); 476 element = this._formatParameterAsFunction(output, includePreview);
474 break; 477 break;
475 case "iterator": 478 case "iterator":
476 case "map": 479 case "map":
477 case "object": 480 case "object":
478 case "promise": 481 case "promise":
479 case "proxy": 482 case "proxy":
480 case "set": 483 case "set":
481 this._formatParameterAsObject(output, span, includePreview); 484 element = this._formatParameterAsObject(output, linkifier, includePr eview);
482 break; 485 break;
483 case "node": 486 case "node":
484 this._formatParameterAsNode(output, span); 487 element = this._formatParameterAsNode(output, linkifier);
485 break; 488 break;
486 case "string": 489 case "string":
487 this._formatParameterAsString(output, span); 490 element = this._formatParameterAsString(output);
488 break; 491 break;
489 case "boolean": 492 case "boolean":
490 case "date": 493 case "date":
491 case "null": 494 case "null":
492 case "number": 495 case "number":
493 case "regexp": 496 case "regexp":
494 case "symbol": 497 case "symbol":
495 case "undefined": 498 case "undefined":
496 this._formatParameterAsValue(output, span); 499 element = this._formatParameterAsValue(output);
497 break; 500 break;
498 default: 501 default:
499 this._formatParameterAsValue(output, span); 502 element = this._formatParameterAsValue(output);
500 console.error("Tried to format remote object of unknown type."); 503 console.error("Tried to format remote object of unknown type.");
501 } 504 }
502 return span; 505 element.className = "object-value-" + type + " source-code";
506 return element;
503 }, 507 },
504 508
505 /** 509 /**
506 * @param {!WebInspector.RemoteObject} obj 510 * @param {!WebInspector.RemoteObject} obj
507 * @param {!Element} elem 511 * @return {!Element}
508 */ 512 */
509 _formatParameterAsValue: function(obj, elem) 513 _formatParameterAsValue: function(obj)
510 { 514 {
511 elem.createTextChild(obj.description || ""); 515 var element = createElement("span");
516 element.createTextChild(obj.description || "");
512 if (obj.objectId) 517 if (obj.objectId)
513 elem.addEventListener("contextmenu", this._contextMenuEventFired.bin d(this, obj), false); 518 element.addEventListener("contextmenu", this._contextMenuEventFired. bind(this, obj), false);
519 return element;
514 }, 520 },
515 521
516 /** 522 /**
517 * @param {!WebInspector.RemoteObject} obj 523 * @param {!WebInspector.RemoteObject} obj
518 * @param {!Element} elem 524 * @param {!WebInspector.Linkifier} linkifier
519 * @param {boolean=} includePreview 525 * @param {boolean=} includePreview
526 * @return {!Element}
520 */ 527 */
521 _formatParameterAsObject: function(obj, elem, includePreview) 528 _formatParameterAsObject: function(obj, linkifier, includePreview)
529 {
530 var element = createElement("span");
531 var expandableObject = this._formatAsExpandableObject(obj, linkifier, in cludePreview);
532 element.appendChild(expandableObject);
533 return element;
534 },
535
536 /**
537 * @param {!WebInspector.RemoteObject} obj
538 * @param {!WebInspector.Linkifier} linkifier
539 * @param {boolean=} includePreview
540 * @return {!Element}
541 */
542 _formatAsExpandableObject: function(obj, linkifier, includePreview)
522 { 543 {
523 var titleElement = createElement("span"); 544 var titleElement = createElement("span");
524 if (includePreview && obj.preview) { 545 if (includePreview && obj.preview) {
525 titleElement.classList.add("console-object-preview"); 546 titleElement.classList.add("console-object-preview");
526 this._previewFormatter.appendObjectPreview(titleElement, obj.preview ); 547 this._previewFormatter.appendObjectPreview(titleElement, obj.preview );
527 } else if (obj.type === "function") { 548 } else if (obj.type === "function") {
528 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(obj, tit leElement, false); 549 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(obj, tit leElement, false);
529 titleElement.classList.add("object-value-function"); 550 titleElement.classList.add("object-value-function");
530 } else { 551 } else {
531 titleElement.createTextChild(obj.description || ""); 552 titleElement.createTextChild(obj.description || "");
532 } 553 }
533 554
534 var section = new WebInspector.ObjectPropertiesSection(obj, titleElement , this._linkifier); 555 var section = new WebInspector.ObjectPropertiesSection(obj, titleElement , linkifier);
535 section.element.classList.add("console-view-object-properties-section"); 556 section.element.classList.add("console-view-object-properties-section");
536 section.enableContextMenu(); 557 section.enableContextMenu();
537 elem.appendChild(section.element); 558 return section.element;
538 }, 559 },
539 560
540 /** 561 /**
541 * @param {!WebInspector.RemoteObject} func 562 * @param {!WebInspector.RemoteObject} func
542 * @param {!Element} element
543 * @param {boolean=} includePreview 563 * @param {boolean=} includePreview
564 * @return {!Element}
544 */ 565 */
545 _formatParameterAsFunction: function(func, element, includePreview) 566 _formatParameterAsFunction: function(func, includePreview)
546 { 567 {
568 var element = createElement("span");
547 WebInspector.RemoteFunction.objectAsFunction(func).targetFunction().then (formatTargetFunction.bind(this)); 569 WebInspector.RemoteFunction.objectAsFunction(func).targetFunction().then (formatTargetFunction.bind(this));
570 return element;
548 571
549 /** 572 /**
550 * @param {!WebInspector.RemoteObject} targetFunction 573 * @param {!WebInspector.RemoteObject} targetFunction
551 * @this {WebInspector.ConsoleViewMessage} 574 * @this {WebInspector.ConsoleViewMessage}
552 */ 575 */
553 function formatTargetFunction(targetFunction) 576 function formatTargetFunction(targetFunction)
554 { 577 {
555 var functionElement = createElement("span"); 578 var functionElement = createElement("span");
556 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(targetFu nction, functionElement, true, includePreview); 579 WebInspector.ObjectPropertiesSection.formatObjectAsFunction(targetFu nction, functionElement, true, includePreview);
557 element.appendChild(functionElement); 580 element.appendChild(functionElement);
(...skipping 24 matching lines...) Expand all
582 _renderPropertyPreviewOrAccessor: function(object, propertyPath) 605 _renderPropertyPreviewOrAccessor: function(object, propertyPath)
583 { 606 {
584 var property = propertyPath.peekLast(); 607 var property = propertyPath.peekLast();
585 if (property.type === "accessor") 608 if (property.type === "accessor")
586 return this._formatAsAccessorProperty(object, propertyPath.map(prope rty => property.name), false); 609 return this._formatAsAccessorProperty(object, propertyPath.map(prope rty => property.name), false);
587 return this._previewFormatter.renderPropertyPreview(property.type, /** @ type {string} */ (property.subtype), property.value); 610 return this._previewFormatter.renderPropertyPreview(property.type, /** @ type {string} */ (property.subtype), property.value);
588 }, 611 },
589 612
590 /** 613 /**
591 * @param {!WebInspector.RemoteObject} object 614 * @param {!WebInspector.RemoteObject} object
592 * @param {!Element} elem 615 * @param {!WebInspector.Linkifier} linkifier
616 * @return {!Element}
593 */ 617 */
594 _formatParameterAsNode: function(object, elem) 618 _formatParameterAsNode: function(object, linkifier)
595 { 619 {
620 var element = createElement("span");
596 WebInspector.Renderer.renderPromise(object).then(appendRenderer.bind(thi s), failedToRender.bind(this)); 621 WebInspector.Renderer.renderPromise(object).then(appendRenderer.bind(thi s), failedToRender.bind(this));
622 return element;
623
597 /** 624 /**
598 * @param {!Element} rendererElement 625 * @param {!Element} rendererElement
599 * @this {WebInspector.ConsoleViewMessage} 626 * @this {WebInspector.ConsoleViewMessage}
600 */ 627 */
601 function appendRenderer(rendererElement) 628 function appendRenderer(rendererElement)
602 { 629 {
603 elem.appendChild(rendererElement); 630 element.appendChild(rendererElement);
604 this._formattedParameterAsNodeForTest(); 631 this._formattedParameterAsNodeForTest();
605 } 632 }
606 633
607 /** 634 /**
608 * @this {WebInspector.ConsoleViewMessage} 635 * @this {WebInspector.ConsoleViewMessage}
609 */ 636 */
610 function failedToRender() 637 function failedToRender()
611 { 638 {
612 this._formatParameterAsObject(object, elem, false); 639 var expandableObject = this._formatAsExpandableObject(object, linkif ier, false);
640 element.appendChild(expandableObject);
613 } 641 }
614 }, 642 },
615 643
616 _formattedParameterAsNodeForTest: function() 644 _formattedParameterAsNodeForTest: function()
617 { 645 {
618 }, 646 },
619 647
620 /** 648 /**
621 * @param {!WebInspector.RemoteObject} array 649 * @param {!WebInspector.RemoteObject} array
622 * @param {!Element} elem 650 * @param {!WebInspector.Linkifier} linkifier
651 * @param {string} messageType
652 * @return {!Element}
623 */ 653 */
624 _formatParameterAsArray: function(array, elem) 654 _formatParameterAsArray: function(array, linkifier, messageType)
625 { 655 {
626 var usePrintedArrayFormat = this._message.type !== WebInspector.ConsoleM essage.MessageType.DirXML && this._message.type !== WebInspector.ConsoleMessage. MessageType.Result; 656 var element = createElement("span");
657 var usePrintedArrayFormat = messageType !== WebInspector.ConsoleMessage. MessageType.DirXML && messageType !== WebInspector.ConsoleMessage.MessageType.Re sult;
627 var isLongArray = array.arrayLength() > 100; 658 var isLongArray = array.arrayLength() > 100;
628 if (usePrintedArrayFormat || isLongArray) 659 if (usePrintedArrayFormat || isLongArray)
629 this._formatParameterAsObject(array, elem, usePrintedArrayFormat || !isLongArray); 660 return this._formatParameterAsObject(array, linkifier, usePrintedArr ayFormat || !isLongArray);
630 else 661 array.getAllProperties(false, printArrayResult.bind(this));
631 array.getAllProperties(false, printArrayResult.bind(this)); 662 return element;
632 663
633 /** 664 /**
634 * @param {?Array.<!WebInspector.RemoteObjectProperty>} properties 665 * @param {?Array.<!WebInspector.RemoteObjectProperty>} properties
635 * @this {!WebInspector.ConsoleViewMessage} 666 * @this {!WebInspector.ConsoleViewMessage}
636 */ 667 */
637 function printArrayResult(properties) 668 function printArrayResult(properties)
638 { 669 {
639 if (!properties) { 670 if (!properties) {
640 this._formatParameterAsObject(array, elem, false); 671 var expandableObject = this._formatAsExpandableObject(array, lin kifier, false);
672 element.appendChild(expandableObject);
641 return; 673 return;
642 } 674 }
643 675
644 var titleElement = createElement("span"); 676 var titleElement = createElement("span");
645 var elements = {}; 677 var elements = {};
646 for (var i = 0; i < properties.length; ++i) { 678 for (var i = 0; i < properties.length; ++i) {
647 var property = properties[i]; 679 var property = properties[i];
648 var name = property.name; 680 var name = property.name;
649 if (isNaN(name)) 681 if (isNaN(name))
650 continue; 682 continue;
651 if (property.getter) 683 if (property.getter)
652 elements[name] = this._formatAsAccessorProperty(array, [name ], true); 684 elements[name] = this._formatAsAccessorProperty(array, [name ], true);
653 else if (property.value) 685 else if (property.value)
654 elements[name] = this._formatAsArrayEntry(property.value); 686 elements[name] = this._formatAsArrayEntry(property.value);
655 } 687 }
656 688
657 titleElement.createTextChild("["); 689 titleElement.createTextChild("[");
658 var lastNonEmptyIndex = -1; 690 var lastNonEmptyIndex = -1;
659 691
660 function appendUndefined(titleElement, index) 692 function appendUndefined(titleElement, index)
661 { 693 {
662 if (index - lastNonEmptyIndex <= 1) 694 if (index - lastNonEmptyIndex <= 1)
663 return; 695 return;
664 var span = titleElement.createChild("span", "object-value-undefi ned"); 696 var span = titleElement.createChild("span", "object-value-undefi ned");
665 span.textContent = WebInspector.UIString("undefined × %d", index - lastNonEmptyIndex - 1); 697 span.textContent = WebInspector.UIString("undefined × %d", index - lastNonEmptyIndex - 1);
666 } 698 }
667 699
668 var length = array.arrayLength(); 700 var length = array.arrayLength();
669 for (var i = 0; i < length; ++i) { 701 for (var i = 0; i < length; ++i) {
670 var element = elements[i]; 702 var entryElement = elements[i];
671 if (!element) 703 if (!entryElement)
672 continue; 704 continue;
673 705
674 if (i - lastNonEmptyIndex > 1) { 706 if (i - lastNonEmptyIndex > 1) {
675 appendUndefined(titleElement, i); 707 appendUndefined(titleElement, i);
676 titleElement.createTextChild(", "); 708 titleElement.createTextChild(", ");
677 } 709 }
678 710
679 titleElement.appendChild(element); 711 titleElement.appendChild(entryElement);
680 lastNonEmptyIndex = i; 712 lastNonEmptyIndex = i;
681 if (i < length - 1) 713 if (i < length - 1)
682 titleElement.createTextChild(", "); 714 titleElement.createTextChild(", ");
683 } 715 }
684 appendUndefined(titleElement, length); 716 appendUndefined(titleElement, length);
685 717
686 titleElement.createTextChild("]"); 718 titleElement.createTextChild("]");
687 719
688 var section = new WebInspector.ObjectPropertiesSection(array, titleE lement, this._linkifier); 720 var section = new WebInspector.ObjectPropertiesSection(array, titleE lement, linkifier);
689 section.element.classList.add("console-view-object-properties-sectio n"); 721 section.element.classList.add("console-view-object-properties-sectio n");
690 section.enableContextMenu(); 722 section.enableContextMenu();
691 elem.appendChild(section.element); 723 element.appendChild(section.element);
692 } 724 }
693 }, 725 },
694 726
695 /** 727 /**
696 * @param {!WebInspector.RemoteObject} output 728 * @param {!WebInspector.RemoteObject} output
697 * @param {!Element} elem 729 * @return {!Element}
698 */ 730 */
699 _formatParameterAsString: function(output, elem) 731 _formatParameterAsString: function(output)
700 { 732 {
701 var span = createElement("span"); 733 var span = createElement("span");
702 span.className = "object-value-string source-code"; 734 span.className = "object-value-string-inner source-code";
703 span.appendChild(WebInspector.linkifyStringAsFragment(output.description || "")); 735 span.appendChild(WebInspector.linkifyStringAsFragment(output.description || ""));
704 736
705 // Make black quotes. 737 // Make black quotes.
706 elem.classList.remove("object-value-string"); 738 var element = createElement("span");
lushnikov 2016/10/12 20:58:23 let's address this separately by moving "object-va
luoe 2016/10/13 20:44:20 Done in patch set 6+7. Changes can be seen by dif
707 elem.createTextChild("\""); 739 element.createTextChild("\"");
708 elem.appendChild(span); 740 element.appendChild(span);
709 elem.createTextChild("\""); 741 element.createTextChild("\"");
742 return element;
710 }, 743 },
711 744
712 /** 745 /**
713 * @param {!WebInspector.RemoteObject} output 746 * @param {!WebInspector.RemoteObject} output
714 * @param {!Element} elem 747 * @param {!WebInspector.Linkifier} linkifier
748 * @param {?WebInspector.Target} target
749 * @return {!Element}
715 */ 750 */
716 _formatParameterAsError: function(output, elem) 751 _formatParameterAsError: function(output, linkifier, target)
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") ;
lushnikov 2016/10/12 20:58:23 object-value-error is not used at all?
luoe 2016/10/13 20:44:20 Done.
755 var errorSpan = this._tryFormatAsError(target, linkifier, output.descrip tion || "");
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
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 {!WebInspector.ConsoleMessage} consoleMessage
816 * @param {!WebInspector.Linkifier} linkifier
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(consoleMessage, linkifier, format, p arameters, formattedResult)
lushnikov 2016/10/12 20:58:23 you won't need console message here - just console
luoe 2016/10/13 20:44:20 Done.
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(consoleMessage, linkifier, obj, force, false);
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/components/objectValue.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698