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 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 * @param {!WebInspector.TracingModel.Event} event | 667 * @param {!WebInspector.TracingModel.Event} event |
668 * @param {!WebInspector.TracingModel} model | 668 * @param {!WebInspector.TracingModel} model |
669 * @param {!WebInspector.Linkifier} linkifier | 669 * @param {!WebInspector.Linkifier} linkifier |
670 * @param {function(!DocumentFragment)} callback | 670 * @param {function(!DocumentFragment)} callback |
671 * @param {boolean} loadedFromFile | 671 * @param {boolean} loadedFromFile |
672 * @param {?WebInspector.TimelineTraceEventBindings} bindings | 672 * @param {?WebInspector.TimelineTraceEventBindings} bindings |
673 * @param {!WebInspector.Target} target | 673 * @param {!WebInspector.Target} target |
674 */ | 674 */ |
675 WebInspector.TimelineUIUtils.buildTraceEventDetails = function(event, model, lin
kifier, callback, loadedFromFile, bindings, target) | 675 WebInspector.TimelineUIUtils.buildTraceEventDetails = function(event, model, lin
kifier, callback, loadedFromFile, bindings, target) |
676 { | 676 { |
677 var imageElement = event.previewElement; | |
678 var relatedNode = null; | 677 var relatedNode = null; |
679 var eventData = event.args.data; | |
680 var barrier = new CallbackBarrier(); | 678 var barrier = new CallbackBarrier(); |
681 if (!imageElement && WebInspector.TimelineUIUtils.needsPreviewElement(event.
name)) | 679 if (event.imageURL && !event.previewElement) |
682 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target, even
tData["url"], false, barrier.createCallback(saveImage)); | 680 WebInspector.DOMPresentationUtils.buildImagePreviewContents(target, even
t.imageURL, false, barrier.createCallback(saveImage)); |
683 var backendNodeId; | 681 if (event.backendNodeId) |
684 var recordTypes = WebInspector.TimelineModel.RecordType; | 682 target.domModel.pushNodesByBackendIdsToFrontend([event.backendNodeId], b
arrier.createCallback(setRelatedNode)); |
685 switch (event.name) { | |
686 case recordTypes.Layout: | |
687 backendNodeId = event.args["endData"]["rootNode"]; | |
688 break; | |
689 case recordTypes.Paint: | |
690 case recordTypes.ScrollLayer: | |
691 backendNodeId = eventData["nodeId"]; | |
692 break; | |
693 case recordTypes.DecodeImage: | |
694 case recordTypes.ResizeImage: | |
695 // FIXME: provide node id. | |
696 break; | |
697 } | |
698 if (backendNodeId) | |
699 target.domModel.pushNodesByBackendIdsToFrontend([backendNodeId], barrier
.createCallback(setRelatedNode)); | |
700 barrier.callWhenDone(callbackWrapper); | 683 barrier.callWhenDone(callbackWrapper); |
701 | 684 |
702 /** | 685 /** |
703 * @param {!Element=} element | 686 * @param {!Element=} element |
704 */ | 687 */ |
705 function saveImage(element) | 688 function saveImage(element) |
706 { | 689 { |
707 imageElement = element || null; | 690 event.previewElement = element || null; |
708 event.previewElement = imageElement; | |
709 } | 691 } |
710 | 692 |
711 /** | 693 /** |
712 * @param {?Array.<!DOMAgent.NodeId>} nodeIds | 694 * @param {?Array.<!DOMAgent.NodeId>} nodeIds |
713 */ | 695 */ |
714 function setRelatedNode(nodeIds) | 696 function setRelatedNode(nodeIds) |
715 { | 697 { |
716 if (nodeIds) | 698 if (nodeIds) |
717 relatedNode = target.domModel.nodeForId(nodeIds[0]); | 699 relatedNode = target.domModel.nodeForId(nodeIds[0]); |
718 } | 700 } |
719 | 701 |
720 function callbackWrapper() | 702 function callbackWrapper() |
721 { | 703 { |
722 callback(WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronous
ly(event, model, linkifier, imageElement, relatedNode, loadedFromFile, bindings,
target)); | 704 callback(WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronous
ly(event, model, linkifier, relatedNode, loadedFromFile, bindings, target)); |
723 } | 705 } |
724 } | 706 } |
725 | 707 |
726 /** | 708 /** |
727 * @param {!WebInspector.TracingModel.Event} event | 709 * @param {!WebInspector.TracingModel.Event} event |
728 * @param {!WebInspector.TracingModel} model | 710 * @param {!WebInspector.TracingModel} model |
729 * @param {!WebInspector.Linkifier} linkifier | 711 * @param {!WebInspector.Linkifier} linkifier |
730 * @param {?Element} imagePreviewElement | |
731 * @param {?WebInspector.DOMNode} relatedNode | 712 * @param {?WebInspector.DOMNode} relatedNode |
732 * @param {boolean} loadedFromFile | 713 * @param {boolean} loadedFromFile |
733 * @param {?WebInspector.TimelineTraceEventBindings} bindings | 714 * @param {?WebInspector.TimelineTraceEventBindings} bindings |
734 * @param {!WebInspector.Target} target | 715 * @param {!WebInspector.Target} target |
735 * @return {!DocumentFragment} | 716 * @return {!DocumentFragment} |
736 */ | 717 */ |
737 WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
nt, model, linkifier, imagePreviewElement, relatedNode, loadedFromFile, bindings
, target) | 718 WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously = function(eve
nt, model, linkifier, relatedNode, loadedFromFile, bindings, target) |
738 { | 719 { |
739 var fragment = document.createDocumentFragment(); | 720 var fragment = document.createDocumentFragment(); |
740 var stats = WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(model
, event); | 721 var stats = WebInspector.TimelineUIUtils._aggregatedStatsForTraceEvent(model
, event); |
741 var pieChart = stats.hasChildren ? | 722 var pieChart = stats.hasChildren ? |
742 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats, Web
Inspector.TimelineUIUtils.styleForTimelineEvent(event.name).category, event.self
Time / 1000) : | 723 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats, Web
Inspector.TimelineUIUtils.styleForTimelineEvent(event.name).category, event.self
Time / 1000) : |
743 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats); | 724 WebInspector.TimelineUIUtils.generatePieChart(stats.aggregatedStats); |
744 fragment.appendChild(pieChart); | 725 fragment.appendChild(pieChart); |
745 | 726 |
746 var recordTypes = WebInspector.TimelineModel.RecordType; | 727 var recordTypes = WebInspector.TimelineTraceEventBindings.RecordType; |
747 | 728 |
748 // The messages may vary per event.name; | 729 // The messages may vary per event.name; |
749 var callSiteStackTraceLabel; | 730 var callSiteStackTraceLabel; |
750 var callStackLabel; | 731 var callStackLabel; |
751 var relatedNodeLabel; | 732 var relatedNodeLabel; |
752 | 733 |
753 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); | 734 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li
nkifier, true); |
754 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime / 1000, true)); | 735 contentHelper.appendTextRow(WebInspector.UIString("Self Time"), Number.milli
sToString(event.selfTime / 1000, true)); |
755 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()) / 1000)); | 736 contentHelper.appendTextRow(WebInspector.UIString("Start Time"), Number.mill
isToString((event.startTime - model.minimumRecordTime()) / 1000)); |
756 var eventData = event.args.data; | 737 var eventData = event.args.data; |
757 var initiator = event.initiator; | 738 var initiator = event.initiator; |
758 | 739 |
759 switch (event.name) { | 740 switch (event.name) { |
760 case recordTypes.GCEvent: | 741 case recordTypes.GCEvent: |
761 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapS
izeAfter"]; | 742 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
762 contentHelper.appendTextRow(WebInspector.UIString("Collected"), Numb
er.bytesToString(delta)); | 743 contentHelper.appendTextRow(WebInspector.UIString("Collected"), Number.b
ytesToString(delta)); |
763 break; | 744 break; |
764 case recordTypes.TimerFire: | 745 case recordTypes.TimerFire: |
765 callSiteStackTraceLabel = WebInspector.UIString("Timer installed"); | 746 callSiteStackTraceLabel = WebInspector.UIString("Timer installed"); |
766 // Fall-through intended. | 747 // Fall-through intended. |
767 | 748 |
768 case recordTypes.TimerInstall: | 749 case recordTypes.TimerInstall: |
769 case recordTypes.TimerRemove: | 750 case recordTypes.TimerRemove: |
770 contentHelper.appendTextRow(WebInspector.UIString("Timer ID"), event
Data["timerId"]); | 751 contentHelper.appendTextRow(WebInspector.UIString("Timer ID"), eventData
["timerId"]); |
771 if (event.name === recordTypes.TimerInstall) { | 752 if (event.name === recordTypes.TimerInstall) { |
772 contentHelper.appendTextRow(WebInspector.UIString("Timeout"), Nu
mber.millisToString(eventData["timeout"])); | 753 contentHelper.appendTextRow(WebInspector.UIString("Timeout"), Number
.millisToString(eventData["timeout"])); |
773 contentHelper.appendTextRow(WebInspector.UIString("Repeats"), !e
ventData["singleShot"]); | 754 contentHelper.appendTextRow(WebInspector.UIString("Repeats"), !event
Data["singleShot"]); |
774 } | 755 } |
775 break; | 756 break; |
776 case recordTypes.FireAnimationFrame: | 757 case recordTypes.FireAnimationFrame: |
777 callSiteStackTraceLabel = WebInspector.UIString("Animation frame req
uested"); | 758 callSiteStackTraceLabel = WebInspector.UIString("Animation frame request
ed"); |
778 contentHelper.appendTextRow(WebInspector.UIString("Callback ID"), ev
entData["id"]); | 759 contentHelper.appendTextRow(WebInspector.UIString("Callback ID"), eventD
ata["id"]); |
779 break; | 760 break; |
780 case recordTypes.FunctionCall: | 761 case recordTypes.FunctionCall: |
781 if (eventData["scriptName"]) | 762 if (eventData["scriptName"]) |
782 contentHelper.appendLocationRow(WebInspector.UIString("Location"
), eventData["scriptName"], eventData["scriptLine"]); | 763 contentHelper.appendLocationRow(WebInspector.UIString("Location"), e
ventData["scriptName"], eventData["scriptLine"]); |
783 break; | 764 break; |
784 case recordTypes.ResourceSendRequest: | 765 case recordTypes.ResourceSendRequest: |
785 case recordTypes.ResourceReceiveResponse: | 766 case recordTypes.ResourceReceiveResponse: |
786 case recordTypes.ResourceReceivedData: | 767 case recordTypes.ResourceReceivedData: |
787 case recordTypes.ResourceFinish: | 768 case recordTypes.ResourceFinish: |
788 var url = (event.name === recordTypes.ResourceSendRequest) ? eventDa
ta["url"] : initiator.args.data["url"]; | 769 var url = (event.name === recordTypes.ResourceSendRequest) ? eventData["
url"] : initiator.args.data["url"]; |
789 if (url) | 770 if (url) |
790 contentHelper.appendElementRow(WebInspector.UIString("Resource")
, WebInspector.linkifyResourceAsNode(url)); | 771 contentHelper.appendElementRow(WebInspector.UIString("Resource"), We
bInspector.linkifyResourceAsNode(url)); |
791 if (imagePreviewElement) | 772 if (event.previewElement) |
792 contentHelper.appendElementRow(WebInspector.UIString("Preview"),
imagePreviewElement); | 773 contentHelper.appendElementRow(WebInspector.UIString("Preview"), eve
nt.previewElement); |
793 if (eventData["requestMethod"]) | 774 if (eventData["requestMethod"]) |
794 contentHelper.appendTextRow(WebInspector.UIString("Request Metho
d"), eventData["requestMethod"]); | 775 contentHelper.appendTextRow(WebInspector.UIString("Request Method"),
eventData["requestMethod"]); |
795 if (typeof eventData["statusCode"] === "number") | 776 if (typeof eventData["statusCode"] === "number") |
796 contentHelper.appendTextRow(WebInspector.UIString("Status Code")
, eventData["statusCode"]); | 777 contentHelper.appendTextRow(WebInspector.UIString("Status Code"), ev
entData["statusCode"]); |
797 if (eventData["mimeType"]) | 778 if (eventData["mimeType"]) |
798 contentHelper.appendTextRow(WebInspector.UIString("MIME Type"),
eventData["mimeType"]); | 779 contentHelper.appendTextRow(WebInspector.UIString("MIME Type"), even
tData["mimeType"]); |
799 if (eventData["encodedDataLength"]) | 780 if (eventData["encodedDataLength"]) |
800 contentHelper.appendTextRow(WebInspector.UIString("Encoded Data
Length"), WebInspector.UIString("%d Bytes", eventData["encodedDataLength"])); | 781 contentHelper.appendTextRow(WebInspector.UIString("Encoded Data Leng
th"), WebInspector.UIString("%d Bytes", eventData["encodedDataLength"])); |
801 break; | 782 break; |
802 case recordTypes.EvaluateScript: | 783 case recordTypes.EvaluateScript: |
803 var url = eventData["url"]; | 784 var url = eventData["url"]; |
804 if (url) | 785 if (url) |
805 contentHelper.appendLocationRow(WebInspector.UIString("Script"),
url, eventData["lineNumber"]); | 786 contentHelper.appendLocationRow(WebInspector.UIString("Script"), url
, eventData["lineNumber"]); |
806 break; | 787 break; |
807 case recordTypes.Paint: | 788 case recordTypes.Paint: |
808 var clip = eventData["clip"]; | 789 var clip = eventData["clip"]; |
809 contentHelper.appendTextRow(WebInspector.UIString("Location"), WebIn
spector.UIString("(%d, %d)", clip[0], clip[1])); | 790 contentHelper.appendTextRow(WebInspector.UIString("Location"), WebInspec
tor.UIString("(%d, %d)", clip[0], clip[1])); |
810 var clipWidth = WebInspector.TimelineUIUtils._quadWidth(clip); | 791 var clipWidth = WebInspector.TimelineUIUtils._quadWidth(clip); |
811 var clipHeight = WebInspector.TimelineUIUtils._quadHeight(clip); | 792 var clipHeight = WebInspector.TimelineUIUtils._quadHeight(clip); |
812 contentHelper.appendTextRow(WebInspector.UIString("Dimensions"), Web
Inspector.UIString("%d × %d", clipWidth, clipHeight)); | 793 contentHelper.appendTextRow(WebInspector.UIString("Dimensions"), WebInsp
ector.UIString("%d × %d", clipWidth, clipHeight)); |
813 // Fall-through intended. | 794 // Fall-through intended. |
814 | 795 |
815 case recordTypes.PaintSetup: | 796 case recordTypes.PaintSetup: |
816 case recordTypes.Rasterize: | 797 case recordTypes.Rasterize: |
817 case recordTypes.ScrollLayer: | 798 case recordTypes.ScrollLayer: |
818 relatedNodeLabel = WebInspector.UIString("Layer root"); | 799 relatedNodeLabel = WebInspector.UIString("Layer root"); |
819 break; | 800 break; |
820 case recordTypes.DecodeImage: | 801 case recordTypes.PaintImage: |
821 case recordTypes.ResizeImage: | 802 case recordTypes.DecodeLazyPixelRef: |
822 relatedNodeLabel = WebInspector.UIString("Image element"); | 803 case recordTypes.DecodeImage: |
823 var url = eventData["url"]; | 804 case recordTypes.ResizeImage: |
824 if (url) | 805 case recordTypes.DrawLazyPixelRef: |
825 contentHelper.appendElementRow(WebInspector.UIString("Image URL"
), WebInspector.linkifyResourceAsNode(url)); | 806 relatedNodeLabel = WebInspector.UIString("Image element"); |
826 break; | 807 if (event.imageURL) |
827 case recordTypes.RecalculateStyles: // We don't want to see default deta
ils. | 808 contentHelper.appendElementRow(WebInspector.UIString("Image URL"), W
ebInspector.linkifyResourceAsNode(event.imageURL)); |
828 contentHelper.appendTextRow(WebInspector.UIString("Elements affected
"), event.args["elementCount"]); | 809 if (event.previewElement) |
829 callStackLabel = WebInspector.UIString("Styles recalculation forced"
); | 810 contentHelper.appendElementRow(WebInspector.UIString("Preview"), eve
nt.previewElement); |
830 break; | 811 break; |
831 case recordTypes.Layout: | 812 case recordTypes.RecalculateStyles: // We don't want to see default details. |
832 var beginData = event.args["beginData"]; | 813 contentHelper.appendTextRow(WebInspector.UIString("Elements affected"),
event.args["elementCount"]); |
833 contentHelper.appendTextRow(WebInspector.UIString("Nodes that need l
ayout"), beginData["dirtyObjects"]); | 814 callStackLabel = WebInspector.UIString("Styles recalculation forced"); |
834 contentHelper.appendTextRow(WebInspector.UIString("Layout tree size"
), beginData["totalObjects"]); | 815 break; |
835 contentHelper.appendTextRow(WebInspector.UIString("Layout scope"), | 816 case recordTypes.Layout: |
836 beginData["partialLayout"] ? WebInspector.UIString("Partial") :
WebInspector.UIString("Whole document")); | 817 var beginData = event.args["beginData"]; |
837 callSiteStackTraceLabel = WebInspector.UIString("Layout invalidated"
); | 818 contentHelper.appendTextRow(WebInspector.UIString("Nodes that need layou
t"), beginData["dirtyObjects"]); |
838 callStackLabel = WebInspector.UIString("Layout forced"); | 819 contentHelper.appendTextRow(WebInspector.UIString("Layout tree size"), b
eginData["totalObjects"]); |
839 relatedNodeLabel = WebInspector.UIString("Layout root"); | 820 contentHelper.appendTextRow(WebInspector.UIString("Layout scope"), |
840 break; | 821 beginData["partialLayout"] ? WebInspector.UI
String("Partial") : WebInspector.UIString("Whole document")); |
841 case recordTypes.ConsoleTime: | 822 callSiteStackTraceLabel = WebInspector.UIString("Layout invalidated"); |
| 823 callStackLabel = WebInspector.UIString("Layout forced"); |
| 824 relatedNodeLabel = WebInspector.UIString("Layout root"); |
| 825 break; |
| 826 case recordTypes.ConsoleTime: |
| 827 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventData[
"message"]); |
| 828 break; |
| 829 case recordTypes.WebSocketCreate: |
| 830 case recordTypes.WebSocketSendHandshakeRequest: |
| 831 case recordTypes.WebSocketReceiveHandshakeResponse: |
| 832 case recordTypes.WebSocketDestroy: |
| 833 var initiatorData = initiator ? initiator.args.data : eventData; |
| 834 if (typeof initiatorData["webSocketURL"] !== "undefined") |
| 835 contentHelper.appendTextRow(WebInspector.UIString("URL"), initiatorD
ata["webSocketURL"]); |
| 836 if (typeof initiatorData["webSocketProtocol"] !== "undefined") |
| 837 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Protoco
l"), initiatorData["webSocketProtocol"]); |
| 838 if (typeof eventData["message"] !== "undefined") |
842 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); | 839 contentHelper.appendTextRow(WebInspector.UIString("Message"), eventD
ata["message"]); |
843 break; | 840 break; |
844 case recordTypes.WebSocketCreate: | 841 case recordTypes.EmbedderCallback: |
845 case recordTypes.WebSocketSendHandshakeRequest: | 842 contentHelper.appendTextRow(WebInspector.UIString("Callback Function"),
eventData["callbackName"]); |
846 case recordTypes.WebSocketReceiveHandshakeResponse: | 843 break; |
847 case recordTypes.WebSocketDestroy: | 844 default: |
848 var initiatorData = initiator ? initiator.args.data : eventData; | 845 var detailsNode = WebInspector.TimelineUIUtils.buildDetailsNodeForTraceE
vent(event, linkifier, loadedFromFile, bindings, target); |
849 if (typeof initiatorData["webSocketURL"] !== "undefined") | 846 if (detailsNode) |
850 contentHelper.appendTextRow(WebInspector.UIString("URL"), initia
torData["webSocketURL"]); | 847 contentHelper.appendElementRow(WebInspector.UIString("Details"), det
ailsNode); |
851 if (typeof initiatorData["webSocketProtocol"] !== "undefined") | 848 break; |
852 contentHelper.appendTextRow(WebInspector.UIString("WebSocket Pro
tocol"), initiatorData["webSocketProtocol"]); | |
853 if (typeof eventData["message"] !== "undefined") | |
854 contentHelper.appendTextRow(WebInspector.UIString("Message"), ev
entData["message"]); | |
855 break; | |
856 case recordTypes.EmbedderCallback: | |
857 contentHelper.appendTextRow(WebInspector.UIString("Callback Function
"), eventData["callbackName"]); | |
858 break; | |
859 default: | |
860 var detailsNode = WebInspector.TimelineUIUtils.buildDetailsNodeForTr
aceEvent(event, linkifier, loadedFromFile, bindings, target); | |
861 if (detailsNode) | |
862 contentHelper.appendElementRow(WebInspector.UIString("Details"),
detailsNode); | |
863 break; | |
864 } | 849 } |
865 | 850 |
866 if (relatedNode) | 851 if (relatedNode) |
867 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); | 852 contentHelper.appendElementRow(relatedNodeLabel || WebInspector.UIString
("Related node"), WebInspector.DOMPresentationUtils.linkifyNodeReference(related
Node)); |
868 | 853 |
869 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) | 854 if (eventData && eventData["scriptName"] && event.name !== recordTypes.Funct
ionCall) |
870 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); | 855 contentHelper.appendLocationRow(WebInspector.UIString("Function Call"),
eventData["scriptName"], eventData["scriptLine"]); |
871 | 856 |
872 if (initiator) { | 857 if (initiator) { |
873 var callSiteStackTrace = initiator.stackTrace; | 858 var callSiteStackTrace = initiator.stackTrace; |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1062 /** | 1047 /** |
1063 * @param {!WebInspector.TracingModel.Event} event | 1048 * @param {!WebInspector.TracingModel.Event} event |
1064 * @param {!WebInspector.Linkifier} linkifier | 1049 * @param {!WebInspector.Linkifier} linkifier |
1065 * @param {boolean} loadedFromFile | 1050 * @param {boolean} loadedFromFile |
1066 * @param {?WebInspector.TimelineTraceEventBindings} bindings | 1051 * @param {?WebInspector.TimelineTraceEventBindings} bindings |
1067 * @param {!WebInspector.Target} target | 1052 * @param {!WebInspector.Target} target |
1068 * @return {?Node} | 1053 * @return {?Node} |
1069 */ | 1054 */ |
1070 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent = function(event, lin
kifier, loadedFromFile, bindings, target) | 1055 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent = function(event, lin
kifier, loadedFromFile, bindings, target) |
1071 { | 1056 { |
| 1057 var recordType = WebInspector.TimelineTraceEventBindings.RecordType; |
| 1058 |
1072 var details; | 1059 var details; |
1073 var detailsText; | 1060 var detailsText; |
1074 var eventData = event.args.data; | 1061 var eventData = event.args.data; |
1075 switch (event.name) { | 1062 switch (event.name) { |
1076 case WebInspector.TimelineModel.RecordType.GCEvent: | 1063 case recordType.GCEvent: |
1077 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; | 1064 var delta = event.args["usedHeapSizeBefore"] - event.args["usedHeapSizeA
fter"]; |
1078 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); | 1065 detailsText = WebInspector.UIString("%s collected", Number.bytesToString
(delta)); |
1079 break; | 1066 break; |
1080 case WebInspector.TimelineModel.RecordType.TimerFire: | 1067 case recordType.TimerFire: |
1081 detailsText = eventData["timerId"]; | 1068 detailsText = eventData["timerId"]; |
1082 break; | 1069 break; |
1083 case WebInspector.TimelineModel.RecordType.FunctionCall: | 1070 case recordType.FunctionCall: |
1084 details = linkifyLocation(eventData["scriptId"], eventData["scriptName"]
, eventData["scriptLine"], 0); | 1071 details = linkifyLocation(eventData["scriptId"], eventData["scriptName"]
, eventData["scriptLine"], 0); |
1085 break; | 1072 break; |
1086 case WebInspector.TimelineModel.RecordType.FireAnimationFrame: | 1073 case recordType.FireAnimationFrame: |
1087 detailsText = eventData["id"]; | 1074 detailsText = eventData["id"]; |
1088 break; | 1075 break; |
1089 case WebInspector.TimelineModel.RecordType.EventDispatch: | 1076 case recordType.EventDispatch: |
1090 detailsText = eventData ? eventData["type"] : null; | 1077 detailsText = eventData ? eventData["type"] : null; |
1091 break; | 1078 break; |
1092 case WebInspector.TimelineModel.RecordType.Paint: | 1079 case recordType.Paint: |
1093 var width = WebInspector.TimelineUIUtils._quadWidth(eventData.clip); | 1080 var width = WebInspector.TimelineUIUtils._quadWidth(eventData.clip); |
1094 var height = WebInspector.TimelineUIUtils._quadHeight(eventData.clip); | 1081 var height = WebInspector.TimelineUIUtils._quadHeight(eventData.clip); |
1095 if (width && height) | 1082 if (width && height) |
1096 detailsText = WebInspector.UIString("%d\u2009\u00d7\u2009%d", width,
height); | 1083 detailsText = WebInspector.UIString("%d\u2009\u00d7\u2009%d", width,
height); |
1097 break; | 1084 break; |
1098 case WebInspector.TimelineModel.RecordType.TimerInstall: | 1085 case recordType.TimerInstall: |
1099 case WebInspector.TimelineModel.RecordType.TimerRemove: | 1086 case recordType.TimerRemove: |
1100 details = linkifyTopCallFrame(); | 1087 details = linkifyTopCallFrame(); |
1101 detailsText = eventData["timerId"]; | 1088 detailsText = eventData["timerId"]; |
1102 break; | 1089 break; |
1103 case WebInspector.TimelineModel.RecordType.RequestAnimationFrame: | 1090 case recordType.RequestAnimationFrame: |
1104 case WebInspector.TimelineModel.RecordType.CancelAnimationFrame: | 1091 case recordType.CancelAnimationFrame: |
1105 details = linkifyTopCallFrame(); | 1092 details = linkifyTopCallFrame(); |
1106 detailsText = eventData["id"]; | 1093 detailsText = eventData["id"]; |
1107 break; | 1094 break; |
1108 case WebInspector.TimelineModel.RecordType.ParseHTML: | 1095 case recordType.ParseHTML: |
1109 case WebInspector.TimelineModel.RecordType.RecalculateStyles: | 1096 case recordType.RecalculateStyles: |
1110 details = linkifyTopCallFrame(); | 1097 details = linkifyTopCallFrame(); |
1111 break; | 1098 break; |
1112 case WebInspector.TimelineModel.RecordType.EvaluateScript: | 1099 case recordType.EvaluateScript: |
1113 var url = eventData["url"]; | 1100 var url = eventData["url"]; |
1114 if (url) | 1101 if (url) |
1115 details = linkifyLocation("", url, eventData["lineNumber"], 0); | 1102 details = linkifyLocation("", url, eventData["lineNumber"], 0); |
1116 break; | 1103 break; |
1117 case WebInspector.TimelineModel.RecordType.XHRReadyStateChange: | 1104 case recordType.XHRReadyStateChange: |
1118 case WebInspector.TimelineModel.RecordType.XHRLoad: | 1105 case recordType.XHRLoad: |
1119 case WebInspector.TimelineModel.RecordType.ResourceSendRequest: | 1106 case recordType.ResourceSendRequest: |
1120 case WebInspector.TimelineModel.RecordType.DecodeImage: | 1107 case recordType.DecodeImage: |
1121 case WebInspector.TimelineModel.RecordType.ResizeImage: | 1108 case recordType.ResizeImage: |
1122 var url = eventData["url"]; | 1109 var url = eventData["url"]; |
1123 if (url) | 1110 if (url) |
1124 detailsText = WebInspector.displayNameForURL(url); | 1111 detailsText = WebInspector.displayNameForURL(url); |
1125 break; | 1112 break; |
1126 case WebInspector.TimelineModel.RecordType.ResourceReceivedData: | 1113 case recordType.ResourceReceivedData: |
1127 case WebInspector.TimelineModel.RecordType.ResourceReceiveResponse: | 1114 case recordType.ResourceReceiveResponse: |
1128 case WebInspector.TimelineModel.RecordType.ResourceFinish: | 1115 case recordType.ResourceFinish: |
1129 var initiator = event.initiator; | 1116 var initiator = event.initiator; |
1130 if (initiator) { | 1117 if (initiator) { |
1131 var url = initiator.args.data["url"]; | 1118 var url = initiator.args.data["url"]; |
1132 if (url) | 1119 if (url) |
1133 detailsText = WebInspector.displayNameForURL(url); | 1120 detailsText = WebInspector.displayNameForURL(url); |
1134 } | 1121 } |
1135 break; | 1122 break; |
1136 case WebInspector.TimelineModel.RecordType.ConsoleTime: | 1123 case recordType.ConsoleTime: |
1137 detailsText = eventData["message"]; | 1124 detailsText = eventData["message"]; |
1138 break; | 1125 break; |
1139 case WebInspector.TimelineModel.RecordType.EmbedderCallback: | 1126 case recordType.EmbedderCallback: |
1140 detailsText = eventData["callbackName"]; | 1127 detailsText = eventData["callbackName"]; |
1141 break; | 1128 break; |
| 1129 |
| 1130 case recordType.PaintImage: |
| 1131 case recordType.DecodeImage: |
| 1132 case recordType.ResizeImage: |
| 1133 case recordType.DecodeLazyPixelRef: |
| 1134 var url = event.imageURL; |
| 1135 if (url) |
| 1136 detailsText = WebInspector.displayNameForURL(url); |
| 1137 break; |
| 1138 |
1142 default: | 1139 default: |
1143 details = linkifyTopCallFrame(); | 1140 details = linkifyTopCallFrame(); |
1144 break; | 1141 break; |
1145 } | 1142 } |
1146 | 1143 |
1147 if (!details && detailsText) | 1144 if (!details && detailsText) |
1148 details = document.createTextNode(detailsText); | 1145 details = document.createTextNode(detailsText); |
1149 return details; | 1146 return details; |
1150 | 1147 |
1151 /** | 1148 /** |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1385 for (var i = 0; i < stackTrace.length; ++i) { | 1382 for (var i = 0; i < stackTrace.length; ++i) { |
1386 var stackFrame = stackTrace[i]; | 1383 var stackFrame = stackTrace[i]; |
1387 var row = stackTraceElement.createChild("div"); | 1384 var row = stackTraceElement.createChild("div"); |
1388 row.createTextChild(stackFrame.functionName || WebInspector.UIString
("(anonymous function)")); | 1385 row.createTextChild(stackFrame.functionName || WebInspector.UIString
("(anonymous function)")); |
1389 row.createTextChild(" @ "); | 1386 row.createTextChild(" @ "); |
1390 var urlElement = this._linkifier.linkifyLocation(this._target, stack
Frame.url, stackFrame.lineNumber - 1); | 1387 var urlElement = this._linkifier.linkifyLocation(this._target, stack
Frame.url, stackFrame.lineNumber - 1); |
1391 row.appendChild(urlElement); | 1388 row.appendChild(urlElement); |
1392 } | 1389 } |
1393 } | 1390 } |
1394 } | 1391 } |
OLD | NEW |