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

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: remove patches 6, 7 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());
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
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
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
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
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
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