@@ -8,6 +8,7 @@ import Thread from '../tracingModel/thread'
88import TracingModel , { Phase } from '../tracingModel'
99import LayerPaintEvent from './timelineFrame/layerPaintEvent'
1010import TimelineData from './timelineData'
11+ import Logger from '../../src/logger'
1112
1213type categoryMapperFunc = ( any : Event ) => string
1314
@@ -51,6 +52,7 @@ export default class TimelineFrameModel {
5152 * @return {!Array<!TimelineModel.TimelineFrame> }
5253 */
5354 public frames ( startTime ?: number , endTime ?: number ) : TimelineFrame [ ] {
55+ Logger . debug ( 'TimelineFrameModel' , 'frames() called. Total frames available:' , this . _frames . length )
5456 if ( ! startTime && ! endTime ) {
5557 return this . _frames
5658 }
@@ -212,12 +214,13 @@ export default class TimelineFrameModel {
212214 ( frame . startTime !== this . _frames [ this . _frames . length - 1 ] . endTime ||
213215 frame . startTime > frame . endTime )
214216 ) {
215- console . assert (
216- false ,
217+ Logger . error (
218+ 'TimelineFrameModel' ,
217219 `Inconsistent frame time for frame ${ this . _frames . length } (${ frame . startTime } - ${ frame . endTime } )`
218220 )
219221 }
220222 this . _frames . push ( frame )
223+ Logger . debug ( 'TimelineFrameModel' , 'Frame added to array. Total frames:' , this . _frames . length , 'Duration:' , frame . duration , 'ms' )
221224 if ( typeof frame . mainFrameId === 'number' ) {
222225 this . _frameById [ frame . mainFrameId ] = frame
223226 }
@@ -236,6 +239,15 @@ export default class TimelineFrameModel {
236239 * @param {!Array<!{thread: !SDK.TracingModel.Thread, time: number}> } threadData
237240 */
238241 public addTraceEvents ( target : any , events : Event [ ] , threadData : ThreadData [ ] ) : void {
242+ Logger . debug ( 'TimelineFrameModel' , 'addTraceEvents called with' , events . length , 'events and' , threadData . length , 'threads' )
243+
244+ // Log a sample of event names to understand what we're working with
245+ const eventNameCounts : { [ key : string ] : number } = { }
246+ events . forEach ( e => {
247+ eventNameCounts [ e . name ] = ( eventNameCounts [ e . name ] || 0 ) + 1
248+ } )
249+ Logger . debug ( 'TimelineFrameModel' , 'Event distribution:' , JSON . stringify ( eventNameCounts , null , 2 ) )
250+
239251 this . _target = target
240252 let j = 0
241253 this . _currentProcessMainThread = ( threadData . length && threadData [ 0 ] . thread ) || null
@@ -246,6 +258,21 @@ export default class TimelineFrameModel {
246258 this . _addTraceEvent ( events [ i ] )
247259 }
248260 this . _currentProcessMainThread = null
261+ Logger . debug ( 'TimelineFrameModel' , 'addTraceEvents complete. layerTreeId was:' , this . _layerTreeId , 'Total frames:' , this . _frames . length )
262+ }
263+
264+ /**
265+ * Finalize frame processing by flushing any pending last frame.
266+ * This should be called after all trace events have been added.
267+ * @param {number } endTime - The end time to use for the last frame
268+ */
269+ public finalize ( endTime : number ) : void {
270+ Logger . debug ( 'TimelineFrameModel' , 'Finalizing. _lastFrame exists:' , ! ! this . _lastFrame , 'endTime:' , endTime )
271+ if ( this . _lastFrame ) {
272+ this . _flushFrame ( this . _lastFrame , endTime )
273+ this . _lastFrame = null
274+ }
275+ Logger . debug ( 'TimelineFrameModel' , 'Finalization complete. Total frames:' , this . _frames . length )
249276 }
250277
251278 /**
@@ -259,6 +286,7 @@ export default class TimelineFrameModel {
259286
260287 if ( event . name === eventNames . SetLayerTreeId ) {
261288 this . _layerTreeId = event . args [ 'layerTreeId' ] || event . args [ 'data' ] [ 'layerTreeId' ]
289+ Logger . debug ( 'TimelineFrameModel' , 'SetLayerTreeId detected:' , this . _layerTreeId , 'from event:' , JSON . stringify ( event . args ) )
262290 } else if (
263291 event . phase === Phase . SnapshotObject &&
264292 event . name === eventNames . LayerTreeHostImplSnapshot &&
@@ -284,14 +312,21 @@ export default class TimelineFrameModel {
284312 private _processCompositorEvents ( event : Event ) : void {
285313 const eventNames = RecordType
286314
315+ // Log BeginFrame and DrawFrame events
316+ if ( event . name === eventNames . BeginFrame || event . name === eventNames . DrawFrame ) {
317+ Logger . debug ( 'TimelineFrameModel' , `${ event . name } event - layerTreeId in event:` , event . args [ 'layerTreeId' ] , 'expected:' , this . _layerTreeId , 'match:' , event . args [ 'layerTreeId' ] === this . _layerTreeId )
318+ }
319+
287320 if ( event . args [ 'layerTreeId' ] !== this . _layerTreeId ) {
288321 return
289322 }
290323
291324 const timestamp = event . startTime
292325 if ( event . name === eventNames . BeginFrame ) {
326+ Logger . debug ( 'TimelineFrameModel' , '✓ Processing BeginFrame at' , timestamp )
293327 this . handleBeginFrame ( timestamp )
294328 } else if ( event . name === eventNames . DrawFrame ) {
329+ Logger . debug ( 'TimelineFrameModel' , '✓ Processing DrawFrame at' , timestamp )
295330 this . handleDrawFrame ( timestamp )
296331 } else if ( event . name === eventNames . ActivateLayerTree ) {
297332 this . handleActivateLayerTree ( )
0 commit comments