| 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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 * @return {!WebInspector.TimelineCategory} | 80 * @return {!WebInspector.TimelineCategory} |
| 81 */ | 81 */ |
| 82 categoryForRecord: function(record) | 82 categoryForRecord: function(record) |
| 83 { | 83 { |
| 84 return WebInspector.TracingTimelineUIUtils.styleForTraceEvent(record.tra
ceEvent().name).category; | 84 return WebInspector.TracingTimelineUIUtils.styleForTraceEvent(record.tra
ceEvent().name).category; |
| 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 | |
| 91 * @return {?Node} | 90 * @return {?Node} |
| 92 */ | 91 */ |
| 93 buildDetailsNode: function(record, linkifier, loadedFromFile) | 92 buildDetailsNode: function(record, linkifier) |
| 94 { | 93 { |
| 95 return WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent
(record.traceEvent(), linkifier); | 94 return WebInspector.TracingTimelineUIUtils.buildDetailsNodeForTraceEvent
(record.traceEvent(), linkifier); |
| 96 }, | 95 }, |
| 97 | 96 |
| 98 /** | 97 /** |
| 99 * @param {!WebInspector.TimelineModel.Record} record | 98 * @param {!WebInspector.TimelineModel.Record} record |
| 100 * @param {!WebInspector.TimelineModel} model | 99 * @param {!WebInspector.TimelineModel} model |
| 101 * @param {!WebInspector.Linkifier} linkifier | 100 * @param {!WebInspector.Linkifier} linkifier |
| 102 * @param {function(!DocumentFragment)} callback | 101 * @param {function(!DocumentFragment)} callback |
| 103 * @param {boolean} loadedFromFile | |
| 104 */ | 102 */ |
| 105 generateDetailsContent: function(record, model, linkifier, callback, loadedF
romFile) | 103 generateDetailsContent: function(record, model, linkifier, callback) |
| 106 { | 104 { |
| 107 if (!(model instanceof WebInspector.TracingTimelineModel)) | 105 if (!(model instanceof WebInspector.TracingTimelineModel)) |
| 108 throw new Error("Illegal argument."); | 106 throw new Error("Illegal argument."); |
| 109 var tracingTimelineModel = /** @type {!WebInspector.TracingTimelineModel
} */ (model); | 107 var tracingTimelineModel = /** @type {!WebInspector.TracingTimelineModel
} */ (model); |
| 110 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails(record.traceE
vent(), tracingTimelineModel, linkifier, callback, loadedFromFile); | 108 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails(record.traceE
vent(), tracingTimelineModel, linkifier, callback); |
| 111 }, | 109 }, |
| 112 | 110 |
| 113 /** | 111 /** |
| 114 * @return {!Element} | 112 * @return {!Element} |
| 115 */ | 113 */ |
| 116 createBeginFrameDivider: function() | 114 createBeginFrameDivider: function() |
| 117 { | 115 { |
| 118 return this.createEventDivider(WebInspector.TracingTimelineModel.RecordT
ype.BeginFrame); | 116 return this.createEventDivider(WebInspector.TracingTimelineModel.RecordT
ype.BeginFrame); |
| 119 }, | 117 }, |
| 120 | 118 |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 return null; | 457 return null; |
| 460 return linkifyCallFrame(stackTrace[0]); | 458 return linkifyCallFrame(stackTrace[0]); |
| 461 } | 459 } |
| 462 } | 460 } |
| 463 | 461 |
| 464 /** | 462 /** |
| 465 * @param {!WebInspector.TracingModel.Event} event | 463 * @param {!WebInspector.TracingModel.Event} event |
| 466 * @param {!WebInspector.TracingTimelineModel} model | 464 * @param {!WebInspector.TracingTimelineModel} model |
| 467 * @param {!WebInspector.Linkifier} linkifier | 465 * @param {!WebInspector.Linkifier} linkifier |
| 468 * @param {function(!DocumentFragment)} callback | 466 * @param {function(!DocumentFragment)} callback |
| 469 * @param {boolean} loadedFromFile | |
| 470 */ | 467 */ |
| 471 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
el, linkifier, callback, loadedFromFile) | 468 WebInspector.TracingTimelineUIUtils.buildTraceEventDetails = function(event, mod
el, linkifier, callback) |
| 472 { | 469 { |
| 473 var target = event.thread.target(); | 470 var target = event.thread.target(); |
| 474 //FIXME: support here nullable target | |
| 475 if (!target) | |
| 476 return; | |
| 477 | |
| 478 var relatedNode = null; | 471 var relatedNode = null; |
| 479 var barrier = new CallbackBarrier(); | 472 var barrier = new CallbackBarrier(); |
| 480 if (!event.previewElement) { | 473 if (!event.previewElement && target) { |
| 481 if (event.imageURL) | 474 if (event.imageURL) |
| 482 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target,
event.imageURL, false, barrier.createCallback(saveImage)); | 475 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target,
event.imageURL, false, barrier.createCallback(saveImage)); |
| 483 else if (event.picture) | 476 else if (event.picture) |
| 484 WebInspector.TracingTimelineUIUtils.buildPicturePreviewContent(targe
t, event.picture, barrier.createCallback(saveImage)); | 477 WebInspector.TracingTimelineUIUtils.buildPicturePreviewContent(targe
t, event.picture, barrier.createCallback(saveImage)); |
| 485 } | 478 } |
| 486 if (event.backendNodeId) | 479 if (event.backendNodeId && target) |
| 487 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); | 480 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); |
| 488 barrier.callWhenDone(callbackWrapper); | 481 barrier.callWhenDone(callbackWrapper); |
| 489 | 482 |
| 490 /** | 483 /** |
| 491 * @param {!Element=} element | 484 * @param {!Element=} element |
| 492 */ | 485 */ |
| 493 function saveImage(element) | 486 function saveImage(element) |
| 494 { | 487 { |
| 495 event.previewElement = element || null; | 488 event.previewElement = element || null; |
| 496 } | 489 } |
| 497 | 490 |
| 498 /** | 491 /** |
| 499 * @param {?Array.<!DOMAgent.NodeId>} nodeIds | 492 * @param {?Array.<!DOMAgent.NodeId>} nodeIds |
| 500 */ | 493 */ |
| 501 function setRelatedNode(nodeIds) | 494 function setRelatedNode(nodeIds) |
| 502 { | 495 { |
| 503 if (nodeIds) | 496 if (nodeIds) |
| 504 relatedNode = target.domModel.nodeForId(nodeIds[0]); | 497 relatedNode = target.domModel.nodeForId(nodeIds[0]); |
| 505 } | 498 } |
| 506 | 499 |
| 507 function callbackWrapper() | 500 function callbackWrapper() |
| 508 { | 501 { |
| 509 callback(WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSync
hronously(event, model, linkifier, relatedNode, loadedFromFile, /** @type {!WebI
nspector.Target} */ (target))); | 502 callback(WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSync
hronously(event, model, linkifier, relatedNode)); |
| 510 } | 503 } |
| 511 } | 504 } |
| 512 | 505 |
| 513 /** | 506 /** |
| 514 * @param {!WebInspector.TracingModel.Event} event | 507 * @param {!WebInspector.TracingModel.Event} event |
| 515 * @param {!WebInspector.TracingTimelineModel} model | 508 * @param {!WebInspector.TracingTimelineModel} model |
| 516 * @param {!WebInspector.Linkifier} linkifier | 509 * @param {!WebInspector.Linkifier} linkifier |
| 517 * @param {?WebInspector.DOMNode} relatedNode | 510 * @param {?WebInspector.DOMNode} relatedNode |
| 518 * @param {boolean} loadedFromFile | |
| 519 * @param {!WebInspector.Target} target | |
| 520 * @return {!DocumentFragment} | 511 * @return {!DocumentFragment} |
| 521 */ | 512 */ |
| 522 WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSynchronously = funct
ion(event, model, linkifier, relatedNode, loadedFromFile, target) | 513 WebInspector.TracingTimelineUIUtils._buildTraceEventDetailsSynchronously = funct
ion(event, model, linkifier, relatedNode) |
| 523 { | 514 { |
| 524 var fragment = document.createDocumentFragment(); | 515 var fragment = document.createDocumentFragment(); |
| 525 var stats = {}; | 516 var stats = {}; |
| 526 var hasChildren = WebInspector.TracingTimelineUIUtils._aggregatedStatsForTra
ceEvent(stats, model, event); | 517 var hasChildren = WebInspector.TracingTimelineUIUtils._aggregatedStatsForTra
ceEvent(stats, model, event); |
| 527 var pieChart = hasChildren ? | 518 var pieChart = hasChildren ? |
| 528 WebInspector.TimelineUIUtils.generatePieChart(stats, WebInspector.Tracin
gTimelineUIUtils.styleForTraceEvent(event.name).category, event.selfTime) : | 519 WebInspector.TimelineUIUtils.generatePieChart(stats, WebInspector.Tracin
gTimelineUIUtils.styleForTraceEvent(event.name).category, event.selfTime) : |
| 529 WebInspector.TimelineUIUtils.generatePieChart(stats); | 520 WebInspector.TimelineUIUtils.generatePieChart(stats); |
| 530 fragment.appendChild(pieChart); | 521 fragment.appendChild(pieChart); |
| 531 | 522 |
| 532 var recordTypes = WebInspector.TracingTimelineModel.RecordType; | 523 var recordTypes = WebInspector.TracingTimelineModel.RecordType; |
| 533 | 524 |
| 534 // The messages may vary per event.name; | 525 // The messages may vary per event.name; |
| 535 var callSiteStackTraceLabel; | 526 var callSiteStackTraceLabel; |
| 536 var callStackLabel; | 527 var callStackLabel; |
| 537 var relatedNodeLabel; | 528 var relatedNodeLabel; |
| 538 | 529 |
| 539 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); | 530 var contentHelper = new WebInspector.TimelineDetailsContentHelper(event.thre
ad.target(), linkifier, true); |
| 540 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime, true)); | 531 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime, true)); |
| 541 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()))); | 532 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()))); |
| 542 var eventData = event.args.data; | 533 var eventData = event.args.data; |
| 543 var initiator = event.initiator; | 534 var initiator = event.initiator; |
| 544 | 535 |
| 545 switch (event.name) { | 536 switch (event.name) { |
| 546 case recordTypes.GCEvent: | 537 case recordTypes.GCEvent: |
| 547 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; | 538 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
| 548 contentHelper.appendTextRow(WebInspector.UIString("Collected"), Number.b
ytesToString(delta)); | 539 contentHelper.appendTextRow(WebInspector.UIString("Collected"), Number.b
ytesToString(delta)); |
| 549 break; | 540 break; |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 return result; | 784 return result; |
| 794 } | 785 } |
| 795 | 786 |
| 796 /** | 787 /** |
| 797 * @return {!WebInspector.TracingTimelineModel.Filter} | 788 * @return {!WebInspector.TracingTimelineModel.Filter} |
| 798 */ | 789 */ |
| 799 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() | 790 WebInspector.TracingTimelineUIUtils.hiddenEventsFilter = function() |
| 800 { | 791 { |
| 801 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); | 792 return new WebInspector.TracingTimelineModel.InclusiveEventNameFilter(WebIns
pector.TracingTimelineUIUtils._visibleTypes()); |
| 802 } | 793 } |
| OLD | NEW |