OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
824 var eventStack = this._eventStack; | 824 var eventStack = this._eventStack; |
825 while (eventStack.length && eventStack.peekLast().endTime <= event.start Time) | 825 while (eventStack.length && eventStack.peekLast().endTime <= event.start Time) |
826 eventStack.pop(); | 826 eventStack.pop(); |
827 | 827 |
828 var recordTypes = WebInspector.TimelineModel.RecordType; | 828 var recordTypes = WebInspector.TimelineModel.RecordType; |
829 | 829 |
830 if (this._currentScriptEvent && event.startTime > this._currentScriptEve nt.endTime) | 830 if (this._currentScriptEvent && event.startTime > this._currentScriptEve nt.endTime) |
831 this._currentScriptEvent = null; | 831 this._currentScriptEvent = null; |
832 | 832 |
833 var eventData = event.args["data"] || event.args["beginData"] || {}; | 833 var eventData = event.args["data"] || event.args["beginData"] || {}; |
834 if (eventData && eventData["stackTrace"]) | 834 if (eventData["stackTrace"]) |
835 event.stackTrace = eventData["stackTrace"]; | 835 event.stackTrace = eventData["stackTrace"]; |
836 if (event.stackTrace && event.name !== recordTypes.JSSample) { | |
837 // TraceEvents come with 1-based line & column numbers. The frontend code | |
838 // requires 0-based ones. Adjust the values. | |
839 for (var i = 0; i < event.stackTrace.length; ++i) { | |
840 --event.stackTrace[i].lineNumber; | |
841 --event.stackTrace[i].columnNumber; | |
842 } | |
843 } | |
836 | 844 |
837 if (eventStack.length && eventStack.peekLast().name === recordTypes.Even tDispatch) | 845 if (eventStack.length && eventStack.peekLast().name === recordTypes.Even tDispatch) |
838 eventStack.peekLast().hasChildren = true; | 846 eventStack.peekLast().hasChildren = true; |
839 this._asyncEventTracker.processEvent(event); | 847 this._asyncEventTracker.processEvent(event); |
840 if (event.initiator && event.initiator.url) | 848 if (event.initiator && event.initiator.url) |
841 event.url = event.initiator.url; | 849 event.url = event.initiator.url; |
842 switch (event.name) { | 850 switch (event.name) { |
843 case recordTypes.ResourceSendRequest: | 851 case recordTypes.ResourceSendRequest: |
844 case recordTypes.WebSocketCreate: | 852 case recordTypes.WebSocketCreate: |
845 event.url = event.args["data"]["url"]; | 853 event.url = eventData["url"]; |
846 event.initiator = eventStack.peekLast() || null; | 854 event.initiator = eventStack.peekLast() || null; |
847 break; | 855 break; |
848 | 856 |
849 case recordTypes.ScheduleStyleRecalculation: | 857 case recordTypes.ScheduleStyleRecalculation: |
850 this._lastScheduleStyleRecalculation[event.args["data"]["frame"]] = event; | 858 this._lastScheduleStyleRecalculation[eventData["frame"]] = event; |
851 break; | 859 break; |
852 | 860 |
853 case recordTypes.UpdateLayoutTree: | 861 case recordTypes.UpdateLayoutTree: |
854 case recordTypes.RecalculateStyles: | 862 case recordTypes.RecalculateStyles: |
855 this._invalidationTracker.didRecalcStyle(event); | 863 this._invalidationTracker.didRecalcStyle(event); |
856 if (event.args["beginData"]) | 864 if (event.args["beginData"]) |
857 event.initiator = this._lastScheduleStyleRecalculation[event.arg s["beginData"]["frame"]]; | 865 event.initiator = this._lastScheduleStyleRecalculation[event.arg s["beginData"]["frame"]]; |
858 this._lastRecalculateStylesEvent = event; | 866 this._lastRecalculateStylesEvent = event; |
859 if (this._currentScriptEvent) | 867 if (this._currentScriptEvent) |
860 event.warning = WebInspector.TimelineModel.WarningType.ForcedSty le; | 868 event.warning = WebInspector.TimelineModel.WarningType.ForcedSty le; |
861 break; | 869 break; |
862 | 870 |
863 case recordTypes.ScheduleStyleInvalidationTracking: | 871 case recordTypes.ScheduleStyleInvalidationTracking: |
864 case recordTypes.StyleRecalcInvalidationTracking: | 872 case recordTypes.StyleRecalcInvalidationTracking: |
865 case recordTypes.StyleInvalidatorInvalidationTracking: | 873 case recordTypes.StyleInvalidatorInvalidationTracking: |
866 case recordTypes.LayoutInvalidationTracking: | 874 case recordTypes.LayoutInvalidationTracking: |
867 case recordTypes.LayerInvalidationTracking: | 875 case recordTypes.LayerInvalidationTracking: |
868 case recordTypes.PaintInvalidationTracking: | 876 case recordTypes.PaintInvalidationTracking: |
869 case recordTypes.ScrollInvalidationTracking: | 877 case recordTypes.ScrollInvalidationTracking: |
870 this._invalidationTracker.addInvalidation(new WebInspector.Invalidat ionTrackingEvent(event)); | 878 this._invalidationTracker.addInvalidation(new WebInspector.Invalidat ionTrackingEvent(event)); |
871 break; | 879 break; |
872 | 880 |
873 case recordTypes.InvalidateLayout: | 881 case recordTypes.InvalidateLayout: |
874 // Consider style recalculation as a reason for layout invalidation, | 882 // Consider style recalculation as a reason for layout invalidation, |
875 // but only if we had no earlier layout invalidation records. | 883 // but only if we had no earlier layout invalidation records. |
876 var layoutInitator = event; | 884 var layoutInitator = event; |
877 var frameId = event.args["data"]["frame"]; | 885 var frameId = eventData["frame"]; |
878 if (!this._layoutInvalidate[frameId] && this._lastRecalculateStylesE vent && this._lastRecalculateStylesEvent.endTime > event.startTime) | 886 if (!this._layoutInvalidate[frameId] && this._lastRecalculateStylesE vent && this._lastRecalculateStylesEvent.endTime > event.startTime) |
879 layoutInitator = this._lastRecalculateStylesEvent.initiator; | 887 layoutInitator = this._lastRecalculateStylesEvent.initiator; |
880 this._layoutInvalidate[frameId] = layoutInitator; | 888 this._layoutInvalidate[frameId] = layoutInitator; |
881 break; | 889 break; |
882 | 890 |
883 case recordTypes.Layout: | 891 case recordTypes.Layout: |
884 this._invalidationTracker.didLayout(event); | 892 this._invalidationTracker.didLayout(event); |
885 var frameId = event.args["beginData"]["frame"]; | 893 var frameId = event.args["beginData"]["frame"]; |
886 event.initiator = this._layoutInvalidate[frameId]; | 894 event.initiator = this._layoutInvalidate[frameId]; |
887 // In case we have no closing Layout event, endData is not available . | 895 // In case we have no closing Layout event, endData is not available . |
888 if (event.args["endData"]) { | 896 if (event.args["endData"]) { |
889 event.backendNodeId = event.args["endData"]["rootNode"]; | 897 event.backendNodeId = event.args["endData"]["rootNode"]; |
890 event.highlightQuad = event.args["endData"]["root"]; | 898 event.highlightQuad = event.args["endData"]["root"]; |
891 } | 899 } |
892 this._layoutInvalidate[frameId] = null; | 900 this._layoutInvalidate[frameId] = null; |
893 if (this._currentScriptEvent) | 901 if (this._currentScriptEvent) |
894 event.warning = WebInspector.TimelineModel.WarningType.ForcedLay out; | 902 event.warning = WebInspector.TimelineModel.WarningType.ForcedLay out; |
895 break; | 903 break; |
896 | 904 |
905 case recordTypes.FunctionCall: | |
906 // Compatibility with old format. | |
907 if (typeof eventData["scriptName"] === "string") | |
908 eventData["url"] = eventData["scriptName"]; | |
909 if (typeof eventData["scriptLine"] === "number") | |
910 eventData["lineNumber"] = eventData["scriptLine"]; | |
caseq
2016/07/21 23:04:17
nit: // Fall-through intended.
alph
2016/07/21 23:35:23
Done.
| |
897 case recordTypes.EvaluateScript: | 911 case recordTypes.EvaluateScript: |
898 case recordTypes.FunctionCall: | 912 case recordTypes.CompileScript: |
913 if (typeof eventData["lineNumber"] === "number") | |
914 --eventData["lineNumber"]; | |
915 if (typeof eventData["columnNumber"] === "number") | |
916 --eventData["columnNumber"]; | |
899 if (!this._currentScriptEvent) | 917 if (!this._currentScriptEvent) |
900 this._currentScriptEvent = event; | 918 this._currentScriptEvent = event; |
caseq
2016/07/21 23:04:17
do we want this for CompileScript as well?
alph
2016/07/21 23:35:23
It's usually a nested event. So this code never ex
| |
901 break; | 919 break; |
902 | 920 |
903 case recordTypes.SetLayerTreeId: | 921 case recordTypes.SetLayerTreeId: |
904 this._inspectedTargetLayerTreeId = event.args["layerTreeId"] || even t.args["data"]["layerTreeId"]; | 922 this._inspectedTargetLayerTreeId = event.args["layerTreeId"] || even t.args["data"]["layerTreeId"]; |
905 break; | 923 break; |
906 | 924 |
907 case recordTypes.Paint: | 925 case recordTypes.Paint: |
908 this._invalidationTracker.didPaint(event); | 926 this._invalidationTracker.didPaint(event); |
909 event.highlightQuad = event.args["data"]["clip"]; | 927 event.highlightQuad = eventData["clip"]; |
910 event.backendNodeId = event.args["data"]["nodeId"]; | 928 event.backendNodeId = eventData["nodeId"]; |
911 // Only keep layer paint events, skip paints for subframes that get painted to the same layer as parent. | 929 // Only keep layer paint events, skip paints for subframes that get painted to the same layer as parent. |
912 if (!event.args["data"]["layerId"]) | 930 if (!eventData["layerId"]) |
913 break; | 931 break; |
914 var layerId = event.args["data"]["layerId"]; | 932 var layerId = eventData["layerId"]; |
915 this._lastPaintForLayer[layerId] = event; | 933 this._lastPaintForLayer[layerId] = event; |
916 break; | 934 break; |
917 | 935 |
918 case recordTypes.DisplayItemListSnapshot: | 936 case recordTypes.DisplayItemListSnapshot: |
919 case recordTypes.PictureSnapshot: | 937 case recordTypes.PictureSnapshot: |
920 var layerUpdateEvent = this._findAncestorEvent(recordTypes.UpdateLay er); | 938 var layerUpdateEvent = this._findAncestorEvent(recordTypes.UpdateLay er); |
921 if (!layerUpdateEvent || layerUpdateEvent.args["layerTreeId"] !== th is._inspectedTargetLayerTreeId) | 939 if (!layerUpdateEvent || layerUpdateEvent.args["layerTreeId"] !== th is._inspectedTargetLayerTreeId) |
922 break; | 940 break; |
923 var paintEvent = this._lastPaintForLayer[layerUpdateEvent.args["laye rId"]]; | 941 var paintEvent = this._lastPaintForLayer[layerUpdateEvent.args["laye rId"]]; |
924 if (paintEvent) | 942 if (paintEvent) |
925 paintEvent.picture = event; | 943 paintEvent.picture = event; |
926 break; | 944 break; |
927 | 945 |
928 case recordTypes.ScrollLayer: | 946 case recordTypes.ScrollLayer: |
929 event.backendNodeId = event.args["data"]["nodeId"]; | 947 event.backendNodeId = eventData["nodeId"]; |
930 break; | 948 break; |
931 | 949 |
932 case recordTypes.PaintImage: | 950 case recordTypes.PaintImage: |
933 event.backendNodeId = event.args["data"]["nodeId"]; | 951 event.backendNodeId = eventData["nodeId"]; |
934 event.url = event.args["data"]["url"]; | 952 event.url = eventData["url"]; |
935 break; | 953 break; |
936 | 954 |
937 case recordTypes.DecodeImage: | 955 case recordTypes.DecodeImage: |
938 case recordTypes.ResizeImage: | 956 case recordTypes.ResizeImage: |
939 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage ); | 957 var paintImageEvent = this._findAncestorEvent(recordTypes.PaintImage ); |
940 if (!paintImageEvent) { | 958 if (!paintImageEvent) { |
941 var decodeLazyPixelRefEvent = this._findAncestorEvent(recordType s.DecodeLazyPixelRef); | 959 var decodeLazyPixelRefEvent = this._findAncestorEvent(recordType s.DecodeLazyPixelRef); |
942 paintImageEvent = decodeLazyPixelRefEvent && this._paintImageEve ntByPixelRefId[decodeLazyPixelRefEvent.args["LazyPixelRef"]]; | 960 paintImageEvent = decodeLazyPixelRefEvent && this._paintImageEve ntByPixelRefId[decodeLazyPixelRefEvent.args["LazyPixelRef"]]; |
943 } | 961 } |
944 if (!paintImageEvent) | 962 if (!paintImageEvent) |
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1440 /** @type {?Array.<!Object.<string, number>>} */ | 1458 /** @type {?Array.<!Object.<string, number>>} */ |
1441 this.invalidationList = eventData["invalidationList"]; | 1459 this.invalidationList = eventData["invalidationList"]; |
1442 /** @type {!WebInspector.InvalidationCause} */ | 1460 /** @type {!WebInspector.InvalidationCause} */ |
1443 this.cause = {reason: eventData["reason"], stackTrace: eventData["stackTrace "]}; | 1461 this.cause = {reason: eventData["reason"], stackTrace: eventData["stackTrace "]}; |
1444 | 1462 |
1445 // FIXME: Move this to TimelineUIUtils.js. | 1463 // FIXME: Move this to TimelineUIUtils.js. |
1446 if (!this.cause.reason && this.cause.stackTrace && this.type === WebInspecto r.TimelineModel.RecordType.LayoutInvalidationTracking) | 1464 if (!this.cause.reason && this.cause.stackTrace && this.type === WebInspecto r.TimelineModel.RecordType.LayoutInvalidationTracking) |
1447 this.cause.reason = "Layout forced"; | 1465 this.cause.reason = "Layout forced"; |
1448 } | 1466 } |
1449 | 1467 |
1450 /** @typedef {{reason: string, stackTrace: ?Array.<!RuntimeAgent.CallFrame>}} */ | 1468 /** @typedef {{reason: string, stackTrace: ?Array<!RuntimeAgent.CallFrame>}} */ |
1451 WebInspector.InvalidationCause; | 1469 WebInspector.InvalidationCause; |
1452 | 1470 |
1453 /** | 1471 /** |
1454 * @constructor | 1472 * @constructor |
1455 */ | 1473 */ |
1456 WebInspector.InvalidationTracker = function() | 1474 WebInspector.InvalidationTracker = function() |
1457 { | 1475 { |
1458 this._initializePerFrameState(); | 1476 this._initializePerFrameState(); |
1459 } | 1477 } |
1460 | 1478 |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1759 if (!id) | 1777 if (!id) |
1760 return; | 1778 return; |
1761 /** @type {!Map<string, !WebInspector.TracingModel.Event>|undefined} */ | 1779 /** @type {!Map<string, !WebInspector.TracingModel.Event>|undefined} */ |
1762 var initiatorMap = this._initiatorByType.get(initiatorType); | 1780 var initiatorMap = this._initiatorByType.get(initiatorType); |
1763 if (isInitiator) | 1781 if (isInitiator) |
1764 initiatorMap.set(id, event); | 1782 initiatorMap.set(id, event); |
1765 else | 1783 else |
1766 event.initiator = initiatorMap.get(id) || null; | 1784 event.initiator = initiatorMap.get(id) || null; |
1767 } | 1785 } |
1768 } | 1786 } |
OLD | NEW |