Skip to content

Commit 2d50533

Browse files
Connor ClarkDevtools-frontend LUCI CQ
authored andcommitted
[RPP] Fix annotation key breaking on trace export
Annotations are keyed by trace event index number. On export, w/o an experiment enabled, some trace events were being filtered out. This broke annotation keys. Now, instead of being filtered out those events are replaced with a stub event. Bug: 409707727 Change-Id: Iaab3559fa97b5a30fdab8cdaa06591551c9faa67 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6448571 Commit-Queue: Connor Clark <[email protected]> Reviewed-by: Paul Irish <[email protected]> Auto-Submit: Connor Clark <[email protected]> Commit-Queue: Paul Irish <[email protected]>
1 parent 5e20990 commit 2d50533

File tree

2 files changed

+43
-7
lines changed

2 files changed

+43
-7
lines changed

front_end/models/trace/types/TraceEvents.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3154,3 +3154,24 @@ export function isV8SourceRundownSourcesLargeScriptCatchupEvent(event: Event):
31543154
event is V8SourceRundownSourcesLargeScriptCatchupEvent {
31553155
return event.cat === 'disabled-by-default-devtools.v8-source-rundown-sources' && event.name === 'LargeScriptCatchup';
31563156
}
3157+
3158+
export interface V8SourceRundownSourcesStubScriptCatchupEvent extends Event {
3159+
cat: 'disabled-by-default-devtools.v8-source-rundown-sources';
3160+
name: 'StubScriptCatchup';
3161+
args: Args&{
3162+
data: {
3163+
isolate: string,
3164+
scriptId: number,
3165+
},
3166+
};
3167+
}
3168+
3169+
export function isV8SourceRundownSourcesStubScriptCatchupEvent(event: Event):
3170+
event is V8SourceRundownSourcesStubScriptCatchupEvent {
3171+
return event.cat === 'disabled-by-default-devtools.v8-source-rundown-sources' && event.name === 'StubScriptCatchup';
3172+
}
3173+
3174+
export function isAnyScriptCatchupEvent(event: Event): event is V8SourceRundownSourcesScriptCatchupEvent|
3175+
V8SourceRundownSourcesLargeScriptCatchupEvent|V8SourceRundownSourcesStubScriptCatchupEvent {
3176+
return event.cat === 'disabled-by-default-devtools.v8-source-rundown-sources';
3177+
}

front_end/panels/timeline/TimelinePanel.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1344,7 +1344,7 @@ export class TimelinePanel extends UI.Panel.Panel implements Client, TimelineMod
13441344
void contextMenu.show();
13451345
}
13461346

1347-
async saveToFile(isEnhancedTrace = false, addModifications = false): Promise<void> {
1347+
async saveToFile(savingEnhancedTrace = false, addModifications = false): Promise<void> {
13481348
if (this.state !== State.IDLE) {
13491349
return;
13501350
}
@@ -1357,17 +1357,32 @@ export class TimelinePanel extends UI.Panel.Panel implements Client, TimelineMod
13571357
return;
13581358
}
13591359

1360-
if (!isEnhancedTrace ||
1361-
!Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.TIMELINE_COMPILED_SOURCES)) {
1362-
traceEvents = traceEvents.filter(event => {
1363-
return event.cat !== 'disabled-by-default-devtools.v8-source-rundown-sources';
1360+
const shouldRetainScriptSources = savingEnhancedTrace &&
1361+
Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.TIMELINE_COMPILED_SOURCES);
1362+
if (!shouldRetainScriptSources) {
1363+
traceEvents = traceEvents.map(event => {
1364+
if (Trace.Types.Events.isAnyScriptCatchupEvent(event) && event.name !== 'StubScriptCatchup') {
1365+
return {
1366+
cat: event.cat,
1367+
name: 'StubScriptCatchup',
1368+
ts: event.ts,
1369+
ph: event.ph,
1370+
pid: event.pid,
1371+
tid: event.tid,
1372+
args: {
1373+
data: {isolate: event.args.data.isolate, scriptId: event.args.data.scriptId},
1374+
},
1375+
} as Trace.Types.Events.V8SourceRundownSourcesStubScriptCatchupEvent;
1376+
}
1377+
1378+
return event;
13641379
});
13651380
}
13661381

13671382
if (metadata) {
13681383
metadata.modifications = addModifications ? ModificationsManager.activeManager()?.toJSON() : undefined;
13691384
metadata.enhancedTraceVersion =
1370-
isEnhancedTrace ? SDK.EnhancedTracesParser.EnhancedTracesParser.enhancedTraceVersion : undefined;
1385+
savingEnhancedTrace ? SDK.EnhancedTracesParser.EnhancedTracesParser.enhancedTraceVersion : undefined;
13711386
}
13721387

13731388
const traceStart = Platform.DateUtilities.toISO8601Compact(new Date());
@@ -1402,7 +1417,7 @@ export class TimelinePanel extends UI.Panel.Panel implements Client, TimelineMod
14021417
} else {
14031418
const formattedTraceIter = traceJsonGenerator(traceEvents, {
14041419
...metadata,
1405-
sourceMaps: isEnhancedTrace ? metadata?.sourceMaps : undefined,
1420+
sourceMaps: savingEnhancedTrace ? metadata?.sourceMaps : undefined,
14061421
});
14071422
traceAsString = Array.from(formattedTraceIter).join('');
14081423
}

0 commit comments

Comments
 (0)