Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Intel Inc. All rights reserved. | 3 * Copyright (C) 2012 Intel Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 284 var recordType = WebInspector.TimelineModel.RecordType; | 284 var recordType = WebInspector.TimelineModel.RecordType; |
| 285 var detailsText; | 285 var detailsText; |
| 286 var eventData = event.args["data"]; | 286 var eventData = event.args["data"]; |
| 287 switch (event.name) { | 287 switch (event.name) { |
| 288 case recordType.GCEvent: | 288 case recordType.GCEvent: |
| 289 case recordType.MajorGC: | 289 case recordType.MajorGC: |
| 290 case recordType.MinorGC: | 290 case recordType.MinorGC: |
| 291 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA fter"]; | 291 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA fter"]; |
| 292 detailsText = WebInspector.UIString("%s collected", Number.bytesToString (delta)); | 292 detailsText = WebInspector.UIString("%s collected", Number.bytesToString (delta)); |
| 293 break; | 293 break; |
| 294 case recordType.TimerFire: | |
| 295 detailsText = eventData["timerId"]; | |
| 296 break; | |
| 297 case recordType.FunctionCall: | 294 case recordType.FunctionCall: |
| 298 detailsText = linkifyLocationAsText(eventData["scriptId"], eventData["sc riptLine"], 0); | 295 // Omit internally generated script names. |
|
yurys
2015/09/23 20:44:19
eval'd scripts will also miss scriptName but I bel
| |
| 296 if (eventData["scriptName"]) | |
| 297 detailsText = linkifyLocationAsText(eventData["scriptId"], eventData ["scriptLine"], 0); | |
| 299 break; | 298 break; |
| 300 case recordType.JSFrame: | 299 case recordType.JSFrame: |
| 301 detailsText = WebInspector.beautifyFunctionName(eventData["functionName" ]); | 300 detailsText = WebInspector.beautifyFunctionName(eventData["functionName" ]); |
| 302 break; | 301 break; |
| 303 case recordType.FireAnimationFrame: | |
| 304 detailsText = eventData["id"]; | |
| 305 break; | |
| 306 case recordType.EventDispatch: | 302 case recordType.EventDispatch: |
| 307 detailsText = eventData ? eventData["type"] : null; | 303 detailsText = eventData ? eventData["type"] : null; |
| 308 break; | 304 break; |
| 309 case recordType.Paint: | 305 case recordType.Paint: |
| 310 var width = WebInspector.TimelineUIUtils.quadWidth(eventData.clip); | 306 var width = WebInspector.TimelineUIUtils.quadWidth(eventData.clip); |
| 311 var height = WebInspector.TimelineUIUtils.quadHeight(eventData.clip); | 307 var height = WebInspector.TimelineUIUtils.quadHeight(eventData.clip); |
| 312 if (width && height) | 308 if (width && height) |
| 313 detailsText = WebInspector.UIString("%d\u2009\u00d7\u2009%d", width, height); | 309 detailsText = WebInspector.UIString("%d\u2009\u00d7\u2009%d", width, height); |
| 314 break; | 310 break; |
| 315 case recordType.TimerInstall: | |
| 316 case recordType.TimerRemove: | |
| 317 detailsText = linkifyTopCallFrameAsText() || eventData["timerId"]; | |
| 318 break; | |
| 319 case recordType.RequestAnimationFrame: | |
| 320 case recordType.CancelAnimationFrame: | |
| 321 detailsText = linkifyTopCallFrameAsText() || eventData["id"]; | |
| 322 break; | |
| 323 case recordType.ParseHTML: | 311 case recordType.ParseHTML: |
| 324 var endLine = event.args["endData"] && event.args["endData"]["endLine"]; | 312 var endLine = event.args["endData"] && event.args["endData"]["endLine"]; |
| 325 var url = event.args["beginData"]["url"]; | 313 var url = WebInspector.displayNameForURL(event.args["beginData"]["url"]) ; |
| 326 detailsText = endLine ? WebInspector.UIString("%s [%d\u2009\u2013\u2009% d]", url, event.args["beginData"]["startLine"] + 1, endLine + 1) : url; | 314 detailsText = endLine ? WebInspector.UIString("%s [%d\u2009\u2013\u2009% d]", url, event.args["beginData"]["startLine"] + 1, endLine + 1) : url; |
| 327 break; | 315 break; |
| 328 case recordType.UpdateLayoutTree: | 316 |
| 329 case recordType.RecalculateStyles: | |
| 330 detailsText = linkifyTopCallFrameAsText(); | |
| 331 break; | |
| 332 case recordType.EvaluateScript: | 317 case recordType.EvaluateScript: |
| 333 var url = eventData["url"]; | 318 var url = eventData["url"]; |
| 334 if (url) | 319 if (url) |
| 335 detailsText = url + ":" + eventData["lineNumber"]; | 320 detailsText = detailsText = WebInspector.displayNameForURL(url) + ": " + eventData["lineNumber"]; |
| 336 break; | 321 break; |
| 337 case recordType.XHRReadyStateChange: | 322 case recordType.XHRReadyStateChange: |
| 338 case recordType.XHRLoad: | 323 case recordType.XHRLoad: |
| 339 case recordType.ResourceSendRequest: | |
| 340 var url = eventData["url"]; | 324 var url = eventData["url"]; |
| 341 if (url) | 325 if (url) |
| 342 detailsText = WebInspector.displayNameForURL(url); | 326 detailsText = detailsText = WebInspector.displayNameForURL(url); |
| 343 break; | 327 break; |
| 328 | |
| 329 case recordType.WebSocketCreate: | |
| 330 case recordType.WebSocketSendHandshakeRequest: | |
| 331 case recordType.WebSocketReceiveHandshakeResponse: | |
| 332 case recordType.WebSocketDestroy: | |
| 333 case recordType.ResourceSendRequest: | |
| 344 case recordType.ResourceReceivedData: | 334 case recordType.ResourceReceivedData: |
| 345 case recordType.ResourceReceiveResponse: | 335 case recordType.ResourceReceiveResponse: |
| 346 case recordType.ResourceFinish: | 336 case recordType.ResourceFinish: |
| 347 var initiator = event.initiator; | 337 case recordType.PaintImage: |
| 348 if (initiator) { | 338 case recordType.DecodeImage: |
| 349 var url = initiator.args["data"]["url"]; | 339 case recordType.ResizeImage: |
| 350 if (url) | 340 case recordType.DecodeLazyPixelRef: |
| 351 detailsText = WebInspector.displayNameForURL(url); | 341 if (event.url) |
| 352 } | 342 detailsText = WebInspector.displayNameForURL(event.url); |
| 353 break; | 343 break; |
| 344 | |
| 354 case recordType.EmbedderCallback: | 345 case recordType.EmbedderCallback: |
| 355 detailsText = eventData["callbackName"]; | 346 detailsText = eventData["callbackName"]; |
| 356 break; | 347 break; |
| 357 | 348 |
| 358 case recordType.PaintImage: | |
| 359 case recordType.DecodeImage: | |
| 360 case recordType.ResizeImage: | |
| 361 case recordType.DecodeLazyPixelRef: | |
| 362 var url = event.url; | |
| 363 if (url) | |
| 364 detailsText = WebInspector.displayNameForURL(url); | |
| 365 break; | |
| 366 | |
| 367 case recordType.Animation: | 349 case recordType.Animation: |
| 368 detailsText = eventData && eventData["name"]; | 350 detailsText = eventData && eventData["name"]; |
| 369 break; | 351 break; |
| 370 | 352 |
| 371 default: | 353 default: |
| 372 if (event.hasCategory(WebInspector.TracingModel.ConsoleEventCategory)) | 354 if (event.hasCategory(WebInspector.TracingModel.ConsoleEventCategory)) |
| 373 detailsText = null; | 355 detailsText = null; |
| 374 else | 356 else |
| 375 detailsText = linkifyTopCallFrameAsText(); | 357 detailsText = linkifyTopCallFrameAsText(); |
| 376 break; | 358 break; |
| 377 } | 359 } |
| 378 | 360 |
| 379 return detailsText; | 361 return detailsText; |
| 380 | 362 |
| 381 /** | 363 /** |
| 382 * @param {string} scriptId | 364 * @param {string} scriptId |
| 383 * @param {number} lineNumber | 365 * @param {number} lineNumber |
| 384 * @param {number=} columnNumber | 366 * @param {number=} columnNumber |
| 385 * @return {?string} | 367 * @return {?string} |
| 386 */ | 368 */ |
| 387 function linkifyLocationAsText(scriptId, lineNumber, columnNumber) | 369 function linkifyLocationAsText(scriptId, lineNumber, columnNumber) |
| 388 { | 370 { |
| 389 // FIXME(62725): stack trace line/column numbers are one-based. | 371 // FIXME(62725): stack trace line/column numbers are one-based. |
| 390 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | 372 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); |
| 391 var rawLocation = target && !target.isDetached() && scriptId && debugger Model ? debuggerModel.createRawLocationByScriptId(scriptId, lineNumber - 1, (col umnNumber || 1) - 1) : null; | 373 var rawLocation = target && !target.isDetached() && scriptId && debugger Model ? debuggerModel.createRawLocationByScriptId(scriptId, lineNumber - 1, (col umnNumber || 1) - 1) : null; |
| 392 if (!rawLocation) | 374 if (!rawLocation) |
| 393 return null; | 375 return null; |
| 394 var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILo cation(rawLocation); | 376 var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILo cation(rawLocation); |
| 395 return uiLocation.toUIString(); | 377 return uiLocation.linkText(); |
| 396 } | 378 } |
| 397 | 379 |
| 398 /** | 380 /** |
| 399 * @return {?string} | 381 * @return {?string} |
| 400 */ | 382 */ |
| 401 function linkifyTopCallFrameAsText() | 383 function linkifyTopCallFrameAsText() |
| 402 { | 384 { |
| 403 var stackTrace = event.stackTrace; | 385 var stackTrace = event.stackTrace; |
| 404 if (!stackTrace) { | 386 if (!stackTrace) { |
| 405 var initiator = event.initiator; | 387 var initiator = event.initiator; |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 422 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent = function(event, tar get, linkifier) | 404 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent = function(event, tar get, linkifier) |
| 423 { | 405 { |
| 424 var recordType = WebInspector.TimelineModel.RecordType; | 406 var recordType = WebInspector.TimelineModel.RecordType; |
| 425 var details; | 407 var details; |
| 426 var detailsText; | 408 var detailsText; |
| 427 var eventData = event.args["data"]; | 409 var eventData = event.args["data"]; |
| 428 switch (event.name) { | 410 switch (event.name) { |
| 429 case recordType.GCEvent: | 411 case recordType.GCEvent: |
| 430 case recordType.MajorGC: | 412 case recordType.MajorGC: |
| 431 case recordType.MinorGC: | 413 case recordType.MinorGC: |
| 432 case recordType.TimerFire: | |
| 433 case recordType.FireAnimationFrame: | |
| 434 case recordType.EventDispatch: | 414 case recordType.EventDispatch: |
| 435 case recordType.Paint: | 415 case recordType.Paint: |
| 416 case recordType.Animation: | |
| 417 case recordType.EmbedderCallback: | |
| 418 case recordType.ParseHTML: | |
| 419 case recordType.WebSocketCreate: | |
| 420 case recordType.WebSocketSendHandshakeRequest: | |
| 421 case recordType.WebSocketReceiveHandshakeResponse: | |
| 422 case recordType.WebSocketDestroy: | |
| 423 detailsText = WebInspector.TimelineUIUtils.buildDetailsTextForTraceEvent (event, target); | |
| 424 break; | |
| 436 case recordType.PaintImage: | 425 case recordType.PaintImage: |
| 437 case recordType.DecodeImage: | 426 case recordType.DecodeImage: |
| 438 case recordType.ResizeImage: | 427 case recordType.ResizeImage: |
| 439 case recordType.DecodeLazyPixelRef: | 428 case recordType.DecodeLazyPixelRef: |
| 440 case recordType.Animation: | |
| 441 case recordType.XHRReadyStateChange: | 429 case recordType.XHRReadyStateChange: |
| 442 case recordType.XHRLoad: | 430 case recordType.XHRLoad: |
| 443 case recordType.ResourceSendRequest: | 431 case recordType.ResourceSendRequest: |
| 444 case recordType.ResourceReceivedData: | 432 case recordType.ResourceReceivedData: |
| 445 case recordType.ResourceReceiveResponse: | 433 case recordType.ResourceReceiveResponse: |
| 446 case recordType.ResourceFinish: | 434 case recordType.ResourceFinish: |
| 447 case recordType.EmbedderCallback: | 435 if (event.url) |
| 448 case recordType.ParseHTML: | 436 details = WebInspector.linkifyResourceAsNode(event.url); |
| 449 detailsText = WebInspector.TimelineUIUtils.buildDetailsTextForTraceEvent (event, target); | |
| 450 break; | 437 break; |
| 451 case recordType.FunctionCall: | 438 case recordType.FunctionCall: |
| 452 details = linkifyLocation(eventData["scriptId"], eventData["scriptName"] , eventData["scriptLine"], 0); | 439 details = linkifyLocation(eventData["scriptId"], eventData["scriptName"] , eventData["scriptLine"], 0); |
| 453 break; | 440 break; |
| 454 case recordType.JSFrame: | 441 case recordType.JSFrame: |
| 455 details = createElement("span"); | 442 details = createElement("span"); |
| 456 details.createTextChild(WebInspector.beautifyFunctionName(eventData["fun ctionName"])); | 443 details.createTextChild(WebInspector.beautifyFunctionName(eventData["fun ctionName"])); |
| 457 var location = linkifyLocation(eventData["scriptId"], eventData["url"], eventData["lineNumber"], eventData["columnNumber"]); | 444 var location = linkifyLocation(eventData["scriptId"], eventData["url"], eventData["lineNumber"], eventData["columnNumber"]); |
| 458 if (location) { | 445 if (location) { |
| 459 details.createTextChild(" @ "); | 446 details.createTextChild(" @ "); |
| 460 details.appendChild(location); | 447 details.appendChild(location); |
| 461 } | 448 } |
| 462 break; | 449 break; |
| 463 case recordType.TimerInstall: | |
| 464 case recordType.TimerRemove: | |
| 465 details = linkifyTopCallFrame(); | |
| 466 detailsText = eventData["timerId"]; | |
| 467 break; | |
| 468 case recordType.RequestAnimationFrame: | |
| 469 case recordType.CancelAnimationFrame: | |
| 470 details = linkifyTopCallFrame(); | |
| 471 detailsText = eventData["id"]; | |
| 472 break; | |
| 473 case recordType.UpdateLayoutTree: | |
| 474 case recordType.RecalculateStyles: | |
| 475 details = linkifyTopCallFrame(); | |
| 476 break; | |
| 477 case recordType.EvaluateScript: | 450 case recordType.EvaluateScript: |
| 478 var url = eventData["url"]; | 451 var url = eventData["url"]; |
| 479 if (url) | 452 if (url) |
| 480 details = linkifyLocation("", url, eventData["lineNumber"], 0); | 453 details = linkifyLocation("", url, eventData["lineNumber"], 0); |
| 481 break; | 454 break; |
| 482 default: | 455 default: |
| 483 if (event.hasCategory(WebInspector.TracingModel.ConsoleEventCategory)) | 456 if (event.hasCategory(WebInspector.TracingModel.ConsoleEventCategory)) |
| 484 detailsText = null; | 457 detailsText = null; |
| 485 else | 458 else |
| 486 details = linkifyTopCallFrame(); | 459 details = linkifyTopCallFrame(); |
| (...skipping 1441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1928 if (!this._linkifier || !this._target) | 1901 if (!this._linkifier || !this._target) |
| 1929 return; | 1902 return; |
| 1930 | 1903 |
| 1931 var stackTraceElement = parentElement.createChild("div", "timeline-detai ls-view-row-value timeline-details-view-row-stack-trace monospace"); | 1904 var stackTraceElement = parentElement.createChild("div", "timeline-detai ls-view-row-value timeline-details-view-row-stack-trace monospace"); |
| 1932 | 1905 |
| 1933 var callFrameElem = WebInspector.DOMPresentationUtils.buildStackTracePre viewContents(this._target, this._linkifier, stackTrace); | 1906 var callFrameElem = WebInspector.DOMPresentationUtils.buildStackTracePre viewContents(this._target, this._linkifier, stackTrace); |
| 1934 | 1907 |
| 1935 stackTraceElement.appendChild(callFrameElem); | 1908 stackTraceElement.appendChild(callFrameElem); |
| 1936 } | 1909 } |
| 1937 } | 1910 } |
| OLD | NEW |