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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineModel.js

Issue 1410153009: DevTools: Make network events continuous on Timeline (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressing comments #2 Created 5 years, 1 month 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
OLDNEW
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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 EvaluateScript: "EvaluateScript", 101 EvaluateScript: "EvaluateScript",
102 102
103 CommitLoad: "CommitLoad", 103 CommitLoad: "CommitLoad",
104 MarkLoad: "MarkLoad", 104 MarkLoad: "MarkLoad",
105 MarkDOMContent: "MarkDOMContent", 105 MarkDOMContent: "MarkDOMContent",
106 MarkFirstPaint: "MarkFirstPaint", 106 MarkFirstPaint: "MarkFirstPaint",
107 107
108 TimeStamp: "TimeStamp", 108 TimeStamp: "TimeStamp",
109 ConsoleTime: "ConsoleTime", 109 ConsoleTime: "ConsoleTime",
110 110
111 ResourceFetcherRequestResource: "ResourceFetcher::requestResource",
112 ResourceDispatcherOnReceivedData: "ResourceDispatcher::OnReceivedData",
113 ResourceDispatcherOnReceivedResponse: "ResourceDispatcher::OnReceivedRespons e",
114 ResourceDispatcherOnRequestComplete: "ResourceDispatcher::OnRequestComplete" ,
115
111 ResourceSendRequest: "ResourceSendRequest", 116 ResourceSendRequest: "ResourceSendRequest",
112 ResourceReceiveResponse: "ResourceReceiveResponse", 117 ResourceReceiveResponse: "ResourceReceiveResponse",
113 ResourceReceivedData: "ResourceReceivedData", 118 ResourceReceivedData: "ResourceReceivedData",
114 ResourceFinish: "ResourceFinish", 119 ResourceFinish: "ResourceFinish",
115 120
116 FunctionCall: "FunctionCall", 121 FunctionCall: "FunctionCall",
117 GCEvent: "GCEvent", // For backwards compatibility only, now replaced by Min orGC/MajorGC. 122 GCEvent: "GCEvent", // For backwards compatibility only, now replaced by Min orGC/MajorGC.
118 MajorGC: "MajorGC", 123 MajorGC: "MajorGC",
119 MinorGC: "MinorGC", 124 MinorGC: "MinorGC",
120 JSFrame: "JSFrame", 125 JSFrame: "JSFrame",
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 if (!groupAsyncEvents) { 1060 if (!groupAsyncEvents) {
1056 groupAsyncEvents = []; 1061 groupAsyncEvents = [];
1057 threadAsyncEventsByGroup.set(asyncGroup, groupAsyncEvents); 1062 threadAsyncEventsByGroup.set(asyncGroup, groupAsyncEvents);
1058 } 1063 }
1059 groupAsyncEvents.push(asyncEvent); 1064 groupAsyncEvents.push(asyncEvent);
1060 } 1065 }
1061 }, 1066 },
1062 1067
1063 /** 1068 /**
1064 * @param {!WebInspector.TracingModel.Event} event 1069 * @param {!WebInspector.TracingModel.Event} event
1070 * @param {!WebInspector.TimelineModel.RecordType} parentType
1071 */
1072 _processNetworkEvent: function(event, parentType)
1073 {
1074 /**
1075 * @param {!Object} dest
1076 * @param {!Object} source
1077 */
1078 function mergeData(dest, source)
1079 {
1080 for (var field in source)
1081 dest[field] = dest[field] || source[field];
1082 }
1083 var parent = this._findAncestorEvent(parentType);
1084 if (!parent)
1085 return;
1086 if (!parent.args["data"])
1087 parent.args["data"] = {};
1088 var eventData = event.args["data"];
1089 mergeData(parent.args["data"], eventData);
1090 parent.stackTrace = parent.stackTrace || event.stackTrace;
1091 parent.initiator = parent.initiator || event.initiator;
1092 var url = eventData["url"] || event.initiator && event.initiator.url;
1093 event.url = url;
1094 parent.url = url;
1095 },
1096
1097 /**
1098 * @param {!WebInspector.TracingModel.Event} event
1065 * @return {boolean} 1099 * @return {boolean}
1066 */ 1100 */
1067 _processEvent: function(event) 1101 _processEvent: function(event)
1068 { 1102 {
1069 var eventStack = this._eventStack; 1103 var eventStack = this._eventStack;
1070 while (eventStack.length && eventStack.peekLast().endTime <= event.start Time) 1104 while (eventStack.length && eventStack.peekLast().endTime <= event.start Time)
1071 eventStack.pop(); 1105 eventStack.pop();
1072 1106
1073 var recordTypes = WebInspector.TimelineModel.RecordType; 1107 var recordTypes = WebInspector.TimelineModel.RecordType;
1074 1108
1075 if (this._currentScriptEvent && event.startTime > this._currentScriptEve nt.endTime) 1109 if (this._currentScriptEvent && event.startTime > this._currentScriptEve nt.endTime)
1076 this._currentScriptEvent = null; 1110 this._currentScriptEvent = null;
1077 1111
1078 var eventData = event.args["data"] || event.args["beginData"] || {}; 1112 var eventData = event.args["data"] || event.args["beginData"] || {};
1079 if (eventData && eventData["stackTrace"]) 1113 if (eventData && eventData["stackTrace"])
1080 event.stackTrace = eventData["stackTrace"]; 1114 event.stackTrace = eventData["stackTrace"];
1081 1115
1082 if (eventStack.length && eventStack.peekLast().name === recordTypes.Even tDispatch) 1116 if (eventStack.length && eventStack.peekLast().name === recordTypes.Even tDispatch)
1083 eventStack.peekLast().hasChildren = true; 1117 eventStack.peekLast().hasChildren = true;
1084 this._asyncEventTracker.processEvent(event); 1118 this._asyncEventTracker.processEvent(event);
1085 if (event.initiator && event.initiator.url) 1119 if (event.initiator && event.initiator.url)
1086 event.url = event.initiator.url; 1120 event.url = event.initiator.url;
1087 switch (event.name) { 1121 switch (event.name) {
1088 case recordTypes.ResourceSendRequest: 1122 case recordTypes.ResourceSendRequest:
1123 this._processNetworkEvent(event, recordTypes.ResourceFetcherRequestR esource);
1124 break;
1125
1126 case recordTypes.ResourceReceiveResponse:
1127 this._processNetworkEvent(event, recordTypes.ResourceDispatcherOnRec eivedResponse);
1128 break;
1129
1130 case recordTypes.ResourceReceivedData:
1131 this._processNetworkEvent(event, recordTypes.ResourceDispatcherOnRec eivedData);
1132 break;
1133
1134 case recordTypes.ResourceFinish:
1135 this._processNetworkEvent(event, recordTypes.ResourceDispatcherOnReq uestComplete);
1136 break;
1137
1089 case recordTypes.WebSocketCreate: 1138 case recordTypes.WebSocketCreate:
1090 event.url = event.args["data"]["url"]; 1139 event.url = event.args["data"]["url"];
1091 break; 1140 break;
1092 1141
1093 case recordTypes.ScheduleStyleRecalculation: 1142 case recordTypes.ScheduleStyleRecalculation:
1094 this._lastScheduleStyleRecalculation[event.args["data"]["frame"]] = event; 1143 this._lastScheduleStyleRecalculation[event.args["data"]["frame"]] = event;
1095 break; 1144 break;
1096 1145
1097 case recordTypes.UpdateLayoutTree: 1146 case recordTypes.UpdateLayoutTree:
1098 case recordTypes.RecalculateStyles: 1147 case recordTypes.RecalculateStyles:
(...skipping 1300 matching lines...) Expand 10 before | Expand all | Expand 10 after
2399 if (!id) 2448 if (!id)
2400 return; 2449 return;
2401 /** @type {!Map<string, !WebInspector.TracingModel.Event>|undefined} */ 2450 /** @type {!Map<string, !WebInspector.TracingModel.Event>|undefined} */
2402 var initiatorMap = this._initiatorByType.get(initiatorType); 2451 var initiatorMap = this._initiatorByType.get(initiatorType);
2403 if (isInitiator) 2452 if (isInitiator)
2404 initiatorMap.set(id, event); 2453 initiatorMap.set(id, event);
2405 else 2454 else
2406 event.initiator = initiatorMap.get(id) || null; 2455 event.initiator = initiatorMap.get(id) || null;
2407 } 2456 }
2408 } 2457 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698