| 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 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 | 681 |
| 682 /** | 682 /** |
| 683 * @param {!SDK.TracingModel.Event} event | 683 * @param {!SDK.TracingModel.Event} event |
| 684 * @param {!TimelineModel.TimelineModel} model | 684 * @param {!TimelineModel.TimelineModel} model |
| 685 * @param {!Components.Linkifier} linkifier | 685 * @param {!Components.Linkifier} linkifier |
| 686 * @param {boolean} detailed | 686 * @param {boolean} detailed |
| 687 * @return {!Promise<!DocumentFragment>} | 687 * @return {!Promise<!DocumentFragment>} |
| 688 */ | 688 */ |
| 689 static async buildTraceEventDetails(event, model, linkifier, detailed) { | 689 static async buildTraceEventDetails(event, model, linkifier, detailed) { |
| 690 var maybeTarget = model.targetByEvent(event); | 690 var maybeTarget = model.targetByEvent(event); |
| 691 if (!maybeTarget) { | 691 /** @type {?Map<number, ?SDK.DOMNode>} */ |
| 692 return Timeline.TimelineUIUtils._buildTraceEventDetailsSynchronously( | 692 var relatedNodesMap = null; |
| 693 event, model, linkifier, detailed, null); | 693 if (maybeTarget) { |
| 694 } | 694 var target = /** @type {!SDK.Target} */ (maybeTarget); |
| 695 if (typeof event[Timeline.TimelineUIUtils._previewElementSymbol] === 'unde
fined') { |
| 696 var previewElement = null; |
| 697 var url = TimelineModel.TimelineData.forEvent(event).url; |
| 698 if (url) |
| 699 previewElement = await Components.DOMPresentationUtils.buildImagePrevi
ewContents(target, url, false); |
| 700 else if (TimelineModel.TimelineData.forEvent(event).picture) |
| 701 previewElement = await Timeline.TimelineUIUtils.buildPicturePreviewCon
tent(event, target); |
| 702 event[Timeline.TimelineUIUtils._previewElementSymbol] = previewElement; |
| 703 } |
| 695 | 704 |
| 696 var target = /** @type {!SDK.Target} */ (maybeTarget); | 705 /** @type {!Set<number>} */ |
| 697 if (typeof event[Timeline.TimelineUIUtils._previewElementSymbol] === 'undefi
ned') { | 706 var nodeIdsToResolve = new Set(); |
| 698 var previewElement = null; | 707 var timelineData = TimelineModel.TimelineData.forEvent(event); |
| 699 var url = TimelineModel.TimelineData.forEvent(event).url; | 708 if (timelineData.backendNodeId) |
| 700 if (url) | 709 nodeIdsToResolve.add(timelineData.backendNodeId); |
| 701 previewElement = await Components.DOMPresentationUtils.buildImagePreview
Contents(target, url, false); | 710 var invalidationTrackingEvents = TimelineModel.InvalidationTracker.invalid
ationEventsFor(event); |
| 702 else if (TimelineModel.TimelineData.forEvent(event).picture) | 711 if (invalidationTrackingEvents) |
| 703 previewElement = await Timeline.TimelineUIUtils.buildPicturePreviewConte
nt(event, target); | 712 Timeline.TimelineUIUtils._collectInvalidationNodeIds(nodeIdsToResolve, i
nvalidationTrackingEvents); |
| 704 event[Timeline.TimelineUIUtils._previewElementSymbol] = previewElement; | 713 if (nodeIdsToResolve.size) { |
| 705 } | 714 var domModel = target.model(SDK.DOMModel); |
| 706 | 715 if (domModel) { |
| 707 var nodeIdsToResolve = new Set(); | 716 relatedNodesMap = |
| 708 var timelineData = TimelineModel.TimelineData.forEvent(event); | 717 await new Promise(fulfill => domModel.pushNodesByBackendIdsToFront
end(nodeIdsToResolve, fulfill)); |
| 709 if (timelineData.backendNodeId) | 718 } |
| 710 nodeIdsToResolve.add(timelineData.backendNodeId); | |
| 711 var invalidationTrackingEvents = TimelineModel.InvalidationTracker.invalidat
ionEventsFor(event); | |
| 712 if (invalidationTrackingEvents) | |
| 713 Timeline.TimelineUIUtils._collectInvalidationNodeIds(nodeIdsToResolve, inv
alidationTrackingEvents); | |
| 714 var relatedNodes = null; | |
| 715 if (nodeIdsToResolve.size) { | |
| 716 var domModel = target.model(SDK.DOMModel); | |
| 717 if (domModel) { | |
| 718 relatedNodes = await new Promise(fulfill => | |
| 719 domModel.pushNodesByBackendIdsToFrontend(nodeIdsToResolve, fulfill))
; | |
| 720 } | 719 } |
| 721 } | 720 } |
| 722 | 721 |
| 723 return Timeline.TimelineUIUtils._buildTraceEventDetailsSynchronously( | |
| 724 event, model, linkifier, detailed, relatedNodes); | |
| 725 } | |
| 726 | |
| 727 /** | |
| 728 * @param {!SDK.TracingModel.Event} event | |
| 729 * @param {!TimelineModel.TimelineModel} model | |
| 730 * @param {!Components.Linkifier} linkifier | |
| 731 * @param {boolean} detailed | |
| 732 * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap | |
| 733 * @return {!DocumentFragment} | |
| 734 */ | |
| 735 static _buildTraceEventDetailsSynchronously(event, model, linkifier, detailed,
relatedNodesMap) { | |
| 736 var recordTypes = TimelineModel.TimelineModel.RecordType; | 722 var recordTypes = TimelineModel.TimelineModel.RecordType; |
| 737 // This message may vary per event.name; | 723 // This message may vary per event.name; |
| 738 var relatedNodeLabel; | 724 var relatedNodeLabel; |
| 739 | 725 |
| 740 var contentHelper = new Timeline.TimelineDetailsContentHelper(model.targetBy
Event(event), linkifier); | 726 var contentHelper = new Timeline.TimelineDetailsContentHelper(model.targetBy
Event(event), linkifier); |
| 741 contentHelper.addSection( | 727 contentHelper.addSection( |
| 742 Timeline.TimelineUIUtils.eventTitle(event), Timeline.TimelineUIUtils.eve
ntStyle(event).category.color); | 728 Timeline.TimelineUIUtils.eventTitle(event), Timeline.TimelineUIUtils.eve
ntStyle(event).category.color); |
| 743 | 729 |
| 744 var eventData = event.args['data']; | 730 var eventData = event.args['data']; |
| 745 var timelineData = TimelineModel.TimelineData.forEvent(event); | 731 var timelineData = TimelineModel.TimelineData.forEvent(event); |
| 746 var initiator = timelineData.initiator(); | 732 var initiator = timelineData.initiator(); |
| 733 var url = null; |
| 747 | 734 |
| 748 if (timelineData.warning) | 735 if (timelineData.warning) |
| 749 contentHelper.appendWarningRow(event); | 736 contentHelper.appendWarningRow(event); |
| 750 if (event.name === recordTypes.JSFrame && eventData['deoptReason']) | 737 if (event.name === recordTypes.JSFrame && eventData['deoptReason']) |
| 751 contentHelper.appendWarningRow(event, TimelineModel.TimelineModel.WarningT
ype.V8Deopt); | 738 contentHelper.appendWarningRow(event, TimelineModel.TimelineModel.WarningT
ype.V8Deopt); |
| 752 | 739 |
| 753 if (detailed) { | 740 if (detailed) { |
| 741 contentHelper.appendTextRow(Common.UIString('Total Time'), Number.millisTo
String(event.duration || 0, true)); |
| 754 contentHelper.appendTextRow(Common.UIString('Self Time'), Number.millisToS
tring(event.selfTime, true)); | 742 contentHelper.appendTextRow(Common.UIString('Self Time'), Number.millisToS
tring(event.selfTime, true)); |
| 755 contentHelper.appendTextRow(Common.UIString('Total Time'), Number.millisTo
String(event.duration || 0, true)); | |
| 756 } | 743 } |
| 757 | 744 |
| 758 switch (event.name) { | 745 switch (event.name) { |
| 759 case recordTypes.GCEvent: | 746 case recordTypes.GCEvent: |
| 760 case recordTypes.MajorGC: | 747 case recordTypes.MajorGC: |
| 761 case recordTypes.MinorGC: | 748 case recordTypes.MinorGC: |
| 762 var delta = event.args['usedHeapSizeBefore'] - event.args['usedHeapSizeA
fter']; | 749 var delta = event.args['usedHeapSizeBefore'] - event.args['usedHeapSizeA
fter']; |
| 763 contentHelper.appendTextRow(Common.UIString('Collected'), Number.bytesTo
String(delta)); | 750 contentHelper.appendTextRow(Common.UIString('Collected'), Number.bytesTo
String(delta)); |
| 764 break; | 751 break; |
| 765 case recordTypes.JSFrame: | 752 case recordTypes.JSFrame: |
| (...skipping 12 matching lines...) Expand all Loading... |
| 778 contentHelper.appendTextRow(Common.UIString('Repeats'), !eventData['si
ngleShot']); | 765 contentHelper.appendTextRow(Common.UIString('Repeats'), !eventData['si
ngleShot']); |
| 779 } | 766 } |
| 780 break; | 767 break; |
| 781 case recordTypes.FireAnimationFrame: | 768 case recordTypes.FireAnimationFrame: |
| 782 contentHelper.appendTextRow(Common.UIString('Callback ID'), eventData['i
d']); | 769 contentHelper.appendTextRow(Common.UIString('Callback ID'), eventData['i
d']); |
| 783 break; | 770 break; |
| 784 case recordTypes.ResourceSendRequest: | 771 case recordTypes.ResourceSendRequest: |
| 785 case recordTypes.ResourceReceiveResponse: | 772 case recordTypes.ResourceReceiveResponse: |
| 786 case recordTypes.ResourceReceivedData: | 773 case recordTypes.ResourceReceivedData: |
| 787 case recordTypes.ResourceFinish: | 774 case recordTypes.ResourceFinish: |
| 788 var url = timelineData.url; | 775 url = timelineData.url; |
| 789 if (url) | 776 if (url) |
| 790 contentHelper.appendElementRow(Common.UIString('Resource'), Components
.Linkifier.linkifyURL(url)); | 777 contentHelper.appendElementRow(Common.UIString('Resource'), Components
.Linkifier.linkifyURL(url)); |
| 791 if (eventData['requestMethod']) | 778 if (eventData['requestMethod']) |
| 792 contentHelper.appendTextRow(Common.UIString('Request Method'), eventDa
ta['requestMethod']); | 779 contentHelper.appendTextRow(Common.UIString('Request Method'), eventDa
ta['requestMethod']); |
| 793 if (typeof eventData['statusCode'] === 'number') | 780 if (typeof eventData['statusCode'] === 'number') |
| 794 contentHelper.appendTextRow(Common.UIString('Status Code'), eventData[
'statusCode']); | 781 contentHelper.appendTextRow(Common.UIString('Status Code'), eventData[
'statusCode']); |
| 795 if (eventData['mimeType']) | 782 if (eventData['mimeType']) |
| 796 contentHelper.appendTextRow(Common.UIString('MIME Type'), eventData['m
imeType']); | 783 contentHelper.appendTextRow(Common.UIString('MIME Type'), eventData['m
imeType']); |
| 797 if ('priority' in eventData) { | 784 if ('priority' in eventData) { |
| 798 var priority = NetworkConditions.uiLabelForPriority(eventData['priorit
y']); | 785 var priority = NetworkConditions.uiLabelForPriority(eventData['priorit
y']); |
| 799 contentHelper.appendTextRow(Common.UIString('Priority'), priority); | 786 contentHelper.appendTextRow(Common.UIString('Priority'), priority); |
| 800 } | 787 } |
| 801 if (eventData['encodedDataLength']) { | 788 if (eventData['encodedDataLength']) { |
| 802 contentHelper.appendTextRow( | 789 contentHelper.appendTextRow( |
| 803 Common.UIString('Encoded Data'), Common.UIString('%d Bytes', event
Data['encodedDataLength'])); | 790 Common.UIString('Encoded Data'), Common.UIString('%d Bytes', event
Data['encodedDataLength'])); |
| 804 } | 791 } |
| 805 if (eventData['decodedBodyLength']) { | 792 if (eventData['decodedBodyLength']) { |
| 806 contentHelper.appendTextRow( | 793 contentHelper.appendTextRow( |
| 807 Common.UIString('Decoded Body'), Common.UIString('%d Bytes', event
Data['decodedBodyLength'])); | 794 Common.UIString('Decoded Body'), Common.UIString('%d Bytes', event
Data['decodedBodyLength'])); |
| 808 } | 795 } |
| 809 break; | 796 break; |
| 810 case recordTypes.CompileScript: | 797 case recordTypes.CompileScript: |
| 811 case recordTypes.EvaluateScript: | 798 case recordTypes.EvaluateScript: |
| 812 var url = eventData && eventData['url']; | 799 url = eventData && eventData['url']; |
| 813 if (url) { | 800 if (url) { |
| 814 contentHelper.appendLocationRow( | 801 contentHelper.appendLocationRow( |
| 815 Common.UIString('Script'), url, eventData['lineNumber'], eventData
['columnNumber']); | 802 Common.UIString('Script'), url, eventData['lineNumber'], eventData
['columnNumber']); |
| 816 } | 803 } |
| 817 break; | 804 break; |
| 818 case recordTypes.Paint: | 805 case recordTypes.Paint: |
| 819 var clip = eventData['clip']; | 806 var clip = eventData['clip']; |
| 820 contentHelper.appendTextRow(Common.UIString('Location'), Common.UIString
('(%d, %d)', clip[0], clip[1])); | 807 contentHelper.appendTextRow(Common.UIString('Location'), Common.UIString
('(%d, %d)', clip[0], clip[1])); |
| 821 var clipWidth = Timeline.TimelineUIUtils.quadWidth(clip); | 808 var clipWidth = Timeline.TimelineUIUtils.quadWidth(clip); |
| 822 var clipHeight = Timeline.TimelineUIUtils.quadHeight(clip); | 809 var clipHeight = Timeline.TimelineUIUtils.quadHeight(clip); |
| 823 contentHelper.appendTextRow(Common.UIString('Dimensions'), Common.UIStri
ng('%d × %d', clipWidth, clipHeight)); | 810 contentHelper.appendTextRow(Common.UIString('Dimensions'), Common.UIStri
ng('%d × %d', clipWidth, clipHeight)); |
| 824 // Fall-through intended. | 811 // Fall-through intended. |
| 825 | 812 |
| 826 case recordTypes.PaintSetup: | 813 case recordTypes.PaintSetup: |
| 827 case recordTypes.Rasterize: | 814 case recordTypes.Rasterize: |
| 828 case recordTypes.ScrollLayer: | 815 case recordTypes.ScrollLayer: |
| 829 relatedNodeLabel = Common.UIString('Layer Root'); | 816 relatedNodeLabel = Common.UIString('Layer Root'); |
| 830 break; | 817 break; |
| 831 case recordTypes.PaintImage: | 818 case recordTypes.PaintImage: |
| 832 case recordTypes.DecodeLazyPixelRef: | 819 case recordTypes.DecodeLazyPixelRef: |
| 833 case recordTypes.DecodeImage: | 820 case recordTypes.DecodeImage: |
| 834 case recordTypes.ResizeImage: | 821 case recordTypes.ResizeImage: |
| 835 case recordTypes.DrawLazyPixelRef: | 822 case recordTypes.DrawLazyPixelRef: |
| 836 relatedNodeLabel = Common.UIString('Owner Element'); | 823 relatedNodeLabel = Common.UIString('Owner Element'); |
| 837 if (timelineData.url) { | 824 url = timelineData.url; |
| 838 contentHelper.appendElementRow( | 825 if (url) |
| 839 Common.UIString('Image URL'), Components.Linkifier.linkifyURL(time
lineData.url)); | 826 contentHelper.appendElementRow(Common.UIString('Image URL'), Component
s.Linkifier.linkifyURL(url)); |
| 840 } | |
| 841 break; | 827 break; |
| 842 case recordTypes.ParseAuthorStyleSheet: | 828 case recordTypes.ParseAuthorStyleSheet: |
| 843 var url = eventData['styleSheetUrl']; | 829 url = eventData['styleSheetUrl']; |
| 844 if (url) | 830 if (url) |
| 845 contentHelper.appendElementRow(Common.UIString('Stylesheet URL'), Comp
onents.Linkifier.linkifyURL(url)); | 831 contentHelper.appendElementRow(Common.UIString('Stylesheet URL'), Comp
onents.Linkifier.linkifyURL(url)); |
| 846 break; | 832 break; |
| 847 case recordTypes.UpdateLayoutTree: // We don't want to see default detail
s. | 833 case recordTypes.UpdateLayoutTree: // We don't want to see default detail
s. |
| 848 case recordTypes.RecalculateStyles: | 834 case recordTypes.RecalculateStyles: |
| 849 contentHelper.appendTextRow(Common.UIString('Elements Affected'), event.
args['elementCount']); | 835 contentHelper.appendTextRow(Common.UIString('Elements Affected'), event.
args['elementCount']); |
| 850 break; | 836 break; |
| 851 case recordTypes.Layout: | 837 case recordTypes.Layout: |
| 852 var beginData = event.args['beginData']; | 838 var beginData = event.args['beginData']; |
| 853 contentHelper.appendTextRow( | 839 contentHelper.appendTextRow( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 872 break; | 858 break; |
| 873 case recordTypes.EmbedderCallback: | 859 case recordTypes.EmbedderCallback: |
| 874 contentHelper.appendTextRow(Common.UIString('Callback Function'), eventD
ata['callbackName']); | 860 contentHelper.appendTextRow(Common.UIString('Callback Function'), eventD
ata['callbackName']); |
| 875 break; | 861 break; |
| 876 case recordTypes.Animation: | 862 case recordTypes.Animation: |
| 877 if (event.phase === SDK.TracingModel.Phase.NestableAsyncInstant) | 863 if (event.phase === SDK.TracingModel.Phase.NestableAsyncInstant) |
| 878 contentHelper.appendTextRow(Common.UIString('State'), eventData['state
']); | 864 contentHelper.appendTextRow(Common.UIString('State'), eventData['state
']); |
| 879 break; | 865 break; |
| 880 case recordTypes.ParseHTML: | 866 case recordTypes.ParseHTML: |
| 881 var beginData = event.args['beginData']; | 867 var beginData = event.args['beginData']; |
| 882 var url = beginData['url']; | |
| 883 var startLine = beginData['startLine'] - 1; | 868 var startLine = beginData['startLine'] - 1; |
| 884 var endLine = event.args['endData'] ? event.args['endData']['endLine'] -
1 : undefined; | 869 var endLine = event.args['endData'] ? event.args['endData']['endLine'] -
1 : undefined; |
| 870 url = beginData['url']; |
| 885 if (url) | 871 if (url) |
| 886 contentHelper.appendLocationRange(Common.UIString('Range'), url, start
Line, endLine); | 872 contentHelper.appendLocationRange(Common.UIString('Range'), url, start
Line, endLine); |
| 887 break; | 873 break; |
| 888 | 874 |
| 889 case recordTypes.FireIdleCallback: | 875 case recordTypes.FireIdleCallback: |
| 890 contentHelper.appendTextRow( | 876 contentHelper.appendTextRow( |
| 891 Common.UIString('Allotted Time'), Number.millisToString(eventData['a
llottedMilliseconds'])); | 877 Common.UIString('Allotted Time'), Number.millisToString(eventData['a
llottedMilliseconds'])); |
| 892 contentHelper.appendTextRow(Common.UIString('Invoked by Timeout'), event
Data['timedOut']); | 878 contentHelper.appendTextRow(Common.UIString('Invoked by Timeout'), event
Data['timedOut']); |
| 893 // Fall-through intended. | 879 // Fall-through intended. |
| 894 | 880 |
| 895 case recordTypes.RequestIdleCallback: | 881 case recordTypes.RequestIdleCallback: |
| 896 case recordTypes.CancelIdleCallback: | 882 case recordTypes.CancelIdleCallback: |
| 897 contentHelper.appendTextRow(Common.UIString('Callback ID'), eventData['i
d']); | 883 contentHelper.appendTextRow(Common.UIString('Callback ID'), eventData['i
d']); |
| 898 break; | 884 break; |
| 899 case recordTypes.EventDispatch: | 885 case recordTypes.EventDispatch: |
| 900 contentHelper.appendTextRow(Common.UIString('Type'), eventData['type']); | 886 contentHelper.appendTextRow(Common.UIString('Type'), eventData['type']); |
| 901 break; | 887 break; |
| 902 | 888 |
| 903 default: | 889 default: |
| 904 var detailsNode = | 890 var detailsNode = |
| 905 Timeline.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, model.
targetByEvent(event), linkifier); | 891 Timeline.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, model.
targetByEvent(event), linkifier); |
| 906 if (detailsNode) | 892 if (detailsNode) |
| 907 contentHelper.appendElementRow(Common.UIString('Details'), detailsNode
); | 893 contentHelper.appendElementRow(Common.UIString('Details'), detailsNode
); |
| 908 break; | 894 break; |
| 909 } | 895 } |
| 910 | 896 |
| 897 await Timeline.TimelineUIUtils._maybeAppendProductToDetails(contentHelper, u
rl || eventData && eventData['url']); |
| 898 |
| 911 if (timelineData.timeWaitingForMainThread) { | 899 if (timelineData.timeWaitingForMainThread) { |
| 912 contentHelper.appendTextRow( | 900 contentHelper.appendTextRow( |
| 913 Common.UIString('Time Waiting for Main Thread'), | 901 Common.UIString('Time Waiting for Main Thread'), |
| 914 Number.millisToString(timelineData.timeWaitingForMainThread, true)); | 902 Number.millisToString(timelineData.timeWaitingForMainThread, true)); |
| 915 } | 903 } |
| 916 | 904 |
| 917 var relatedNode = relatedNodesMap && relatedNodesMap.get(timelineData.backen
dNodeId); | 905 var relatedNode = relatedNodesMap && relatedNodesMap.get(timelineData.backen
dNodeId); |
| 918 if (relatedNode) { | 906 if (relatedNode) { |
| 919 contentHelper.appendElementRow( | 907 contentHelper.appendElementRow( |
| 920 relatedNodeLabel || Common.UIString('Related Node'), | 908 relatedNodeLabel || Common.UIString('Related Node'), |
| (...skipping 15 matching lines...) Expand all Loading... |
| 936 contentHelper.addSection(Common.UIString('Aggregated Time')); | 924 contentHelper.addSection(Common.UIString('Aggregated Time')); |
| 937 var pieChart = Timeline.TimelineUIUtils.generatePieChart( | 925 var pieChart = Timeline.TimelineUIUtils.generatePieChart( |
| 938 stats, Timeline.TimelineUIUtils.eventStyle(event).category, event.self
Time); | 926 stats, Timeline.TimelineUIUtils.eventStyle(event).category, event.self
Time); |
| 939 contentHelper.appendElementRow('', pieChart); | 927 contentHelper.appendElementRow('', pieChart); |
| 940 } | 928 } |
| 941 | 929 |
| 942 return contentHelper.fragment; | 930 return contentHelper.fragment; |
| 943 } | 931 } |
| 944 | 932 |
| 945 /** | 933 /** |
| 934 * @param {!Timeline.TimelineDetailsContentHelper} contentHelper |
| 935 * @param {?string} url |
| 936 * @return {!Promise} |
| 937 */ |
| 938 static async _maybeAppendProductToDetails(contentHelper, url) { |
| 939 var parsedURL = url && url.asParsedURL(); |
| 940 if (!parsedURL) |
| 941 return; |
| 942 var registry = await ProductRegistry.instance(); |
| 943 var name = registry.nameForUrl(parsedURL); |
| 944 if (name) |
| 945 contentHelper.appendTextRow(Common.UIString('Product'), name); |
| 946 } |
| 947 |
| 948 /** |
| 946 * @param {!TimelineModel.TimelineModel} model | 949 * @param {!TimelineModel.TimelineModel} model |
| 947 * @param {number} startTime | 950 * @param {number} startTime |
| 948 * @param {number} endTime | 951 * @param {number} endTime |
| 949 * @return {!DocumentFragment} | 952 * @return {!DocumentFragment} |
| 950 */ | 953 */ |
| 951 static buildRangeStats(model, startTime, endTime) { | 954 static buildRangeStats(model, startTime, endTime) { |
| 952 var aggregatedStats = Timeline.TimelineUIUtils.statsForTimeRange(model, star
tTime, endTime); | 955 var aggregatedStats = Timeline.TimelineUIUtils.statsForTimeRange(model, star
tTime, endTime); |
| 953 var startOffset = startTime - model.minimumRecordTime(); | 956 var startOffset = startTime - model.minimumRecordTime(); |
| 954 var endOffset = endTime - model.minimumRecordTime(); | 957 var endOffset = endTime - model.minimumRecordTime(); |
| 955 | 958 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1074 e[Timeline.TimelineUIUtils._categoryBreakdownCacheSymbol] = Object.assig
n({}, aggregatedStats); | 1077 e[Timeline.TimelineUIUtils._categoryBreakdownCacheSymbol] = Object.assig
n({}, aggregatedStats); |
| 1075 } | 1078 } |
| 1076 } | 1079 } |
| 1077 | 1080 |
| 1078 /** | 1081 /** |
| 1079 * @param {!TimelineModel.TimelineModel.NetworkRequest} request | 1082 * @param {!TimelineModel.TimelineModel.NetworkRequest} request |
| 1080 * @param {!TimelineModel.TimelineModel} model | 1083 * @param {!TimelineModel.TimelineModel} model |
| 1081 * @param {!Components.Linkifier} linkifier | 1084 * @param {!Components.Linkifier} linkifier |
| 1082 * @return {!Promise<!DocumentFragment>} | 1085 * @return {!Promise<!DocumentFragment>} |
| 1083 */ | 1086 */ |
| 1084 static buildNetworkRequestDetails(request, model, linkifier) { | 1087 static async buildNetworkRequestDetails(request, model, linkifier) { |
| 1085 const target = model.targetByEvent(request.children[0]); | 1088 const target = model.targetByEvent(request.children[0]); |
| 1086 const contentHelper = new Timeline.TimelineDetailsContentHelper(target, link
ifier); | 1089 const contentHelper = new Timeline.TimelineDetailsContentHelper(target, link
ifier); |
| 1087 const category = Timeline.TimelineUIUtils.networkRequestCategory(request); | 1090 const category = Timeline.TimelineUIUtils.networkRequestCategory(request); |
| 1088 const color = Timeline.TimelineUIUtils.networkCategoryColor(category); | 1091 const color = Timeline.TimelineUIUtils.networkCategoryColor(category); |
| 1089 contentHelper.addSection(Common.UIString('Network request'), color); | 1092 contentHelper.addSection(Common.UIString('Network request'), color); |
| 1090 | 1093 |
| 1091 const duration = request.endTime - (request.startTime || -Infinity); | 1094 const duration = request.endTime - (request.startTime || -Infinity); |
| 1092 if (request.url) | 1095 if (request.url) |
| 1093 contentHelper.appendElementRow(Common.UIString('URL'), Components.Linkifie
r.linkifyURL(request.url)); | 1096 contentHelper.appendElementRow(Common.UIString('URL'), Components.Linkifie
r.linkifyURL(request.url)); |
| 1097 await Timeline.TimelineUIUtils._maybeAppendProductToDetails(contentHelper, r
equest.url); |
| 1094 if (isFinite(duration)) | 1098 if (isFinite(duration)) |
| 1095 contentHelper.appendTextRow(Common.UIString('Duration'), Number.millisToSt
ring(duration, true)); | 1099 contentHelper.appendTextRow(Common.UIString('Duration'), Number.millisToSt
ring(duration, true)); |
| 1096 if (request.requestMethod) | 1100 if (request.requestMethod) |
| 1097 contentHelper.appendTextRow(Common.UIString('Request Method'), request.req
uestMethod); | 1101 contentHelper.appendTextRow(Common.UIString('Request Method'), request.req
uestMethod); |
| 1098 if (typeof request.priority === 'string') { | 1102 if (typeof request.priority === 'string') { |
| 1099 const priority = | 1103 const priority = |
| 1100 NetworkConditions.uiLabelForPriority(/** @type {!Protocol.Network.Reso
urcePriority} */ (request.priority)); | 1104 NetworkConditions.uiLabelForPriority(/** @type {!Protocol.Network.Reso
urcePriority} */ (request.priority)); |
| 1101 contentHelper.appendTextRow(Common.UIString('Priority'), priority); | 1105 contentHelper.appendTextRow(Common.UIString('Priority'), priority); |
| 1102 } | 1106 } |
| 1103 if (request.mimeType) | 1107 if (request.mimeType) |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1124 if (initiator) { | 1128 if (initiator) { |
| 1125 const initiatorURL = TimelineModel.TimelineData.forEvent(initiator).url; | 1129 const initiatorURL = TimelineModel.TimelineData.forEvent(initiator).url; |
| 1126 if (initiatorURL) { | 1130 if (initiatorURL) { |
| 1127 const link = linkifier.maybeLinkifyScriptLocation(target, null, initia
torURL, 0); | 1131 const link = linkifier.maybeLinkifyScriptLocation(target, null, initia
torURL, 0); |
| 1128 if (link) | 1132 if (link) |
| 1129 contentHelper.appendElementRow(title, link); | 1133 contentHelper.appendElementRow(title, link); |
| 1130 } | 1134 } |
| 1131 } | 1135 } |
| 1132 } | 1136 } |
| 1133 | 1137 |
| 1134 /** | 1138 if (!request.previewElement && request.url && target) { |
| 1135 * @param {function(?Element)} fulfill | 1139 request.previewElement = |
| 1136 */ | 1140 await Components.DOMPresentationUtils.buildImagePreviewContents(target
, request.url, false); |
| 1137 function action(fulfill) { | |
| 1138 Components.DOMPresentationUtils | |
| 1139 .buildImagePreviewContents( | |
| 1140 /** @type {!SDK.Target} */ (target), request.url, false) | |
| 1141 .then(saveImage); | |
| 1142 /** | |
| 1143 * @param {?Element} element | |
| 1144 */ | |
| 1145 function saveImage(element) { | |
| 1146 request.previewElement = element; | |
| 1147 fulfill(request.previewElement); | |
| 1148 } | |
| 1149 } | 1141 } |
| 1150 var previewPromise; | |
| 1151 if (request.previewElement) | 1142 if (request.previewElement) |
| 1152 previewPromise = Promise.resolve(request.previewElement); | 1143 contentHelper.appendElementRow(Common.UIString('Preview'), request.preview
Element); |
| 1153 else | 1144 return contentHelper.fragment; |
| 1154 previewPromise = request.url && target ? new Promise(action) : Promise.res
olve(null); | |
| 1155 /** | |
| 1156 * @param {?Element} element | |
| 1157 * @return {!DocumentFragment} | |
| 1158 */ | |
| 1159 function appendPreview(element) { | |
| 1160 if (element) | |
| 1161 contentHelper.appendElementRow(Common.UIString('Preview'), request.previ
ewElement); | |
| 1162 return contentHelper.fragment; | |
| 1163 } | |
| 1164 return previewPromise.then(appendPreview); | |
| 1165 } | 1145 } |
| 1166 | 1146 |
| 1167 /** | 1147 /** |
| 1168 * @param {!Array<!Protocol.Runtime.CallFrame>} callFrames | 1148 * @param {!Array<!Protocol.Runtime.CallFrame>} callFrames |
| 1169 * @return {!Protocol.Runtime.StackTrace} | 1149 * @return {!Protocol.Runtime.StackTrace} |
| 1170 */ | 1150 */ |
| 1171 static _stackTraceFromCallFrames(callFrames) { | 1151 static _stackTraceFromCallFrames(callFrames) { |
| 1172 return /** @type {!Protocol.Runtime.StackTrace} */ ({callFrames: callFrames}
); | 1152 return /** @type {!Protocol.Runtime.StackTrace} */ ({callFrames: callFrames}
); |
| 1173 } | 1153 } |
| 1174 | 1154 |
| (...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2289 * @param {string=} warningType | 2269 * @param {string=} warningType |
| 2290 */ | 2270 */ |
| 2291 appendWarningRow(event, warningType) { | 2271 appendWarningRow(event, warningType) { |
| 2292 var warning = Timeline.TimelineUIUtils.eventWarning(event, warningType); | 2272 var warning = Timeline.TimelineUIUtils.eventWarning(event, warningType); |
| 2293 if (warning) | 2273 if (warning) |
| 2294 this.appendElementRow(Common.UIString('Warning'), warning, true); | 2274 this.appendElementRow(Common.UIString('Warning'), warning, true); |
| 2295 } | 2275 } |
| 2296 }; | 2276 }; |
| 2297 | 2277 |
| 2298 Timeline.TimelineUIUtils._categoryBreakdownCacheSymbol = Symbol('categoryBreakdo
wnCache'); | 2278 Timeline.TimelineUIUtils._categoryBreakdownCacheSymbol = Symbol('categoryBreakdo
wnCache'); |
| OLD | NEW |