Skip to content

Commit 56d493d

Browse files
paulirishDevtools-frontend LUCI CQ
authored andcommitted
RPP: Prevent syntheticEvent registration from throwing
Bug: GoogleChrome/lighthouse#16571 Change-Id: I15d96f69994a072fe6e057f6c9f714d7aaddc0a4 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6701907 Reviewed-by: Connor Clark <[email protected]> Commit-Queue: Connor Clark <[email protected]> Auto-Submit: Paul Irish <[email protected]> Commit-Queue: Paul Irish <[email protected]>
1 parent 3ef3013 commit 56d493d

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

front_end/models/trace/ModelImpl.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ export interface ParseConfig {
3030
**/
3131
export class Model extends EventTarget {
3232
readonly #traces: ParsedTraceFile[] = [];
33-
readonly #syntheticEventsManagerByTrace: Helpers.SyntheticEvents.SyntheticEventsManager[] = [];
3433
readonly #nextNumberByDomain = new Map<string, number>();
3534

3635
readonly #recordingsAvailable: string[] = [];
@@ -108,12 +107,12 @@ export class Model extends EventTarget {
108107
metadata,
109108
parsedTrace: null,
110109
traceInsights: null,
110+
syntheticEventsManager: Helpers.SyntheticEvents.SyntheticEventsManager.createAndActivate(traceEvents),
111111
};
112112

113113
try {
114114
// Wait for all outstanding promises before finishing the async execution,
115115
// but perform all tasks in parallel.
116-
const syntheticEventsManager = Helpers.SyntheticEvents.SyntheticEventsManager.createAndActivate(traceEvents);
117116
await this.#processor.parse(traceEvents, {
118117
isFreshRecording,
119118
isCPUProfile,
@@ -124,7 +123,6 @@ export class Model extends EventTarget {
124123
// We only push the file onto this.#traces here once we know it's valid
125124
// and there's been no errors in the parsing.
126125
this.#traces.push(file);
127-
this.#syntheticEventsManagerByTrace.push(syntheticEventsManager);
128126
} catch (e) {
129127
throw e;
130128
} finally {
@@ -186,7 +184,7 @@ export class Model extends EventTarget {
186184

187185
syntheticTraceEventsManager(index: number = this.#traces.length - 1): Helpers.SyntheticEvents.SyntheticEventsManager
188186
|null {
189-
return this.#syntheticEventsManagerByTrace.at(index) ?? null;
187+
return this.#traces.at(index)?.syntheticEventsManager ?? null;
190188
}
191189

192190
size(): number {
@@ -215,6 +213,7 @@ export class Model extends EventTarget {
215213
export type ParsedTraceFile = Types.File.TraceFile&{
216214
parsedTrace: Handlers.Types.ParsedTrace | null,
217215
traceInsights: Insights.Types.TraceInsightSets | null,
216+
syntheticEventsManager: Helpers.SyntheticEvents.SyntheticEventsManager,
218217
};
219218

220219
export const enum ModelUpdateType {

front_end/models/trace/handlers/ExtensionTraceDataHandler.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export function extractConsoleAPIExtensionEntries(): void {
118118
ph: Types.Events.Phase.COMPLETE,
119119
};
120120
const extensionEntry =
121-
Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager()
121+
Helpers.SyntheticEvents.SyntheticEventsManager
122122
.registerSyntheticEvent<Types.Extensions.SyntheticExtensionTrackEntry>(unregisteredExtensionEntry);
123123
extensionTrackEntries.push(extensionEntry);
124124
continue;
@@ -137,8 +137,8 @@ export function extractConsoleAPIExtensionEntries(): void {
137137
rawSourceEvent: currentTimeStamp
138138
};
139139
const syntheticTimeStamp =
140-
Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager()
141-
.registerSyntheticEvent<Types.Events.SyntheticConsoleTimeStamp>(unregisteredSyntheticTimeStamp);
140+
Helpers.SyntheticEvents.SyntheticEventsManager.registerSyntheticEvent<Types.Events.SyntheticConsoleTimeStamp>(
141+
unregisteredSyntheticTimeStamp);
142142
syntheticConsoleEntriesForTimingsTrack.push(syntheticTimeStamp);
143143
}
144144
}
@@ -196,7 +196,7 @@ export function extractPerformanceAPIExtensionEntries(
196196

197197
if (Types.Extensions.isExtensionPayloadMarker(extensionPayload)) {
198198
const extensionMarker =
199-
Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager()
199+
Helpers.SyntheticEvents.SyntheticEventsManager
200200
.registerSyntheticEvent<Types.Extensions.SyntheticExtensionMarker>(
201201
extensionSyntheticEntry as Omit<Types.Extensions.SyntheticExtensionMarker, '_tag'>);
202202
extensionMarkers.push(extensionMarker);
@@ -205,7 +205,7 @@ export function extractPerformanceAPIExtensionEntries(
205205

206206
if (Types.Extensions.isExtensionPayloadTrackEntry(extensionSyntheticEntry.args)) {
207207
const extensionTrackEntry =
208-
Helpers.SyntheticEvents.SyntheticEventsManager.getActiveManager()
208+
Helpers.SyntheticEvents.SyntheticEventsManager
209209
.registerSyntheticEvent<Types.Extensions.SyntheticExtensionTrackEntry>(
210210
extensionSyntheticEntry as Omit<Types.Extensions.SyntheticExtensionTrackEntry, '_tag'>);
211211
extensionTrackEntries.push(extensionTrackEntry);

front_end/models/trace/helpers/SyntheticEvents.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export class SyntheticEventsManager {
4040

4141
static registerSyntheticEvent<T extends Types.Events.SyntheticBased>(syntheticEvent: Omit<T, '_tag'>): T {
4242
try {
43-
return SyntheticEventsManager.getActiveManager().registerSyntheticEvent(syntheticEvent);
43+
return SyntheticEventsManager.getActiveManager().#registerSyntheticEvent(syntheticEvent);
4444
} catch {
4545
// If no active manager has been initialized, we assume the trace engine is
4646
// not running as part of the Performance panel. In this case we don't
@@ -59,7 +59,7 @@ export class SyntheticEventsManager {
5959
* be created with this method to ensure they are registered and made
6060
* available to load events using serialized keys.
6161
*/
62-
registerSyntheticEvent<T extends Types.Events.SyntheticBased>(syntheticEvent: Omit<T, '_tag'>): T {
62+
#registerSyntheticEvent<T extends Types.Events.SyntheticBased>(syntheticEvent: Omit<T, '_tag'>): T {
6363
const rawIndex = this.#rawTraceEvents.indexOf(syntheticEvent.rawSourceEvent);
6464
if (rawIndex < 0) {
6565
throw new Error('Attempted to register a synthetic event paired to an unknown raw event.');

0 commit comments

Comments
 (0)