| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @extends {WebInspector.TimelineUIUtils} | 7 * @extends {WebInspector.TimelineUIUtils} |
| 8 */ | 8 */ |
| 9 WebInspector.TracingTimelineUIUtils = function() | 9 WebInspector.TracingTimelineUIUtils = function() |
| 10 { | 10 { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 }, | 85 }, |
| 86 | 86 |
| 87 /** | 87 /** |
| 88 * @param {!WebInspector.TimelineModel.Record} record | 88 * @param {!WebInspector.TimelineModel.Record} record |
| 89 * @param {!WebInspector.Linkifier} linkifier | 89 * @param {!WebInspector.Linkifier} linkifier |
| 90 * @param {boolean} loadedFromFile | 90 * @param {boolean} loadedFromFile |
| 91 * @return {?Node} | 91 * @return {?Node} |
| 92 */ | 92 */ |
| 93 buildDetailsNode: function(record, linkifier, loadedFromFile) | 93 buildDetailsNode: function(record, linkifier, loadedFromFile) |
| 94 { | 94 { |
| 95 return WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent
(record.traceEvent(), linkifier, loadedFromFile, record.target()); | 95 return WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent
(record.traceEvent(), linkifier); |
| 96 }, | 96 }, |
| 97 | 97 |
| 98 /** | 98 /** |
| 99 * @param {!WebInspector.TimelineModel.Record} record | 99 * @param {!WebInspector.TimelineModel.Record} record |
| 100 * @param {!WebInspector.TimelineModel} model | 100 * @param {!WebInspector.TimelineModel} model |
| 101 * @param {!WebInspector.Linkifier} linkifier | 101 * @param {!WebInspector.Linkifier} linkifier |
| 102 * @param {function(!DocumentFragment)} callback | 102 * @param {function(!DocumentFragment)} callback |
| 103 * @param {boolean} loadedFromFile | 103 * @param {boolean} loadedFromFile |
| 104 */ | 104 */ |
| 105 generateDetailsContent: function(record, model, linkifier, callback, loadedF
romFile) | 105 generateDetailsContent: function(record, model, linkifier, callback, loadedF
romFile) |
| 106 { | 106 { |
| 107 if (!(model instanceof WebInspector.TracingTimelineModel)) | 107 if (!(model instanceof WebInspector.TracingTimelineModel)) |
| 108 throw new Error("Illegal argument."); | 108 throw new Error("Illegal argument."); |
| 109 var tracingTimelineModel = /** @type {!WebInspector.TracingTimelineModel
} */ (model); | 109 var tracingTimelineModel = /** @type {!WebInspector.TracingTimelineModel
} */ (model); |
| 110 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails(record.traceE
vent(), tracingTimelineModel, linkifier, callback, loadedFromFile, record.target
()); | 110 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails(record.traceE
vent(), tracingTimelineModel, linkifier, callback, loadedFromFile); |
| 111 }, | 111 }, |
| 112 | 112 |
| 113 /** | 113 /** |
| 114 * @return {!Element} | 114 * @return {!Element} |
| 115 */ | 115 */ |
| 116 createBeginFrameDivider: function() | 116 createBeginFrameDivider: function() |
| 117 { | 117 { |
| 118 return this.createEventDivider(WebInspector.TracingTimelineModel.RecordT
ype.BeginFrame); | 118 return this.createEventDivider(WebInspector.TracingTimelineModel.RecordT
ype.BeginFrame); |
| 119 }, | 119 }, |
| 120 | 120 |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 if (record.type() === recordTypes.MarkFirstPaint) | 313 if (record.type() === recordTypes.MarkFirstPaint) |
| 314 return true; | 314 return true; |
| 315 if (record.type() === recordTypes.MarkDOMContent || record.type() === record
Types.MarkLoad) | 315 if (record.type() === recordTypes.MarkDOMContent || record.type() === record
Types.MarkLoad) |
| 316 return record.data()["isMainFrame"]; | 316 return record.data()["isMainFrame"]; |
| 317 return false; | 317 return false; |
| 318 } | 318 } |
| 319 | 319 |
| 320 /** | 320 /** |
| 321 * @param {!WebInspector.TracingModel.Event} event | 321 * @param {!WebInspector.TracingModel.Event} event |
| 322 * @param {!WebInspector.Linkifier} linkifier | 322 * @param {!WebInspector.Linkifier} linkifier |
| 323 * @param {boolean} loadedFromFile | |
| 324 * @param {!WebInspector.Target} target | |
| 325 * @return {?Node} | 323 * @return {?Node} |
| 326 */ | 324 */ |
| 327 WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent = function(eve
nt, linkifier, loadedFromFile, target) | 325 WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent = function(eve
nt, linkifier) |
| 328 { | 326 { |
| 329 var recordType = WebInspector.TracingTimelineModel.RecordType; | 327 var recordType = WebInspector.TracingTimelineModel.RecordType; |
| 330 | 328 var target = event.thread.target(); |
| 331 var details; | 329 var details; |
| 332 var detailsText; | 330 var detailsText; |
| 333 var eventData = event.args.data; | 331 var eventData = event.args.data; |
| 334 switch (event.name) { | 332 switch (event.name) { |
| 335 case recordType.GCEvent: | 333 case recordType.GCEvent: |
| 336 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; | 334 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
| 337 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); | 335 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); |
| 338 break; | 336 break; |
| 339 case recordType.TimerFire: | 337 case recordType.TimerFire: |
| 340 detailsText = eventData["timerId"]; | 338 detailsText = eventData["timerId"]; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 return details; | 422 return details; |
| 425 | 423 |
| 426 /** | 424 /** |
| 427 * @param {string} scriptId | 425 * @param {string} scriptId |
| 428 * @param {string} url | 426 * @param {string} url |
| 429 * @param {number} lineNumber | 427 * @param {number} lineNumber |
| 430 * @param {number=} columnNumber | 428 * @param {number=} columnNumber |
| 431 */ | 429 */ |
| 432 function linkifyLocation(scriptId, url, lineNumber, columnNumber) | 430 function linkifyLocation(scriptId, url, lineNumber, columnNumber) |
| 433 { | 431 { |
| 434 if (!loadedFromFile && scriptId !== "0") { | |
| 435 var location = new WebInspector.DebuggerModel.Location( | |
| 436 target, | |
| 437 scriptId, | |
| 438 lineNumber - 1, | |
| 439 (columnNumber || 1) - 1); | |
| 440 return linkifier.linkifyRawLocation(location, "timeline-details"); | |
| 441 } | |
| 442 | |
| 443 if (!url) | 432 if (!url) |
| 444 return null; | 433 return null; |
| 445 | 434 |
| 446 // FIXME(62725): stack trace line/column numbers are one-based. | 435 // FIXME(62725): stack trace line/column numbers are one-based. |
| 447 columnNumber = columnNumber ? columnNumber - 1 : 0; | 436 return linkifier.linkifyLocationByScriptId(target, scriptId, url, lineNu
mber - 1, (columnNumber ||1) - 1, "timeline-details"); |
| 448 return linkifier.linkifyLocation(target, url, lineNumber - 1, columnNumb
er, "timeline-details"); | |
| 449 } | 437 } |
| 450 | 438 |
| 451 /** | 439 /** |
| 452 * @param {!ConsoleAgent.CallFrame} callFrame | 440 * @param {!ConsoleAgent.CallFrame} callFrame |
| 453 */ | 441 */ |
| 454 function linkifyCallFrame(callFrame) | 442 function linkifyCallFrame(callFrame) |
| 455 { | 443 { |
| 456 return linkifyLocation(callFrame.scriptId, callFrame.url, callFrame.line
Number, callFrame.columnNumber); | 444 return linkifyLocation(callFrame.scriptId, callFrame.url, callFrame.line
Number, callFrame.columnNumber); |
| 457 } | 445 } |
| 458 | 446 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 472 return linkifyCallFrame(stackTrace[0]); | 460 return linkifyCallFrame(stackTrace[0]); |
| 473 } | 461 } |
| 474 } | 462 } |
| 475 | 463 |
| 476 /** | 464 /** |
| 477 * @param {!WebInspector.TracingModel.Event} event | 465 * @param {!WebInspector.TracingModel.Event} event |
| 478 * @param {!WebInspector.TracingTimelineModel} model | 466 * @param {!WebInspector.TracingTimelineModel} model |
| 479 * @param {!WebInspector.Linkifier} linkifier | 467 * @param {!WebInspector.Linkifier} linkifier |
| 480 * @param {function(!DocumentFragment)} callback | 468 * @param {function(!DocumentFragment)} callback |
| 481 * @param {boolean} loadedFromFile | 469 * @param {boolean} loadedFromFile |
| 482 * @param {!WebInspector.Target} target | |
| 483 */ | 470 */ |
| 484 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
el, linkifier, callback, loadedFromFile, target) | 471 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
el, linkifier, callback, loadedFromFile) |
| 485 { | 472 { |
| 473 var target = event.thread.target(); |
| 474 //FIXME: support here nullable target |
| 475 if (!target) |
| 476 return; |
| 477 |
| 486 var relatedNode = null; | 478 var relatedNode = null; |
| 487 var barrier = new CallbackBarrier(); | 479 var barrier = new CallbackBarrier(); |
| 488 if (!event.previewElement) { | 480 if (!event.previewElement) { |
| 489 if (event.imageURL) | 481 if (event.imageURL) |
| 490 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target,
event.imageURL, false, barrier.createCallback(saveImage)); | 482 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target,
event.imageURL, false, barrier.createCallback(saveImage)); |
| 491 else if (event.picture) | 483 else if (event.picture) |
| 492 WebInspector.TracingTimelineUIUtils.buildPicturePreviewContent(model
.target(), event.picture, barrier.createCallback(saveImage)); | 484 WebInspector.TracingTimelineUIUtils.buildPicturePreviewContent(targe
t, event.picture, barrier.createCallback(saveImage)); |
| 493 } | 485 } |
| 494 if (event.backendNodeId) | 486 if (event.backendNodeId) |
| 495 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); | 487 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); |
| 496 barrier.callWhenDone(callbackWrapper); | 488 barrier.callWhenDone(callbackWrapper); |
| 497 | 489 |
| 498 /** | 490 /** |
| 499 * @param {!Element=} element | 491 * @param {!Element=} element |
| 500 */ | 492 */ |
| 501 function saveImage(element) | 493 function saveImage(element) |
| 502 { | 494 { |
| 503 event.previewElement = element || null; | 495 event.previewElement = element || null; |
| 504 } | 496 } |
| 505 | 497 |
| 506 /** | 498 /** |
| 507 * @param {?Array.<!DOMAgent.NodeId>} nodeIds | 499 * @param {?Array.<!DOMAgent.NodeId>} nodeIds |
| 508 */ | 500 */ |
| 509 function setRelatedNode(nodeIds) | 501 function setRelatedNode(nodeIds) |
| 510 { | 502 { |
| 511 if (nodeIds) | 503 if (nodeIds) |
| 512 relatedNode = target.domModel.nodeForId(nodeIds[0]); | 504 relatedNode = target.domModel.nodeForId(nodeIds[0]); |
| 513 } | 505 } |
| 514 | 506 |
| 515 function callbackWrapper() | 507 function callbackWrapper() |
| 516 { | 508 { |
| 517 callback(WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSync
hronously(event, model, linkifier, relatedNode, loadedFromFile, target)); | 509 callback(WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSync
hronously(event, model, linkifier, relatedNode, loadedFromFile, /** @type {!WebI
nspector.Target} */ (target))); |
| 518 } | 510 } |
| 519 } | 511 } |
| 520 | 512 |
| 521 /** | 513 /** |
| 522 * @param {!WebInspector.TracingModel.Event} event | 514 * @param {!WebInspector.TracingModel.Event} event |
| 523 * @param {!WebInspector.TracingTimelineModel} model | 515 * @param {!WebInspector.TracingTimelineModel} model |
| 524 * @param {!WebInspector.Linkifier} linkifier | 516 * @param {!WebInspector.Linkifier} linkifier |
| 525 * @param {?WebInspector.DOMNode} relatedNode | 517 * @param {?WebInspector.DOMNode} relatedNode |
| 526 * @param {boolean} loadedFromFile | 518 * @param {boolean} loadedFromFile |
| 527 * @param {!WebInspector.Target} target | 519 * @param {!WebInspector.Target} target |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); | 636 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); |
| 645 if (typeof initiatorData["webSocketProtocol"] !== "undefined") | 637 if (typeof initiatorData["webSocketProtocol"] !== "undefined") |
| 646 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); | 638 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); |
| 647 if (typeof eventData["message"] !== "undefined") | 639 if (typeof eventData["message"] !== "undefined") |
| 648 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); | 640 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); |
| 649 break; | 641 break; |
| 650 case recordTypes.EmbedderCallback: | 642 case recordTypes.EmbedderCallback: |
| 651 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); | 643 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); |
| 652 break; | 644 break; |
| 653 default: | 645 default: |
| 654 var detailsNode = WebInspector.TracingTimelineUIUtils.buildDetailsNodeFo
rTraceEvent(event, linkifier, loadedFromFile, target); | 646 var detailsNode = WebInspector.TracingTimelineUIUtils.buildDetailsNodeFo
rTraceEvent(event, linkifier); |
| 655 if (detailsNode) | 647 if (detailsNode) |
| 656 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); | 648 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); |
| 657 break; | 649 break; |
| 658 } | 650 } |
| 659 | 651 |
| 660 if (relatedNode) | 652 if (relatedNode) |
| 661 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); | 653 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); |
| 662 | 654 |
| 663 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) | 655 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) |
| 664 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); | 656 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 return result; | 793 return result; |
| 802 } | 794 } |
| 803 | 795 |
| 804 /** | 796 /** |
| 805 * @return {!WebInspector.TracingTimelineModel.Filter} | 797 * @return {!WebInspector.TracingTimelineModel.Filter} |
| 806 */ | 798 */ |
| 807 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() | 799 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() |
| 808 { | 800 { |
| 809 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); | 801 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); |
| 810 } | 802 } |
| OLD | NEW |