OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 records = this._mergingBuffer.process(record.thread(), /** type {Arr
ay.<!WebInspector.TimelineModel.Record>} */(programRecord ? record.children() ||
[] : [record])); | 135 records = this._mergingBuffer.process(record.thread(), /** type {Arr
ay.<!WebInspector.TimelineModel.Record>} */(programRecord ? record.children() ||
[] : [record])); |
136 for (var i = 0; i < records.length; ++i) { | 136 for (var i = 0; i < records.length; ++i) { |
137 if (records[i].thread()) | 137 if (records[i].thread()) |
138 this._addBackgroundRecord(records[i]); | 138 this._addBackgroundRecord(records[i]); |
139 else | 139 else |
140 this._addMainThreadRecord(programRecord, records[i]); | 140 this._addMainThreadRecord(programRecord, records[i]); |
141 } | 141 } |
142 }, | 142 }, |
143 | 143 |
144 /** | 144 /** |
145 * @param {!WebInspector.TracingModel} tracingModel | 145 * @param {!Array.<!WebInspector.TracingModel.Event>} events |
| 146 * @param {string} sessionId |
146 */ | 147 */ |
147 addTraceEvents: function(tracingModel) | 148 addTraceEvents: function(events, sessionId) |
148 { | 149 { |
149 // FIXME: we also need to process main thread events, so we can assign t
ime spent by categories | 150 this._sessionId = sessionId; |
150 // to frames. However, this requires that we can map trace event names t
o Timeline categories. | |
151 var events = tracingModel.frameLifecycleEvents(); | |
152 for (var i = 0; i < events.length; ++i) | 151 for (var i = 0; i < events.length; ++i) |
153 this._addTraceEvent(events[i]); | 152 this._addTraceEvent(events[i]); |
154 }, | 153 }, |
155 | 154 |
156 /** | 155 /** |
157 * @param {!WebInspector.TracingModel.Event} event | 156 * @param {!WebInspector.TracingModel.Event} event |
158 */ | 157 */ |
159 _addTraceEvent: function(event) | 158 _addTraceEvent: function(event) |
160 { | 159 { |
| 160 var eventNames = WebInspector.TimelineTraceEventBindings.RecordType; |
| 161 |
| 162 if (event.name === eventNames.SetLayerTreeId) { |
| 163 if (this._sessionId === event.args["sessionId"]) |
| 164 this._layerTreeId = event.args["layerTreeId"]; |
| 165 return; |
| 166 } |
| 167 if (event.phase === WebInspector.TracingModel.Phase.SnapshotObject && ev
ent.name === eventNames.LayerTreeHostImplSnapshot && parseInt(event.id, 0) === t
his._layerTreeId) { |
| 168 this.handleLayerTreeSnapshot(new WebInspector.DeferredTracingLayerTr
ee(this.target(), event.args["snapshot"]["active_tree"]["root_layer"])); |
| 169 return; |
| 170 } |
| 171 |
| 172 if (event.args["layerTreeId"] !== this._layerTreeId) |
| 173 return; |
| 174 |
161 var timestamp = event.startTime / 1000; | 175 var timestamp = event.startTime / 1000; |
162 var eventNames = WebInspector.TracingModel.TraceEventName; | |
163 | |
164 if (event.name === eventNames.BeginFrame) | 176 if (event.name === eventNames.BeginFrame) |
165 this.handleBeginFrame(timestamp); | 177 this.handleBeginFrame(timestamp); |
166 else if (event.name === eventNames.DrawFrame) | 178 else if (event.name === eventNames.DrawFrame) |
167 this.handleDrawFrame(timestamp); | 179 this.handleDrawFrame(timestamp); |
168 else if (event.name === eventNames.ActivateLayerTree) | 180 else if (event.name === eventNames.ActivateLayerTree) |
169 this.handleActivateLayerTree(); | 181 this.handleActivateLayerTree(); |
170 else if (event.name === eventNames.RequestMainThreadFrame) | 182 else if (event.name === eventNames.RequestMainThreadFrame) |
171 this.handleRequestMainThreadFrame(); | 183 this.handleRequestMainThreadFrame(); |
172 else if (event.name === eventNames.CompositeLayers) | 184 else if (event.name === eventNames.CompositeLayers) |
173 this.handleCompositeLayers(); | 185 this.handleCompositeLayers(); |
174 else if (event.name === eventNames.LayerTreeHostImplSnapshot) | 186 |
175 this.handleLayerTreeSnapshot(new WebInspector.DeferredTracingLayerTr
ee(this.target(), event.args["snapshot"]["active_tree"]["root_layer"])); | 187 // FIXME: we also need to process main thread events, so we can assign t
ime spent by categories |
| 188 // to frames. However, this requires that we can map trace event names t
o Timeline categories. |
176 }, | 189 }, |
177 | 190 |
178 /** | 191 /** |
179 * @param {number} startTime | 192 * @param {number} startTime |
180 */ | 193 */ |
181 handleBeginFrame: function(startTime) | 194 handleBeginFrame: function(startTime) |
182 { | 195 { |
183 if (!this._lastFrame) | 196 if (!this._lastFrame) |
184 this._startBackgroundFrame(startTime); | 197 this._startBackgroundFrame(startTime); |
185 }, | 198 }, |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 this._updateCpuTime(); | 459 this._updateCpuTime(); |
447 }, | 460 }, |
448 | 461 |
449 _updateCpuTime: function() | 462 _updateCpuTime: function() |
450 { | 463 { |
451 this.cpuTime = 0; | 464 this.cpuTime = 0; |
452 for (var key in this.timeByCategory) | 465 for (var key in this.timeByCategory) |
453 this.cpuTime += this.timeByCategory[key]; | 466 this.cpuTime += this.timeByCategory[key]; |
454 } | 467 } |
455 } | 468 } |
OLD | NEW |