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

Side by Side Diff: Source/devtools/front_end/timeline/TracingTimelineUIUtils.js

Issue 400143002: DevTools: Make target on TimelineRecord nullable (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/timeline/TracingTimelineModel.js ('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 // 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
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
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
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 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TracingTimelineModel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698