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

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

Issue 301593002: DevTools: process events from all threads in TimelineTraceEventBindings (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: review comments addressed Created 6 years, 6 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
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 */ 7 */
8 WebInspector.TimelineTraceEventBindings = function() 8 WebInspector.TimelineTraceEventBindings = function()
9 { 9 {
10 this._resetProcessingState(); 10 this._reset();
11 } 11 }
12 12
13 WebInspector.TimelineTraceEventBindings.RecordType = {
14 Program: "Program",
15 EventDispatch: "EventDispatch",
16
17 GPUTask: "GPUTask",
18
19 RequestMainThreadFrame: "RequestMainThreadFrame",
20 BeginFrame: "BeginFrame",
21 BeginMainThreadFrame: "BeginMainThreadFrame",
22 ActivateLayerTree: "ActivateLayerTree",
23 DrawFrame: "DrawFrame",
24 ScheduleStyleRecalculation: "ScheduleStyleRecalculation",
25 RecalculateStyles: "RecalculateStyles",
26 InvalidateLayout: "InvalidateLayout",
27 Layout: "Layout",
28 UpdateLayerTree: "UpdateLayerTree",
29 PaintSetup: "PaintSetup",
30 Paint: "Paint",
31 Rasterize: "Rasterize",
32 RasterTask: "RasterTask",
33 ScrollLayer: "ScrollLayer",
34 DecodeImage: "DecodeImage",
35 ResizeImage: "ResizeImage",
36 CompositeLayers: "CompositeLayers",
37
38 ParseHTML: "ParseHTML",
39
40 TimerInstall: "TimerInstall",
41 TimerRemove: "TimerRemove",
42 TimerFire: "TimerFire",
43
44 XHRReadyStateChange: "XHRReadyStateChange",
45 XHRLoad: "XHRLoad",
46 EvaluateScript: "EvaluateScript",
47
48 MarkLoad: "MarkLoad",
49 MarkDOMContent: "MarkDOMContent",
50 MarkFirstPaint: "MarkFirstPaint",
51
52 TimeStamp: "TimeStamp",
53 ConsoleTime: "ConsoleTime",
54
55 ResourceSendRequest: "ResourceSendRequest",
56 ResourceReceiveResponse: "ResourceReceiveResponse",
57 ResourceReceivedData: "ResourceReceivedData",
58 ResourceFinish: "ResourceFinish",
59
60 FunctionCall: "FunctionCall",
61 GCEvent: "GCEvent",
62 JSFrame: "JSFrame",
63
64 UpdateCounters: "UpdateCounters",
65
66 RequestAnimationFrame: "RequestAnimationFrame",
67 CancelAnimationFrame: "CancelAnimationFrame",
68 FireAnimationFrame: "FireAnimationFrame",
69
70 WebSocketCreate : "WebSocketCreate",
71 WebSocketSendHandshakeRequest : "WebSocketSendHandshakeRequest",
72 WebSocketReceiveHandshakeResponse : "WebSocketReceiveHandshakeResponse",
73 WebSocketDestroy : "WebSocketDestroy",
74
75 EmbedderCallback : "EmbedderCallback",
76
77 CallStack: "CallStack",
78 SetLayerTreeId: "SetLayerTreeId",
79 TracingStartedInPage: "TracingStartedInPage",
80
81 LayerTreeHostImplSnapshot: "cc::LayerTreeHostImpl"
82 };
83
84
13 WebInspector.TimelineTraceEventBindings.prototype = { 85 WebInspector.TimelineTraceEventBindings.prototype = {
86 /**
87 * @return {!Array.<!WebInspector.TracingModel.Event>}
88 */
89 mainThreadEvents: function()
90 {
91 return this._mainThreadEvents;
92 },
93
94 _reset: function()
95 {
96 this._resetProcessingState();
97 this._mainThreadEvents = [];
98 },
99
14 _resetProcessingState: function() 100 _resetProcessingState: function()
15 { 101 {
16 this._sendRequestEvents = {}; 102 this._sendRequestEvents = {};
17 this._timerEvents = {}; 103 this._timerEvents = {};
18 this._requestAnimationFrameEvents = {}; 104 this._requestAnimationFrameEvents = {};
19 this._layoutInvalidate = {}; 105 this._layoutInvalidate = {};
20 this._lastScheduleStyleRecalculation = {}; 106 this._lastScheduleStyleRecalculation = {};
21 this._webSocketCreateEvents = {}; 107 this._webSocketCreateEvents = {};
22 108
23 this._lastRecalculateStylesEvent = null; 109 this._lastRecalculateStylesEvent = null;
24 this._currentScriptEvent = null; 110 this._currentScriptEvent = null;
25 this._lastMainThreadEvent = null;
26 this._eventStack = []; 111 this._eventStack = [];
27 }, 112 },
28 113
29 /** 114 /**
30 * @param {!Array.<!WebInspector.TracingModel.Event>} events 115 * @param {!Array.<!WebInspector.TracingModel.Event>} events
31 */ 116 */
32 setEvents: function(events) 117 setEvents: function(events)
33 { 118 {
34 this._resetProcessingState(); 119 this._resetProcessingState();
35 for (var i = 0, length = events.length; i < length; i++) 120 for (var i = 0, length = events.length; i < length; i++)
36 this._processMainThreadEvent(events[i]); 121 this._processEvent(events[i]);
37 this._resetProcessingState(); 122 this._resetProcessingState();
38 }, 123 },
39 124
40 _processMainThreadEvent: function(event) 125 /**
126 * @param {!WebInspector.TracingModel.Event} event
127 */
128 _processEvent: function(event)
41 { 129 {
42 var recordTypes = WebInspector.TimelineModel.RecordType; 130 var recordTypes = WebInspector.TimelineTraceEventBindings.RecordType;
43 131
44 var eventStack = this._eventStack; 132 var eventStack = this._eventStack;
45 while (eventStack.length && eventStack.peekLast().endTime < event.startT ime) 133 while (eventStack.length && eventStack.peekLast().endTime < event.startT ime)
46 eventStack.pop(); 134 eventStack.pop();
47 var duration = event.duration; 135 var duration = event.duration;
48 if (duration) { 136 if (duration) {
49 if (eventStack.length) { 137 if (eventStack.length) {
50 var parent = eventStack.peekLast(); 138 var parent = eventStack.peekLast();
51 parent.selfTime -= duration; 139 parent.selfTime -= duration;
52 } 140 }
53 event.selfTime = duration; 141 event.selfTime = duration;
54 eventStack.push(event); 142 eventStack.push(event);
55 } 143 }
56 144
57 if (this._currentScriptEvent && event.startTime > this._currentScriptEve nt.endTime) 145 if (this._currentScriptEvent && event.startTime > this._currentScriptEve nt.endTime)
58 this._currentScriptEvent = null; 146 this._currentScriptEvent = null;
59 147
60 switch (event.name) { 148 switch (event.name) {
61 case recordTypes.CallStack: 149 case recordTypes.CallStack:
62 if (this._lastMainThreadEvent) 150 var lastMainThreadEvent = this._mainThreadEvents.peekLast();
63 this._lastMainThreadEvent.stackTrace = event.args.stack; 151 if (lastMainThreadEvent)
64 break 152 lastMainThreadEvent.stackTrace = event.args.stack;
153 break;
65 154
66 case recordTypes.ResourceSendRequest: 155 case recordTypes.ResourceSendRequest:
67 this._sendRequestEvents[event.args.data["requestId"]] = event; 156 this._sendRequestEvents[event.args.data["requestId"]] = event;
68 break; 157 break;
69 158
70 case recordTypes.ResourceReceiveResponse: 159 case recordTypes.ResourceReceiveResponse:
71 case recordTypes.ResourceReceivedData: 160 case recordTypes.ResourceReceivedData:
72 case recordTypes.ResourceFinish: 161 case recordTypes.ResourceFinish:
73 event.initiator = this._sendRequestEvents[event.args.data["requestId "]]; 162 event.initiator = this._sendRequestEvents[event.args.data["requestId "]];
74 break; 163 break;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 case recordTypes.WebSocketCreate: 208 case recordTypes.WebSocketCreate:
120 this._webSocketCreateEvents[event.args.data["identifier"]] = event; 209 this._webSocketCreateEvents[event.args.data["identifier"]] = event;
121 break; 210 break;
122 211
123 case recordTypes.WebSocketSendHandshakeRequest: 212 case recordTypes.WebSocketSendHandshakeRequest:
124 case recordTypes.WebSocketReceiveHandshakeResponse: 213 case recordTypes.WebSocketReceiveHandshakeResponse:
125 case recordTypes.WebSocketDestroy: 214 case recordTypes.WebSocketDestroy:
126 event.initiator = this._webSocketCreateEvents[event.args.data["ident ifier"]]; 215 event.initiator = this._webSocketCreateEvents[event.args.data["ident ifier"]];
127 break; 216 break;
128 217
129 case WebInspector.TimelineModel.RecordType.EvaluateScript: 218 case recordTypes.EvaluateScript:
130 case WebInspector.TimelineModel.RecordType.FunctionCall: 219 case recordTypes.FunctionCall:
131 if (!this._currentScriptEvent) 220 if (!this._currentScriptEvent)
132 this._currentScriptEvent = event; 221 this._currentScriptEvent = event;
133 break; 222 break;
223
224 case recordTypes.SetLayerTreeId:
225 this._inspectedTargetLayerTreeId = event.args["layerTreeId"];
226 break;
227
228 case recordTypes.TracingStartedInPage:
229 this._mainThread = event.thread;
230 break;
134 } 231 }
135 this._lastMainThreadEvent = event; 232 if (this._mainThread === event.thread)
233 this._mainThreadEvents.push(event);
136 } 234 }
137 } 235 }
138 236
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelinePanel.js ('k') | Source/devtools/front_end/timeline/TimelineTracingView.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698