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 |