@@ -100,14 +100,8 @@ export class Model extends EventTarget {
100100
101101 this . #processor. addEventListener ( TraceParseProgressEvent . eventName , onTraceUpdate ) ;
102102
103- // Create a parsed trace file. It will be populated with data from the processor.
104- const file : ParsedTraceFile = {
105- traceEvents,
106- metadata,
107- parsedTrace : null ,
108- traceInsights : null ,
109- syntheticEventsManager : Helpers . SyntheticEvents . SyntheticEventsManager . createAndActivate ( traceEvents ) ,
110- } ;
103+ // TODO(cjamcl): this.#processor.parse needs this to work. So it should either take it as input, or create it itself.
104+ const syntheticEventsManager = Helpers . SyntheticEvents . SyntheticEventsManager . createAndActivate ( traceEvents ) ;
111105
112106 try {
113107 // Wait for all outstanding promises before finishing the async execution,
@@ -119,7 +113,11 @@ export class Model extends EventTarget {
119113 resolveSourceMap : config ?. resolveSourceMap ,
120114 } ;
121115 await this . #processor. parse ( traceEvents , parseConfig ) ;
122- this . #storeParsedFileData( file , this . #processor. parsedTrace , this . #processor. insights ) ;
116+ if ( ! this . #processor. parsedTrace ) {
117+ throw new Error ( 'processor did not parse trace' ) ;
118+ }
119+ const file = this . #storeAndCreateParsedTraceFile(
120+ syntheticEventsManager , traceEvents , metadata , this . #processor. parsedTrace , this . #processor. insights ) ;
123121 // We only push the file onto this.#traces here once we know it's valid
124122 // and there's been no errors in the parsing.
125123 this . #traces. push ( file ) ;
@@ -133,39 +131,51 @@ export class Model extends EventTarget {
133131 }
134132 }
135133
136- #storeParsedFileData(
137- file : ParsedTraceFile , data : Handlers . Types . ParsedTrace | null ,
138- insights : Insights . Types . TraceInsightSets | null ) : void {
139- file . parsedTrace = data ;
140- file . traceInsights = insights ;
134+ #storeAndCreateParsedTraceFile(
135+ syntheticEventsManager : Helpers . SyntheticEvents . SyntheticEventsManager ,
136+ traceEvents : readonly Types . Events . Event [ ] , metadata : Types . File . MetaData , data : Handlers . Types . ParsedTrace ,
137+ traceInsights : Insights . Types . TraceInsightSets | null ) : ParsedTraceFile {
141138 this . #lastRecordingIndex++ ;
142139 let recordingName = `Trace ${ this . #lastRecordingIndex} ` ;
143- let origin : string | null = null ;
144- if ( file . parsedTrace ) {
145- origin = Helpers . Trace . extractOriginFromTrace ( file . parsedTrace . Meta . mainFrameURL ) ;
146- if ( origin ) {
147- const nextSequenceForDomain = Platform . MapUtilities . getWithDefault ( this . #nextNumberByDomain, origin , ( ) => 1 ) ;
148- recordingName = `${ origin } (${ nextSequenceForDomain } )` ;
149- this . #nextNumberByDomain. set ( origin , nextSequenceForDomain + 1 ) ;
150- }
140+ const origin = Helpers . Trace . extractOriginFromTrace ( data . Meta . mainFrameURL ) ;
141+ if ( origin ) {
142+ const nextSequenceForDomain = Platform . MapUtilities . getWithDefault ( this . #nextNumberByDomain, origin , ( ) => 1 ) ;
143+ recordingName = `${ origin } (${ nextSequenceForDomain } )` ;
144+ this . #nextNumberByDomain. set ( origin , nextSequenceForDomain + 1 ) ;
151145 }
152146 this . #recordingsAvailable. push ( recordingName ) ;
147+
148+ return {
149+ traceEvents,
150+ metadata,
151+ parsedTrace : data ,
152+ insights : traceInsights ,
153+ syntheticEventsManager,
154+ } ;
153155 }
154156
155157 lastTraceIndex ( ) : number {
156158 return this . size ( ) - 1 ;
157159 }
158160
161+ findIndexForParsedTrace ( parsedTrace : Handlers . Types . ParsedTrace ) : number {
162+ return this . #traces. findIndex ( file => file . parsedTrace === parsedTrace ) ;
163+ }
164+
159165 /**
160166 * Returns the parsed trace data indexed by the order in which it was stored.
161167 * If no index is given, the last stored parsed data is returned.
162168 */
169+ parsedTraceFile ( index : number = this . #traces. length - 1 ) : ParsedTraceFile | null {
170+ return this . #traces. at ( index ) ?? null ;
171+ }
172+
163173 parsedTrace ( index : number = this . #traces. length - 1 ) : Handlers . Types . ParsedTrace | null {
164174 return this . #traces. at ( index ) ?. parsedTrace ?? null ;
165175 }
166176
167177 traceInsights ( index : number = this . #traces. length - 1 ) : Insights . Types . TraceInsightSets | null {
168- return this . #traces. at ( index ) ?. traceInsights ?? null ;
178+ return this . #traces. at ( index ) ?. insights ?? null ;
169179 }
170180
171181 metadata ( index : number = this . #traces. length - 1 ) : Types . File . MetaData | null {
@@ -211,8 +221,9 @@ export class Model extends EventTarget {
211221 * essentially the TraceFile plus whatever the model has parsed from it.
212222 */
213223export type ParsedTraceFile = Types . File . TraceFile & {
214- parsedTrace : Handlers . Types . ParsedTrace | null ,
215- traceInsights : Insights . Types . TraceInsightSets | null ,
224+ parsedTrace : Handlers . Types . ParsedTrace ,
225+ /** Is null for CPU profiles. */
226+ insights : Insights . Types . TraceInsightSets | null ,
216227 syntheticEventsManager : Helpers . SyntheticEvents . SyntheticEventsManager ,
217228} ;
218229
0 commit comments