@paulirish/trace_engine 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/core/platform/devtools_entrypoint-bundle-tsconfig-tsconfig.json +0 -40
- package/core/platform/platform.js.compressed +0 -0
- package/core/platform/platform.js.hash +0 -1
- package/core/platform/platform.prebundle.d.ts +0 -15
- package/core/platform/platform.prebundle.js +0 -50
- package/core/platform/platform.prebundle.js.map +0 -1
- package/core/platform/platform.prebundle.ts +0 -64
- package/models/trace/SDKServices.js +0 -104
- package/models/trace/SDKServices.js.map +0 -7
- package/models/trace/TraceProcessor.js +0 -133
- package/models/trace/TraceProcessor.js.map +0 -7
- package/models/trace/TreeManipulator.js +0 -85
- package/models/trace/TreeManipulator.js.map +0 -7
- package/models/trace/devtools_entrypoint-legacy-typescript-tsconfig.json +0 -43
- package/models/trace/frames/TimelineFrameModel.js +0 -392
- package/models/trace/frames/TimelineFrameModel.js.map +0 -7
- package/models/trace/frames/bundle-tsconfig.json +0 -1
- package/models/trace/frames/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -43
- package/models/trace/frames/frames-tsconfig.json +0 -58
- package/models/trace/frames/frames.js +0 -5
- package/models/trace/frames/frames.js.map +0 -7
- package/models/trace/handlers/Migration.js +0 -27
- package/models/trace/handlers/Migration.js.map +0 -7
- package/models/trace/handlers/UberFramesHandler.js +0 -293
- package/models/trace/handlers/UberFramesHandler.js.map +0 -7
- package/models/trace/legacy-tsconfig.json +0 -1
- package/models/trace/sdk_services/DOMNodeLookup.js +0 -41
- package/models/trace/sdk_services/DOMNodeLookup.js.map +0 -7
- package/models/trace/sdk_services/LayoutShifts.js +0 -68
- package/models/trace/sdk_services/LayoutShifts.js.map +0 -7
- package/models/trace/sdk_services/bundle-tsconfig.json +0 -1
- package/models/trace/sdk_services/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -41
- package/models/trace/sdk_services/sdk_services-tsconfig.json +0 -57
- package/models/trace/sdk_services/sdk_services.js +0 -7
- package/models/trace/sdk_services/sdk_services.js.map +0 -7
- package/models/trace/trace-legacy.js +0 -16
- package/models/trace/trace-legacy.js.map +0 -7
- package/models/trace/worker/Processor.js +0 -143
- package/models/trace/worker/Processor.js.map +0 -7
- package/models/trace/worker/Types.js +0 -1
- package/models/trace/worker/Types.js.map +0 -7
- package/models/trace/worker/bundle-tsconfig.json +0 -1
- package/models/trace/worker/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -41
- package/models/trace/worker/devtools_entrypoint-worker_entrypoint-typescript-tsconfig.json +0 -41
- package/models/trace/worker/processor-tsconfig.json +0 -45
- package/models/trace/worker/worker.js +0 -7
- package/models/trace/worker/worker.js.map +0 -7
- package/models/trace/worker/worker_entrypoint-tsconfig.json +0 -1
- package/models/trace/worker/worker_entrypoint.js +0 -36
- package/models/trace/worker/worker_entrypoint.js.map +0 -7
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
import { data as metaHandlerData } from "./MetaHandler.js";
|
|
2
|
-
import { HandlerState } from "./types.js";
|
|
3
|
-
import * as Platform from "../../../core/platform/platform.js";
|
|
4
|
-
import * as Helpers from "../helpers/helpers.js";
|
|
5
|
-
import * as Types from "../types/types.js";
|
|
6
|
-
const eventsInProcessThread = /* @__PURE__ */ new Map();
|
|
7
|
-
let relevantEvts = [];
|
|
8
|
-
const gpuEvents = [];
|
|
9
|
-
const asyncEvts = [];
|
|
10
|
-
let syntheticEvents = [];
|
|
11
|
-
const waterFallEvents = [];
|
|
12
|
-
let eventLatencyIdToFrameSeq = {};
|
|
13
|
-
export function reset() {
|
|
14
|
-
eventsInProcessThread.clear();
|
|
15
|
-
relevantEvts.length = 0;
|
|
16
|
-
gpuEvents.length = 0;
|
|
17
|
-
syntheticEvents.length = 0;
|
|
18
|
-
asyncEvts.length = 0;
|
|
19
|
-
waterFallEvents.length = 0;
|
|
20
|
-
eventLatencyIdToFrameSeq = {};
|
|
21
|
-
handlerState = HandlerState.INITIALIZED;
|
|
22
|
-
}
|
|
23
|
-
let handlerState = HandlerState.UNINITIALIZED;
|
|
24
|
-
const someStuff = {
|
|
25
|
-
CompositeLayers: "CompositeLayers",
|
|
26
|
-
RasterTask: "RasterTask",
|
|
27
|
-
ImageDecodeTask: "ImageDecodeTask",
|
|
28
|
-
ImageUploadTask: "ImageUploadTask",
|
|
29
|
-
DecodeImage: "Decode Image",
|
|
30
|
-
ResizeImage: "Resize Image",
|
|
31
|
-
DrawLazyPixelRef: "Draw LazyPixelRef",
|
|
32
|
-
DecodeLazyPixelRef: "Decode LazyPixelRef",
|
|
33
|
-
BeginFrame: "BeginFrame",
|
|
34
|
-
RequestMainThreadFrame: "RequestMainThreadFrame",
|
|
35
|
-
NeedsBeginFrameChanged: "NeedsBeginFrameChanged",
|
|
36
|
-
BeginMainThreadFrame: "BeginMainThreadFrame",
|
|
37
|
-
ActivateLayerTree: "ActivateLayerTree",
|
|
38
|
-
DrawFrame: "DrawFrame",
|
|
39
|
-
DroppedFrame: "DroppedFrame"
|
|
40
|
-
};
|
|
41
|
-
const someRelevantTraceEventTypes = [
|
|
42
|
-
...Object.values(someStuff),
|
|
43
|
-
"ActivateLayerTree",
|
|
44
|
-
"BeginFrame",
|
|
45
|
-
"BeginMainThreadFrame,",
|
|
46
|
-
"CompositeLayers",
|
|
47
|
-
"Commit",
|
|
48
|
-
"DrawFrame",
|
|
49
|
-
"DroppedFrame",
|
|
50
|
-
"InvalidateLayout,",
|
|
51
|
-
"LayerTreeHostImplSnapshot",
|
|
52
|
-
"NeedsBeginFrameChanged",
|
|
53
|
-
"Paint",
|
|
54
|
-
"RequestMainThreadFrame",
|
|
55
|
-
"ScheduleStyleRecalculation,",
|
|
56
|
-
"ScrollLayer,",
|
|
57
|
-
"SetLayerTreeId",
|
|
58
|
-
"MainFrame.NotifyReadyToCommitOnImpl",
|
|
59
|
-
"MainFrame.CommitComplete",
|
|
60
|
-
"RasterizerTaskImpl::RunOnWorkerThread",
|
|
61
|
-
"LayerTreeHostImpl::FinishCommit",
|
|
62
|
-
"TileManager::FlushAndIssueSignals",
|
|
63
|
-
"ProxyImpl::ScheduledActionDraw",
|
|
64
|
-
"PipelineReporter",
|
|
65
|
-
"SendBeginMainFrameToCommit",
|
|
66
|
-
"BeginImplFrameToSendBeginMainFrame",
|
|
67
|
-
"SubmitCompositorFrameToPresentationCompositorFrame",
|
|
68
|
-
"RasterDecoderImpl::DoEndRasterCHROMIUM",
|
|
69
|
-
"Frame",
|
|
70
|
-
"Activation",
|
|
71
|
-
"BeginImplFrameToSendBeginMainFrame",
|
|
72
|
-
"Commit",
|
|
73
|
-
"EndActivateToSubmitCompositorFrame",
|
|
74
|
-
"EndCommitToActivation",
|
|
75
|
-
"ReceiveCompositorFrameToStartDraw",
|
|
76
|
-
"SendBeginMainFrameToCommit",
|
|
77
|
-
"StartDrawToSwapStart",
|
|
78
|
-
"SubmitCompositorFrameToPresentationCompositorFrame",
|
|
79
|
-
"SubmitToReceiveCompositorFrame",
|
|
80
|
-
"Swap",
|
|
81
|
-
"BeginFrame",
|
|
82
|
-
"DroppedFrame",
|
|
83
|
-
"RequestMainFrame",
|
|
84
|
-
"BeginMainThreadFrame",
|
|
85
|
-
"CompositeLayer",
|
|
86
|
-
"Commit",
|
|
87
|
-
"ActivateLayerTree",
|
|
88
|
-
"DrawFrame",
|
|
89
|
-
"EndCommitToActivation",
|
|
90
|
-
"Swap",
|
|
91
|
-
"SwapBuffers",
|
|
92
|
-
"Scheduler::BeginFrame",
|
|
93
|
-
"DisplayScheduler::BeginFrame",
|
|
94
|
-
"Scheduler::BeginImplFrame",
|
|
95
|
-
"EventLatency",
|
|
96
|
-
"GenerationToBrowserMain",
|
|
97
|
-
"BrowserMainToRendererCompositor",
|
|
98
|
-
"RendererCompositorQueueingDelay",
|
|
99
|
-
"RendererCompositorProcessing",
|
|
100
|
-
"RendererCompositorFinishedToEndActivate",
|
|
101
|
-
"RendererCompositorFinishedToSendBeginMainFrame",
|
|
102
|
-
"RendererCompositorFinishedToBeginImplFrame",
|
|
103
|
-
"BeginImplFrameToSendBeginMainFrame",
|
|
104
|
-
"RendererCompositorFinishedToCommit",
|
|
105
|
-
"RendererCompositorFinishedToEndCommit",
|
|
106
|
-
"RendererCompositorFinishedToActivation",
|
|
107
|
-
"RendererCompositorFinishedToSubmitCompositorFrame",
|
|
108
|
-
"RendererCompositorToMain",
|
|
109
|
-
"RendererMainProcessing",
|
|
110
|
-
"RendererMainFinishedToBeginImplFrame",
|
|
111
|
-
"RendererMainFinishedToSendBeginMainFrame",
|
|
112
|
-
"RendererMainFinishedToCommit",
|
|
113
|
-
"RendererMainFinishedToEndCommit",
|
|
114
|
-
"RendererMainFinishedToActivation",
|
|
115
|
-
"RendererMainFinishedToEndActivate",
|
|
116
|
-
"RendererMainFinishedToSubmitCompositorFrame",
|
|
117
|
-
"SendBeginMainFrameToCommit",
|
|
118
|
-
"Commit",
|
|
119
|
-
"EndCommitToActivation",
|
|
120
|
-
"Activation",
|
|
121
|
-
"EndActivateToSubmitCompositorFrame",
|
|
122
|
-
"SubmitCompositorFrameToPresentationCompositorFrame",
|
|
123
|
-
"SubmitCompositorFrameToPresentationCompositorFrame sub-stages:",
|
|
124
|
-
"SubmitToReceiveCompositorFrame",
|
|
125
|
-
"ReceiveCompositorFrameToStartDraw",
|
|
126
|
-
"StartDrawToSwapStart",
|
|
127
|
-
"Swap",
|
|
128
|
-
"SwapStartToBufferAvailable",
|
|
129
|
-
"BufferAvailableToBufferReady",
|
|
130
|
-
"BufferReadyToLatch",
|
|
131
|
-
"LatchToSwapEnd",
|
|
132
|
-
"SwapEndToPresentationCompositorFrame",
|
|
133
|
-
"EventTiming",
|
|
134
|
-
"LongAnimationFrame-pi",
|
|
135
|
-
"LongAnimationFrame-pi2",
|
|
136
|
-
"LongAnimationFrame-no2",
|
|
137
|
-
"LongAnimationFrame",
|
|
138
|
-
"LoAF-renderStart",
|
|
139
|
-
"LoAF-desiredRenderStart",
|
|
140
|
-
"LoAF-styleAndLayoutStart",
|
|
141
|
-
"ScreenshotMeta"
|
|
142
|
-
];
|
|
143
|
-
export const eventLatencyBreakdownTypeNames = [
|
|
144
|
-
"GenerationToBrowserMain",
|
|
145
|
-
"BrowserMainToRendererCompositor",
|
|
146
|
-
"RendererCompositorQueueingDelay",
|
|
147
|
-
"RendererCompositorProcessing",
|
|
148
|
-
"RendererCompositorFinishedToEndActivate",
|
|
149
|
-
"RendererCompositorFinishedToSendBeginMainFrame",
|
|
150
|
-
"RendererCompositorFinishedToBeginImplFrame",
|
|
151
|
-
"BeginImplFrameToSendBeginMainFrame",
|
|
152
|
-
"RendererCompositorFinishedToCommit",
|
|
153
|
-
"RendererCompositorFinishedToEndCommit",
|
|
154
|
-
"RendererCompositorFinishedToActivation",
|
|
155
|
-
"RendererCompositorFinishedToSubmitCompositorFrame",
|
|
156
|
-
"RendererCompositorToMain",
|
|
157
|
-
"RendererMainProcessing",
|
|
158
|
-
"RendererMainFinishedToBeginImplFrame",
|
|
159
|
-
"RendererMainFinishedToSendBeginMainFrame",
|
|
160
|
-
"RendererMainFinishedToCommit",
|
|
161
|
-
"RendererMainFinishedToEndCommit",
|
|
162
|
-
"RendererMainFinishedToActivation",
|
|
163
|
-
"RendererMainFinishedToEndActivate",
|
|
164
|
-
"RendererMainFinishedToSubmitCompositorFrame",
|
|
165
|
-
"SendBeginMainFrameToCommit",
|
|
166
|
-
"Commit",
|
|
167
|
-
"EndCommitToActivation",
|
|
168
|
-
"Activation",
|
|
169
|
-
"EndActivateToSubmitCompositorFrame",
|
|
170
|
-
"SubmitToReceiveCompositorFrame",
|
|
171
|
-
"ReceiveCompositorFrameToStartDraw",
|
|
172
|
-
"StartDrawToSwapStart",
|
|
173
|
-
"Swap",
|
|
174
|
-
"SwapStartToBufferAvailable",
|
|
175
|
-
"BufferAvailableToBufferReady",
|
|
176
|
-
"BufferReadyToLatch",
|
|
177
|
-
"LatchToSwapEnd",
|
|
178
|
-
"SwapEndToPresentationCompositorFrame"
|
|
179
|
-
];
|
|
180
|
-
export const waterfallTypes = /* @__PURE__ */ new Map([
|
|
181
|
-
["EventLatency", 4],
|
|
182
|
-
["SendBeginMainFrameToCommit", 3],
|
|
183
|
-
["EndCommitToActivation", 2],
|
|
184
|
-
["Activation", 2],
|
|
185
|
-
["EndActivateToSubmitCompositorFrame", 2],
|
|
186
|
-
["SubmitCompositorFrameToPresentationCompositorFrame", 2]
|
|
187
|
-
]);
|
|
188
|
-
export function handleEvent(event) {
|
|
189
|
-
if (Types.TraceEvents.isTraceEventGPUTask(event)) {
|
|
190
|
-
gpuEvents.push(event);
|
|
191
|
-
Helpers.Trace.addEventToProcessThread(event, eventsInProcessThread);
|
|
192
|
-
} else if (event.name === "Screenshot" || someRelevantTraceEventTypes.some((type) => event.name === type)) {
|
|
193
|
-
if (event.ph === "b" || event.ph === "e") {
|
|
194
|
-
asyncEvts.push(event);
|
|
195
|
-
} else {
|
|
196
|
-
if (eventLatencyBreakdownTypeNames.includes(event.name)) {
|
|
197
|
-
if (event.name === "Commit" && !event.cat.includes("cc")) {
|
|
198
|
-
} else {
|
|
199
|
-
waterFallEvents.push(event);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
relevantEvts.push(event);
|
|
203
|
-
}
|
|
204
|
-
Helpers.Trace.addEventToProcessThread(event, eventsInProcessThread);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
export async function finalize() {
|
|
208
|
-
const { browserProcessId, browserThreadId } = metaHandlerData();
|
|
209
|
-
const browserThreads = eventsInProcessThread.get(browserProcessId);
|
|
210
|
-
const { gpuProcessId, gpuThreadId, topLevelRendererIds } = metaHandlerData();
|
|
211
|
-
const ourRendererGPUTasks = gpuEvents.filter((e) => topLevelRendererIds.has(e.args.data.renderer_pid));
|
|
212
|
-
relevantEvts = [...relevantEvts, ...ourRendererGPUTasks];
|
|
213
|
-
if (handlerState !== HandlerState.INITIALIZED) {
|
|
214
|
-
throw new Error("UberFrames handler is not initialized");
|
|
215
|
-
}
|
|
216
|
-
const matchedEvents = /* @__PURE__ */ new Map();
|
|
217
|
-
for (const event of [...asyncEvts]) {
|
|
218
|
-
const id = Helpers.Trace.extractId(event);
|
|
219
|
-
if (id === void 0) {
|
|
220
|
-
continue;
|
|
221
|
-
}
|
|
222
|
-
const syntheticId = `${event.cat}:${id}:${event.name}`;
|
|
223
|
-
const otherEventsWithID = Platform.MapUtilities.getWithDefault(matchedEvents, syntheticId, () => {
|
|
224
|
-
return { begin: null, end: null };
|
|
225
|
-
});
|
|
226
|
-
const isStartEvent = event.ph === Types.TraceEvents.Phase.ASYNC_NESTABLE_START;
|
|
227
|
-
const isEndEvent = event.ph === Types.TraceEvents.Phase.ASYNC_NESTABLE_END;
|
|
228
|
-
if (isStartEvent) {
|
|
229
|
-
otherEventsWithID.begin = event;
|
|
230
|
-
} else if (isEndEvent) {
|
|
231
|
-
otherEventsWithID.end = event;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
for (const [id, eventsPair] of matchedEvents.entries()) {
|
|
235
|
-
if (!eventsPair.begin || !eventsPair.end) {
|
|
236
|
-
continue;
|
|
237
|
-
}
|
|
238
|
-
const event = {
|
|
239
|
-
cat: eventsPair.end.cat,
|
|
240
|
-
ph: "X",
|
|
241
|
-
pid: eventsPair.end.pid,
|
|
242
|
-
tid: eventsPair.end.tid,
|
|
243
|
-
id,
|
|
244
|
-
name: eventsPair.begin.name,
|
|
245
|
-
dur: Types.Timing.MicroSeconds(eventsPair.end.ts - eventsPair.begin.ts),
|
|
246
|
-
ts: eventsPair.begin.ts,
|
|
247
|
-
args: {
|
|
248
|
-
data: {
|
|
249
|
-
beginEvent: eventsPair.begin,
|
|
250
|
-
endEvent: eventsPair.end
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
if (event.name === "EventLatency") {
|
|
255
|
-
eventLatencyIdToFrameSeq[eventsPair.begin.id2.local] = eventsPair.begin.args.event_latency.frame_sequence ?? null;
|
|
256
|
-
}
|
|
257
|
-
if (event.name === "PipelineReporter") {
|
|
258
|
-
eventLatencyIdToFrameSeq[eventsPair.begin.id2.local] = eventsPair.begin.args.chrome_frame_reporter.frame_sequence ?? null;
|
|
259
|
-
}
|
|
260
|
-
const existingDuplicate = syntheticEvents.find((e) => {
|
|
261
|
-
return e.name === event.name && e.ts === event.ts && e.dur === event.dur && e.id2?.local === event.id2?.local && e.tid === event.tid && e.pid === event.pid;
|
|
262
|
-
});
|
|
263
|
-
if (existingDuplicate) {
|
|
264
|
-
continue;
|
|
265
|
-
}
|
|
266
|
-
if (eventLatencyBreakdownTypeNames.includes(event.name)) {
|
|
267
|
-
waterFallEvents.push(event);
|
|
268
|
-
}
|
|
269
|
-
syntheticEvents.push(event);
|
|
270
|
-
}
|
|
271
|
-
syntheticEvents = syntheticEvents.filter((e) => {
|
|
272
|
-
return true;
|
|
273
|
-
if (e.name !== "PipelineReporter") {
|
|
274
|
-
return true;
|
|
275
|
-
}
|
|
276
|
-
return topLevelRendererIds.has(e.pid) && e.args.data.beginEvent.args.chrome_frame_reporter.frame_type !== "FORKED" && e.args.data.beginEvent.args.chrome_frame_reporter.state === "STATE_PRESENTED_ALL";
|
|
277
|
-
});
|
|
278
|
-
handlerState = HandlerState.FINALIZED;
|
|
279
|
-
}
|
|
280
|
-
export function data() {
|
|
281
|
-
if (handlerState !== HandlerState.FINALIZED) {
|
|
282
|
-
throw new Error("UberFrames handler is not finalized");
|
|
283
|
-
}
|
|
284
|
-
return {
|
|
285
|
-
nonWaterfallEvts: [...relevantEvts, ...syntheticEvents].sort((event1, event2) => event1.ts - event2.ts),
|
|
286
|
-
waterFallEvts: [...waterFallEvents].sort((event1, event2) => event1.ts - event2.ts),
|
|
287
|
-
eventLatencyIdToFrameSeq
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
export function deps() {
|
|
291
|
-
return ["Meta"];
|
|
292
|
-
}
|
|
293
|
-
//# sourceMappingURL=UberFramesHandler.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../front_end/models/trace/handlers/UberFramesHandler.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright 2022 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport {data as metaHandlerData} from './MetaHandler.js';\nimport {type TraceEventHandlerName,HandlerState} from './types.js';\n\nimport * as Platform from '../../../core/platform/platform.js';\nimport * as Helpers from '../helpers/helpers.js';\nimport * as Types from '../types/types.js';\n\n// Each thread contains events. Events indicate the thread and process IDs, which are\n// used to store the event in the correct process thread entry below.\nconst eventsInProcessThread =\n new Map<Types.TraceEvents.ProcessID, Map<Types.TraceEvents.ThreadID, Types.TraceEvents.TraceEventSnapshot[]>>();\n\n// these types are wrong\nlet relevantEvts: Types.TraceEvents.TraceEventSnapshot[] = [];\nconst gpuEvents: Types.TraceEvents.TraceEventSnapshot[] = [];\nconst asyncEvts: Types.TraceEvents.TraceEventSnapshot[] = [];\nlet syntheticEvents: Types.TraceEvents.TraceEventSyntheticNestableAsyncEvent[] = [];\nconst waterFallEvents: Types.TraceEvents.TraceEventSnapshot[] = [];\nlet eventLatencyIdToFrameSeq: Record<string, string> = {};\n// export interface UberFramesData {\n// relevantEvts: readonly Types.TraceEvents.TraceEventData[],\n// syntheticEvents: readonly Types.TraceEvents.TraceEventSyntheticNestableAsyncEvent[];\n// }\n\nexport type UberFramesData = {\n nonWaterfallEvts: readonly Types.TraceEvents.TraceEventData[],\n waterFallEvts: readonly Types.TraceEvents.TraceEventData[],\n eventLatencyIdToFrameSeq: Record<string, string>,\n};\n\nexport function reset(): void {\n eventsInProcessThread.clear();\n relevantEvts.length = 0;\n gpuEvents.length = 0;\n syntheticEvents.length = 0;\n asyncEvts.length = 0;\n waterFallEvents.length = 0;\n eventLatencyIdToFrameSeq = {};\n handlerState = HandlerState.INITIALIZED;\n}\n\nlet handlerState = HandlerState.UNINITIALIZED;\n\nconst someStuff = {\n CompositeLayers : 'CompositeLayers',\n RasterTask : 'RasterTask',\n ImageDecodeTask : 'ImageDecodeTask',\n ImageUploadTask : 'ImageUploadTask',\n DecodeImage : 'Decode Image',\n ResizeImage : 'Resize Image',\n DrawLazyPixelRef : 'Draw LazyPixelRef',\n DecodeLazyPixelRef : 'Decode LazyPixelRef',\n\n BeginFrame: 'BeginFrame',\n RequestMainThreadFrame: 'RequestMainThreadFrame',\n NeedsBeginFrameChanged: 'NeedsBeginFrameChanged',\n BeginMainThreadFrame: 'BeginMainThreadFrame',\n ActivateLayerTree: 'ActivateLayerTree',\n DrawFrame: 'DrawFrame',\n DroppedFrame: 'DroppedFrame',\n};\nconst someRelevantTraceEventTypes = [\n\n ... Object.values(someStuff),\n\n // timeline frame model\n 'ActivateLayerTree',\n 'BeginFrame',\n 'BeginMainThreadFrame,',\n 'CompositeLayers',\n 'Commit',\n 'DrawFrame',\n 'DroppedFrame',\n 'InvalidateLayout,',\n 'LayerTreeHostImplSnapshot',\n 'NeedsBeginFrameChanged',\n 'Paint',\n 'RequestMainThreadFrame',\n 'ScheduleStyleRecalculation,',\n 'ScrollLayer,',\n 'SetLayerTreeId',\n\n\n 'MainFrame.NotifyReadyToCommitOnImpl',\n 'MainFrame.CommitComplete',\n 'RasterizerTaskImpl::RunOnWorkerThread',\n 'LayerTreeHostImpl::FinishCommit',\n 'TileManager::FlushAndIssueSignals',\n 'ProxyImpl::ScheduledActionDraw',\n\n // LONG ones and ones i typically comment out\n 'PipelineReporter',\n 'SendBeginMainFrameToCommit',\n 'BeginImplFrameToSendBeginMainFrame', // happens too much on dropped frames\n 'SubmitCompositorFrameToPresentationCompositorFrame', // parent phase in eventlatency\n // 'Graphics.Pipeline',\n\n 'RasterDecoderImpl::DoEndRasterCHROMIUM',\n 'Frame',\n\n // these are all pipeline reporter subitems. HOEVER they are also included in the eventlatency children too.\n 'Activation',\n 'BeginImplFrameToSendBeginMainFrame',\n 'Commit',\n 'EndActivateToSubmitCompositorFrame',\n 'EndCommitToActivation',\n 'ReceiveCompositorFrameToStartDraw',\n 'SendBeginMainFrameToCommit',\n 'StartDrawToSwapStart',\n 'SubmitCompositorFrameToPresentationCompositorFrame',\n 'SubmitToReceiveCompositorFrame',\n 'Swap',\n\n 'BeginFrame',\n 'DroppedFrame',\n 'RequestMainFrame',\n 'BeginMainThreadFrame',\n 'CompositeLayer',\n 'Commit',\n 'ActivateLayerTree',\n 'DrawFrame',\n\n 'EndCommitToActivation',\n 'Swap',\n 'SwapBuffers', // the gpu one\n 'Scheduler::BeginFrame',\n 'DisplayScheduler::BeginFrame',\n 'Scheduler::BeginImplFrame',\n\n 'EventLatency', // mocny said these are complicated. but.. they're also great.\n // https://docs.google.com/spreadsheets/d/1F6BPrtIMgDD4eKH-VxEqzZy8dOeh3U2EZaYjVlIv-Hk/edit?resourcekey=0-UtBlkaCsd0Oi1Z3bQqHqow#gid=557410449\n // TODO.. some of these are emitted separately on different trace categories.. so there's duplicates. ugh\n'GenerationToBrowserMain',\n'BrowserMainToRendererCompositor',\n'RendererCompositorQueueingDelay',\n'RendererCompositorProcessing',\n'RendererCompositorFinishedToEndActivate',\n'RendererCompositorFinishedToSendBeginMainFrame',\n'RendererCompositorFinishedToBeginImplFrame',\n'BeginImplFrameToSendBeginMainFrame',\n'RendererCompositorFinishedToCommit',\n'RendererCompositorFinishedToEndCommit',\n'RendererCompositorFinishedToActivation',\n'RendererCompositorFinishedToSubmitCompositorFrame',\n'RendererCompositorToMain',\n'RendererMainProcessing',\n'RendererMainFinishedToBeginImplFrame',\n'RendererMainFinishedToSendBeginMainFrame',\n'RendererMainFinishedToCommit',\n'RendererMainFinishedToEndCommit',\n'RendererMainFinishedToActivation',\n'RendererMainFinishedToEndActivate',\n'RendererMainFinishedToSubmitCompositorFrame',\n'SendBeginMainFrameToCommit',\n'Commit',\n'EndCommitToActivation',\n'Activation',\n'EndActivateToSubmitCompositorFrame',\n'SubmitCompositorFrameToPresentationCompositorFrame',\n'SubmitCompositorFrameToPresentationCompositorFrame sub-stages:',\n'SubmitToReceiveCompositorFrame',\n'ReceiveCompositorFrameToStartDraw',\n'StartDrawToSwapStart',\n'Swap',\n'SwapStartToBufferAvailable',\n'BufferAvailableToBufferReady',\n'BufferReadyToLatch',\n'LatchToSwapEnd',\n'SwapEndToPresentationCompositorFrame',\n\n //\n 'EventTiming',\n\n // my loaf branch\n 'LongAnimationFrame-pi',\n 'LongAnimationFrame-pi2',\n 'LongAnimationFrame-no2',\n // 'LongAnimationFrame-no',\n // 'LongAnimationFrame-nopi',\n 'LongAnimationFrame',\n 'LoAF-renderStart',\n 'LoAF-desiredRenderStart',\n 'LoAF-styleAndLayoutStart',\n\n 'ScreenshotMeta',\n];\n\nexport const eventLatencyBreakdownTypeNames = [\n'GenerationToBrowserMain',\n'BrowserMainToRendererCompositor',\n'RendererCompositorQueueingDelay',\n'RendererCompositorProcessing',\n'RendererCompositorFinishedToEndActivate',\n'RendererCompositorFinishedToSendBeginMainFrame',\n'RendererCompositorFinishedToBeginImplFrame',\n'BeginImplFrameToSendBeginMainFrame',\n'RendererCompositorFinishedToCommit',\n'RendererCompositorFinishedToEndCommit',\n'RendererCompositorFinishedToActivation',\n'RendererCompositorFinishedToSubmitCompositorFrame',\n\n'RendererCompositorToMain',\n'RendererMainProcessing',\n'RendererMainFinishedToBeginImplFrame',\n'RendererMainFinishedToSendBeginMainFrame',\n'RendererMainFinishedToCommit',\n'RendererMainFinishedToEndCommit',\n'RendererMainFinishedToActivation',\n'RendererMainFinishedToEndActivate',\n'RendererMainFinishedToSubmitCompositorFrame',\n\n'SendBeginMainFrameToCommit',\n'Commit',\n'EndCommitToActivation',\n'Activation',\n'EndActivateToSubmitCompositorFrame',\n\n// 'SubmitCompositorFrameToPresentationCompositorFrame', // parent phase that can overlap\n'SubmitToReceiveCompositorFrame',\n'ReceiveCompositorFrameToStartDraw',\n'StartDrawToSwapStart',\n'Swap',\n'SwapStartToBufferAvailable',\n'BufferAvailableToBufferReady',\n'BufferReadyToLatch',\n'LatchToSwapEnd',\n'SwapEndToPresentationCompositorFrame',\n];\n\nexport const waterfallTypes = new Map([\n ['EventLatency', 4],\n ['SendBeginMainFrameToCommit', 3],\n ['EndCommitToActivation', 2],\n ['Activation', 2],\n ['EndActivateToSubmitCompositorFrame', 2],\n ['SubmitCompositorFrameToPresentationCompositorFrame', 2],\n]);\n\nexport function handleEvent(event: Types.TraceEvents.TraceEventData): void {\n\n if (Types.TraceEvents.isTraceEventGPUTask(event)) {\n gpuEvents.push(event);\n Helpers.Trace.addEventToProcessThread(event, eventsInProcessThread);\n } else if (\n event.name === 'Screenshot'\n // || event.cat === 'blink.user_timing'\n || someRelevantTraceEventTypes.some(type => event.name === type)\n ) {\n if (event.ph === 'b' || event.ph === 'e') {\n asyncEvts.push(event);\n } else {\n\n if (eventLatencyBreakdownTypeNames.includes(event.name)) {\n // we have two diff events named Commit, we'll exclude the normal mainthread one.\n if (event.name === 'Commit' && !event.cat.includes('cc')) {\n\n } else {\n waterFallEvents.push(event);\n }\n }\n relevantEvts.push(event);\n }\n Helpers.Trace.addEventToProcessThread(event, eventsInProcessThread);\n }\n\n}\n\nexport async function finalize(): Promise<void> {\n const {browserProcessId, browserThreadId} = metaHandlerData();\n const browserThreads = eventsInProcessThread.get(browserProcessId);\n // if (browserThreads) {\n // relevantEvts = browserThreads.get(browserThreadId) || [];\n // }\n\n // TODO: somehow exclude PipelineReporter events that are perfectly nested. (end ts's are often identical in these cases.)\n\n const {gpuProcessId, gpuThreadId, topLevelRendererIds} = metaHandlerData();\n // This cuts down GPU Task count .. 33% of what ift was.\n const ourRendererGPUTasks = gpuEvents.filter(e => topLevelRendererIds.has(e.args.data.renderer_pid));\n relevantEvts = [... relevantEvts, ... ourRendererGPUTasks];\n\n if (handlerState !== HandlerState.INITIALIZED) {\n throw new Error('UberFrames handler is not initialized');\n }\n\n const matchedEvents: Map<string, {\n begin: Types.TraceEvents.TraceEventNestableAsyncBegin | null,\n end: Types.TraceEvents.TraceEventNestableAsyncEnd | null,\n }> = new Map();\n\n for (const event of [...asyncEvts]) {\n const id = Helpers.Trace.extractId(event);\n if (id === undefined) {\n continue;\n }\n // Create a synthetic id to prevent collisions across categories.\n // Console timings can be dispatched with the same id, so use the\n // event name as well to generate unique ids.\n const syntheticId = `${event.cat}:${id}:${event.name}`;\n const otherEventsWithID = Platform.MapUtilities.getWithDefault(matchedEvents, syntheticId, () => {\n return {begin: null, end: null};\n });\n const isStartEvent = event.ph === Types.TraceEvents.Phase.ASYNC_NESTABLE_START;\n const isEndEvent = event.ph === Types.TraceEvents.Phase.ASYNC_NESTABLE_END;\n\n if (isStartEvent) {\n otherEventsWithID.begin = event;\n } else if (isEndEvent) {\n otherEventsWithID.end = event;\n }\n }\n\n for (const [id, eventsPair] of matchedEvents.entries()) {\n if (!eventsPair.begin || !eventsPair.end) {\n // This should never happen, the backend only creates the events once it\n // has them both, so we should never get into this state.\n // If we do, something is very wrong, so let's just drop that problematic event.\n continue;\n }\n\n const event: Types.TraceEvents.TraceEventSyntheticNestableAsyncEvent = {\n cat: eventsPair.end.cat,\n ph: 'X',\n pid: eventsPair.end.pid,\n tid: eventsPair.end.tid,\n id,\n // Both events have the same name, so it doesn't matter which we pick to\n // use as the description\n name: eventsPair.begin.name,\n dur: Types.Timing.MicroSeconds(eventsPair.end.ts - eventsPair.begin.ts),\n ts: eventsPair.begin.ts,\n args: {\n data: {\n beginEvent: eventsPair.begin,\n endEvent: eventsPair.end,\n },\n },\n };\n\n // still I do see some 0's in the real trace. i messed up the c++ side.\n if (event.name === 'EventLatency') {\n eventLatencyIdToFrameSeq[eventsPair.begin.id2.local] = eventsPair.begin.args.event_latency.frame_sequence ?? null;\n }\n if (event.name === 'PipelineReporter') {\n eventLatencyIdToFrameSeq[eventsPair.begin.id2.local] = eventsPair.begin.args.chrome_frame_reporter.frame_sequence ?? null;\n }\n\n const existingDuplicate = syntheticEvents.find(e => {\n return e.name === event.name &&\n e.ts === event.ts &&\n e.dur === event.dur &&\n e.id2?.local === event.id2?.local &&\n e.tid === event.tid &&\n e.pid === event.pid;\n });\n // Some eventlatnecy evts are emitted on multiple categories separtely. leave them otu\n if (existingDuplicate) {continue;}\n\n if (eventLatencyBreakdownTypeNames.includes(event.name)) {\n waterFallEvents.push(event);\n }\n syntheticEvents.push(event);\n }\n // drop pipelinereporter that werent presented. or browser process.\n // TODO: do this earlier? iunno\n // EDIT: disabled filtering since ubeframes is a mess anyway.\n syntheticEvents = syntheticEvents.filter(e => {\n return true;\n if (e.name !== 'PipelineReporter') {return true;}\n return topLevelRendererIds.has(e.pid) &&\n e.args.data.beginEvent.args.chrome_frame_reporter.frame_type !== 'FORKED' &&\n e.args.data.beginEvent.args.chrome_frame_reporter.state === 'STATE_PRESENTED_ALL';\n });\n\n handlerState = HandlerState.FINALIZED;\n}\n\n// TODO: is it okay to do work here? this is only called once? (or should i put the _work_ in finalize)\n// so far looks like its only called once, so whatev.\nexport function data(): UberFramesData {\n if (handlerState !== HandlerState.FINALIZED) {\n throw new Error('UberFrames handler is not finalized');\n }\n return {\n nonWaterfallEvts: [...relevantEvts, ...syntheticEvents].sort((event1, event2) => event1.ts - event2.ts),\n waterFallEvts: [...waterFallEvents].sort((event1, event2) => event1.ts - event2.ts),\n eventLatencyIdToFrameSeq,\n };\n}\n\nexport function deps(): TraceEventHandlerName[] {\n return ['Meta'];\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"compilerOptions":{"composite":true,"outDir":".","baseUrl":".","rootDir":"../../../../../../front_end/models/trace"},"files":["../../../../../../front_end/models/trace/trace-legacy.ts"],"references":[{"path":"./bundle-tsconfig.json"}]}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import * as SDK from "../../../core/sdk/sdk.js";
|
|
2
|
-
const singleNodeCache = /* @__PURE__ */ new Map();
|
|
3
|
-
const batchNodesCache = /* @__PURE__ */ new Map();
|
|
4
|
-
export function _TEST_clearCache() {
|
|
5
|
-
singleNodeCache.clear();
|
|
6
|
-
batchNodesCache.clear();
|
|
7
|
-
}
|
|
8
|
-
export async function forNodeId(modelData, nodeId) {
|
|
9
|
-
const fromCache = singleNodeCache.get(modelData)?.get(nodeId);
|
|
10
|
-
if (fromCache !== void 0) {
|
|
11
|
-
return fromCache;
|
|
12
|
-
}
|
|
13
|
-
const target = SDK.TargetManager.TargetManager.instance().mainFrameTarget();
|
|
14
|
-
const domModel = target?.model(SDK.DOMModel.DOMModel);
|
|
15
|
-
if (!domModel) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
const domNodesMap = await domModel.pushNodesByBackendIdsToFrontend(/* @__PURE__ */ new Set([nodeId]));
|
|
19
|
-
const result = domNodesMap?.get(nodeId) || null;
|
|
20
|
-
const cacheForModel = singleNodeCache.get(modelData) || /* @__PURE__ */ new Map();
|
|
21
|
-
cacheForModel.set(nodeId, result);
|
|
22
|
-
singleNodeCache.set(modelData, cacheForModel);
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
export async function forMultipleNodeIds(modelData, nodeIds) {
|
|
26
|
-
const fromCache = batchNodesCache.get(modelData)?.get(nodeIds);
|
|
27
|
-
if (fromCache) {
|
|
28
|
-
return fromCache;
|
|
29
|
-
}
|
|
30
|
-
const target = SDK.TargetManager.TargetManager.instance().mainFrameTarget();
|
|
31
|
-
const domModel = target?.model(SDK.DOMModel.DOMModel);
|
|
32
|
-
if (!domModel) {
|
|
33
|
-
return /* @__PURE__ */ new Map();
|
|
34
|
-
}
|
|
35
|
-
const domNodesMap = await domModel.pushNodesByBackendIdsToFrontend(nodeIds) || /* @__PURE__ */ new Map();
|
|
36
|
-
const cacheForModel = batchNodesCache.get(modelData) || /* @__PURE__ */ new Map();
|
|
37
|
-
cacheForModel.set(nodeIds, domNodesMap);
|
|
38
|
-
batchNodesCache.set(modelData, cacheForModel);
|
|
39
|
-
return domNodesMap;
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=DOMNodeLookup.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../front_end/models/trace/sdk_services/DOMNodeLookup.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright 2022 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport type * as Handlers from '../handlers/handlers.js';\nimport type * as Protocol from '../../../generated/protocol.js';\nimport * as SDK from '../../../core/sdk/sdk.js';\n\nconst singleNodeCache =\n new Map<Handlers.Types.TraceParseData, Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode|null>>();\nconst batchNodesCache = new Map<\n Handlers.Types.TraceParseData,\n Map<Set<Protocol.DOM.BackendNodeId>, Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode|null>>>();\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function _TEST_clearCache(): void {\n singleNodeCache.clear();\n batchNodesCache.clear();\n}\n\n/**\n * Looks up the DOM Node on the page for the given BackendNodeId. Uses the\n * provided TraceParseData as the cache and will cache the result after the\n * first lookup.\n */\nexport async function forNodeId(\n modelData: Handlers.Types.TraceParseData, nodeId: Protocol.DOM.BackendNodeId): Promise<SDK.DOMModel.DOMNode|null> {\n const fromCache = singleNodeCache.get(modelData)?.get(nodeId);\n if (fromCache !== undefined) {\n return fromCache;\n }\n\n const target = SDK.TargetManager.TargetManager.instance().mainFrameTarget();\n const domModel = target?.model(SDK.DOMModel.DOMModel);\n if (!domModel) {\n return null;\n }\n\n const domNodesMap = await domModel.pushNodesByBackendIdsToFrontend(new Set([nodeId]));\n const result = domNodesMap?.get(nodeId) || null;\n\n const cacheForModel =\n singleNodeCache.get(modelData) || new Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode|null>();\n cacheForModel.set(nodeId, result);\n singleNodeCache.set(modelData, cacheForModel);\n\n return result;\n}\n\n/**\n * Takes a set of Protocol.DOM.BackendNodeId ids and will return a map of NodeId=>DOMNode.\n * Results are cached based on 1) the provided TraceParseData and 2) the provided set of IDs.\n */\nexport async function forMultipleNodeIds(\n modelData: Handlers.Types.TraceParseData,\n nodeIds: Set<Protocol.DOM.BackendNodeId>): Promise<Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode|null>> {\n const fromCache = batchNodesCache.get(modelData)?.get(nodeIds);\n if (fromCache) {\n return fromCache;\n }\n const target = SDK.TargetManager.TargetManager.instance().mainFrameTarget();\n const domModel = target?.model(SDK.DOMModel.DOMModel);\n if (!domModel) {\n return new Map();\n }\n\n const domNodesMap = await domModel.pushNodesByBackendIdsToFrontend(nodeIds) || new Map();\n\n const cacheForModel = batchNodesCache.get(modelData) ||\n new Map<Set<Protocol.DOM.BackendNodeId>, Map<Protocol.DOM.BackendNodeId, SDK.DOMModel.DOMNode|null>>();\n cacheForModel.set(nodeIds, domNodesMap);\n batchNodesCache.set(modelData, cacheForModel);\n\n return domNodesMap;\n}\n"],
|
|
5
|
-
"mappings": "AAMA;AAEA,MAAM,kBACF,oBAAI;AACR,MAAM,kBAAkB,oBAAI;AAKrB,mCAAkC;AACvC,kBAAgB;AAChB,kBAAgB;AAAA;AAQlB,gCACI,WAA0C,QAAwE;AACpH,QAAM,YAAY,gBAAgB,IAAI,YAAY,IAAI;AACtD,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA;AAGT,QAAM,SAAS,IAAI,cAAc,cAAc,WAAW;AAC1D,QAAM,WAAW,QAAQ,MAAM,IAAI,SAAS;AAC5C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA;AAGT,QAAM,cAAc,MAAM,SAAS,gCAAgC,oBAAI,IAAI,CAAC;AAC5E,QAAM,SAAS,aAAa,IAAI,WAAW;AAE3C,QAAM,gBACF,gBAAgB,IAAI,cAAc,oBAAI;AAC1C,gBAAc,IAAI,QAAQ;AAC1B,kBAAgB,IAAI,WAAW;AAE/B,SAAO;AAAA;AAOT,yCACI,WACA,SAA+G;AACjH,QAAM,YAAY,gBAAgB,IAAI,YAAY,IAAI;AACtD,MAAI,WAAW;AACb,WAAO;AAAA;AAET,QAAM,SAAS,IAAI,cAAc,cAAc,WAAW;AAC1D,QAAM,WAAW,QAAQ,MAAM,IAAI,SAAS;AAC5C,MAAI,CAAC,UAAU;AACb,WAAO,oBAAI;AAAA;AAGb,QAAM,cAAc,MAAM,SAAS,gCAAgC,YAAY,oBAAI;AAEnF,QAAM,gBAAgB,gBAAgB,IAAI,cACtC,oBAAI;AACR,gBAAc,IAAI,SAAS;AAC3B,kBAAgB,IAAI,WAAW;AAE/B,SAAO;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import * as SDK from "../../../core/sdk/sdk.js";
|
|
2
|
-
import { forNodeId } from "./DOMNodeLookup.js";
|
|
3
|
-
const layoutShiftSourcesCache = /* @__PURE__ */ new Map();
|
|
4
|
-
const normalizedNodesCache = /* @__PURE__ */ new Map();
|
|
5
|
-
export function _TEST_clearCache() {
|
|
6
|
-
layoutShiftSourcesCache.clear();
|
|
7
|
-
normalizedNodesCache.clear();
|
|
8
|
-
}
|
|
9
|
-
export async function sourcesForLayoutShift(modelData, event) {
|
|
10
|
-
const fromCache = layoutShiftSourcesCache.get(modelData)?.get(event);
|
|
11
|
-
if (fromCache) {
|
|
12
|
-
return fromCache;
|
|
13
|
-
}
|
|
14
|
-
const impactedNodes = event.args.data?.impacted_nodes;
|
|
15
|
-
if (!impactedNodes) {
|
|
16
|
-
return [];
|
|
17
|
-
}
|
|
18
|
-
const sources = [];
|
|
19
|
-
await Promise.all(impactedNodes.map(async (node) => {
|
|
20
|
-
const domNode = await forNodeId(modelData, node.node_id);
|
|
21
|
-
if (domNode) {
|
|
22
|
-
sources.push({
|
|
23
|
-
previousRect: new DOMRect(node.old_rect[0], node.old_rect[1], node.old_rect[2], node.old_rect[3]),
|
|
24
|
-
currentRect: new DOMRect(node.new_rect[0], node.new_rect[1], node.new_rect[2], node.new_rect[3]),
|
|
25
|
-
node: domNode
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
}));
|
|
29
|
-
const cacheForModel = layoutShiftSourcesCache.get(modelData) || /* @__PURE__ */ new Map();
|
|
30
|
-
cacheForModel.set(event, sources);
|
|
31
|
-
layoutShiftSourcesCache.set(modelData, cacheForModel);
|
|
32
|
-
return sources;
|
|
33
|
-
}
|
|
34
|
-
export async function normalizedImpactedNodesForLayoutShift(modelData, event) {
|
|
35
|
-
const fromCache = normalizedNodesCache.get(modelData)?.get(event);
|
|
36
|
-
if (fromCache) {
|
|
37
|
-
return fromCache;
|
|
38
|
-
}
|
|
39
|
-
const impactedNodes = event.args?.data?.impacted_nodes;
|
|
40
|
-
if (!impactedNodes) {
|
|
41
|
-
return [];
|
|
42
|
-
}
|
|
43
|
-
let viewportScale = null;
|
|
44
|
-
const target = SDK.TargetManager.TargetManager.instance().mainFrameTarget();
|
|
45
|
-
const evaluateResult = await target?.runtimeAgent().invoke_evaluate({ expression: "window.devicePixelRatio" });
|
|
46
|
-
if (evaluateResult?.result.type === "number") {
|
|
47
|
-
viewportScale = evaluateResult?.result.value ?? null;
|
|
48
|
-
}
|
|
49
|
-
if (!viewportScale) {
|
|
50
|
-
return impactedNodes;
|
|
51
|
-
}
|
|
52
|
-
const normalizedNodes = [];
|
|
53
|
-
for (const impactedNode of impactedNodes) {
|
|
54
|
-
const newNode = { ...impactedNode };
|
|
55
|
-
for (let i = 0; i < impactedNode.old_rect.length; i++) {
|
|
56
|
-
newNode.old_rect[i] /= viewportScale;
|
|
57
|
-
}
|
|
58
|
-
for (let i = 0; i < impactedNode.new_rect.length; i++) {
|
|
59
|
-
newNode.new_rect[i] /= viewportScale;
|
|
60
|
-
}
|
|
61
|
-
normalizedNodes.push(newNode);
|
|
62
|
-
}
|
|
63
|
-
const cacheForModel = normalizedNodesCache.get(modelData) || /* @__PURE__ */ new Map();
|
|
64
|
-
cacheForModel.set(event, normalizedNodes);
|
|
65
|
-
normalizedNodesCache.set(modelData, cacheForModel);
|
|
66
|
-
return normalizedNodes;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=LayoutShifts.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../front_end/models/trace/sdk_services/LayoutShifts.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright 2022 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\nimport type * as Handlers from '../handlers/handlers.js';\nimport type * as Types from '../types/types.js';\nimport * as SDK from '../../../core/sdk/sdk.js';\n\nimport {forNodeId} from './DOMNodeLookup.js';\n\nconst layoutShiftSourcesCache = new Map<\n Handlers.Types.TraceParseData, Map<Types.TraceEvents.TraceEventLayoutShift, readonly LayoutShiftSource[]>>();\n\nconst normalizedNodesCache = new Map<\n Handlers.Types.TraceParseData,\n Map<Types.TraceEvents.TraceEventLayoutShift, readonly Types.TraceEvents.TraceImpactedNode[]>>();\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function _TEST_clearCache(): void {\n layoutShiftSourcesCache.clear();\n normalizedNodesCache.clear();\n}\n\nexport interface LayoutShiftSource {\n previousRect: DOMRect;\n currentRect: DOMRect;\n node: SDK.DOMModel.DOMNode;\n}\n\n/**\n * Calculates and returns a list of sources for a LayoutShift.\n * Here, a source is considered as a node that moved and contributed to the\n * given LayoutShift existing and the score it was given. Each source returned\n * contains a reference to the DOM Node, and its dimensions (as a DOMRect), both\n * before and now, so we can see how this node changed and how that impacted the\n * layout shift.\n *\n * This data is cached based on the provided model data and the given layout\n * shift, so it is is safe to call multiple times with the same input.\n */\nexport async function sourcesForLayoutShift(\n modelData: Handlers.Types.TraceParseData,\n event: Types.TraceEvents.TraceEventLayoutShift): Promise<readonly LayoutShiftSource[]> {\n const fromCache = layoutShiftSourcesCache.get(modelData)?.get(event);\n if (fromCache) {\n return fromCache;\n }\n const impactedNodes = event.args.data?.impacted_nodes;\n if (!impactedNodes) {\n return [];\n }\n const sources: LayoutShiftSource[] = [];\n await Promise.all(impactedNodes.map(async node => {\n const domNode = await forNodeId(modelData, node.node_id);\n if (domNode) {\n sources.push({\n previousRect: new DOMRect(node.old_rect[0], node.old_rect[1], node.old_rect[2], node.old_rect[3]),\n currentRect: new DOMRect(node.new_rect[0], node.new_rect[1], node.new_rect[2], node.new_rect[3]),\n node: domNode,\n });\n }\n }));\n const cacheForModel =\n layoutShiftSourcesCache.get(modelData) || new Map<Types.TraceEvents.TraceEventLayoutShift, LayoutShiftSource[]>();\n cacheForModel.set(event, sources);\n layoutShiftSourcesCache.set(modelData, cacheForModel);\n return sources;\n}\n\n/**\n * Takes a LayoutShift and normalizes its node dimensions based on the device\n * pixel ratio (DPR) of the user's display.\n * This is required because the Layout Instability API is not based on CSS\n * pixels, but physical pixels. Therefore we need to map these to normalized CSS\n * pixels if we can. For example, if the user is on a device with a DPR of 2,\n * the values of the node dimensions reported by the Instability API need to be\n * divided by 2 to be accurate.\n * This function is safe to call multiple times as results are cached based on\n * the provided model data.\n * See https://crbug.com/1300309 for details.\n */\nexport async function normalizedImpactedNodesForLayoutShift(\n modelData: Handlers.Types.TraceParseData,\n event: Types.TraceEvents.TraceEventLayoutShift): Promise<readonly Types.TraceEvents.TraceImpactedNode[]> {\n const fromCache = normalizedNodesCache.get(modelData)?.get(event);\n if (fromCache) {\n return fromCache;\n }\n const impactedNodes = event.args?.data?.impacted_nodes;\n if (!impactedNodes) {\n return [];\n }\n\n let viewportScale: number|null = null;\n const target = SDK.TargetManager.TargetManager.instance().mainFrameTarget();\n // Get the CSS-to-physical pixel ratio of the device the inspected\n // target is running at.\n const evaluateResult = await target?.runtimeAgent().invoke_evaluate({expression: 'window.devicePixelRatio'});\n if (evaluateResult?.result.type === 'number') {\n viewportScale = evaluateResult?.result.value as number ?? null;\n }\n\n if (!viewportScale) {\n // Bail and return the nodes as is.\n return impactedNodes;\n }\n\n const normalizedNodes: Types.TraceEvents.TraceImpactedNode[] = [];\n for (const impactedNode of impactedNodes) {\n const newNode = {...impactedNode};\n for (let i = 0; i < impactedNode.old_rect.length; i++) {\n newNode.old_rect[i] /= viewportScale;\n }\n for (let i = 0; i < impactedNode.new_rect.length; i++) {\n newNode.new_rect[i] /= viewportScale;\n }\n normalizedNodes.push(newNode);\n }\n\n const cacheForModel = normalizedNodesCache.get(modelData) ||\n new Map<Types.TraceEvents.TraceEventLayoutShift, readonly Types.TraceEvents.TraceImpactedNode[]>();\n cacheForModel.set(event, normalizedNodes);\n normalizedNodesCache.set(modelData, cacheForModel);\n\n return normalizedNodes;\n}\n"],
|
|
5
|
-
"mappings": "AAKA;AAEA;AAEA,MAAM,0BAA0B,oBAAI;AAGpC,MAAM,uBAAuB,oBAAI;AAK1B,mCAAkC;AACvC,0BAAwB;AACxB,uBAAqB;AAAA;AAoBvB,4CACI,WACA,OAAuF;AACzF,QAAM,YAAY,wBAAwB,IAAI,YAAY,IAAI;AAC9D,MAAI,WAAW;AACb,WAAO;AAAA;AAET,QAAM,gBAAgB,MAAM,KAAK,MAAM;AACvC,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA;AAET,QAAM,UAA+B;AACrC,QAAM,QAAQ,IAAI,cAAc,IAAI,OAAM,SAAQ;AAChD,UAAM,UAAU,MAAM,UAAU,WAAW,KAAK;AAChD,QAAI,SAAS;AACX,cAAQ,KAAK;AAAA,QACX,cAAc,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI,KAAK,SAAS;AAAA,QAC9F,aAAa,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI,KAAK,SAAS,IAAI,KAAK,SAAS;AAAA,QAC7F,MAAM;AAAA;AAAA;AAAA;AAIZ,QAAM,gBACF,wBAAwB,IAAI,cAAc,oBAAI;AAClD,gBAAc,IAAI,OAAO;AACzB,0BAAwB,IAAI,WAAW;AACvC,SAAO;AAAA;AAeT,4DACI,WACA,OAAyG;AAC3G,QAAM,YAAY,qBAAqB,IAAI,YAAY,IAAI;AAC3D,MAAI,WAAW;AACb,WAAO;AAAA;AAET,QAAM,gBAAgB,MAAM,MAAM,MAAM;AACxC,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA;AAGT,MAAI,gBAA6B;AACjC,QAAM,SAAS,IAAI,cAAc,cAAc,WAAW;AAG1D,QAAM,iBAAiB,MAAM,QAAQ,eAAe,gBAAgB,EAAC,YAAY;AACjF,MAAI,gBAAgB,OAAO,SAAS,UAAU;AAC5C,oBAAgB,gBAAgB,OAAO,SAAmB;AAAA;AAG5D,MAAI,CAAC,eAAe;AAElB,WAAO;AAAA;AAGT,QAAM,kBAAyD;AAC/D,aAAW,gBAAgB,eAAe;AACxC,UAAM,UAAU,KAAI;AACpB,aAAS,IAAI,GAAG,IAAI,aAAa,SAAS,QAAQ,KAAK;AACrD,cAAQ,SAAS,MAAM;AAAA;AAEzB,aAAS,IAAI,GAAG,IAAI,aAAa,SAAS,QAAQ,KAAK;AACrD,cAAQ,SAAS,MAAM;AAAA;AAEzB,oBAAgB,KAAK;AAAA;AAGvB,QAAM,gBAAgB,qBAAqB,IAAI,cAC3C,oBAAI;AACR,gBAAc,IAAI,OAAO;AACzB,uBAAqB,IAAI,WAAW;AAEpC,SAAO;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"compilerOptions":{"composite":true,"outDir":".","baseUrl":".","rootDir":"../../../../../../../front_end/models/trace/sdk_services"},"files":["../../../../../../../front_end/models/trace/sdk_services/sdk_services.ts"],"references":[{"path":"./sdk_services-tsconfig.json"}]}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"allowJs": true,
|
|
4
|
-
"checkJs": true,
|
|
5
|
-
"composite": true,
|
|
6
|
-
"declaration": true,
|
|
7
|
-
"experimentalDecorators": true,
|
|
8
|
-
"forceConsistentCasingInFileNames": true,
|
|
9
|
-
"inlineSources": true,
|
|
10
|
-
"lib": [
|
|
11
|
-
"esnext",
|
|
12
|
-
"dom",
|
|
13
|
-
"dom.iterable"
|
|
14
|
-
],
|
|
15
|
-
"module": "esnext",
|
|
16
|
-
"noEmitOnError": true,
|
|
17
|
-
"noFallthroughCasesInSwitch": true,
|
|
18
|
-
"noImplicitReturns": true,
|
|
19
|
-
"outDir": ".",
|
|
20
|
-
"rootDir": "../../../../../../../front_end/models/trace/sdk_services",
|
|
21
|
-
"skipLibCheck": true,
|
|
22
|
-
"sourceMap": true,
|
|
23
|
-
"strict": true,
|
|
24
|
-
"target": "esnext",
|
|
25
|
-
"tsBuildInfoFile": "devtools_entrypoint-bundle-typescript-tsconfig.json.tsbuildinfo",
|
|
26
|
-
"typeRoots": [],
|
|
27
|
-
"useUnknownInCatchVariables": false
|
|
28
|
-
},
|
|
29
|
-
"files": [
|
|
30
|
-
"../../../../../../../front_end/models/trace/sdk_services/sdk_services.ts",
|
|
31
|
-
"../../../../../../../front_end/legacy/legacy-defs.d.ts",
|
|
32
|
-
"../../../../../../../front_end/global_typings/global_defs.d.ts",
|
|
33
|
-
"../../../../../../../front_end/global_typings/request_idle_callback.d.ts",
|
|
34
|
-
"../../../../../../../node_modules/@types/filesystem/index.d.ts"
|
|
35
|
-
],
|
|
36
|
-
"references": [
|
|
37
|
-
{
|
|
38
|
-
"path": "./sdk_services-tsconfig.json"
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"allowJs": true,
|
|
4
|
-
"checkJs": true,
|
|
5
|
-
"composite": true,
|
|
6
|
-
"declaration": true,
|
|
7
|
-
"experimentalDecorators": true,
|
|
8
|
-
"forceConsistentCasingInFileNames": true,
|
|
9
|
-
"inlineSources": true,
|
|
10
|
-
"lib": [
|
|
11
|
-
"esnext",
|
|
12
|
-
"dom",
|
|
13
|
-
"dom.iterable"
|
|
14
|
-
],
|
|
15
|
-
"module": "esnext",
|
|
16
|
-
"noEmitOnError": true,
|
|
17
|
-
"noFallthroughCasesInSwitch": true,
|
|
18
|
-
"noImplicitReturns": true,
|
|
19
|
-
"outDir": ".",
|
|
20
|
-
"rootDir": "../../../../../../../front_end/models/trace/sdk_services",
|
|
21
|
-
"skipLibCheck": true,
|
|
22
|
-
"sourceMap": true,
|
|
23
|
-
"strict": true,
|
|
24
|
-
"target": "esnext",
|
|
25
|
-
"tsBuildInfoFile": "sdk_services-tsconfig.json.tsbuildinfo",
|
|
26
|
-
"typeRoots": [],
|
|
27
|
-
"useUnknownInCatchVariables": false
|
|
28
|
-
},
|
|
29
|
-
"files": [
|
|
30
|
-
"../../../../../../../front_end/models/trace/sdk_services/DOMNodeLookup.ts",
|
|
31
|
-
"../../../../../../../front_end/models/trace/sdk_services/LayoutShifts.ts",
|
|
32
|
-
"../../../../../../../front_end/legacy/legacy-defs.d.ts",
|
|
33
|
-
"../../../../../../../front_end/global_typings/global_defs.d.ts",
|
|
34
|
-
"../../../../../../../front_end/global_typings/request_idle_callback.d.ts",
|
|
35
|
-
"../../../../../../../node_modules/@types/filesystem/index.d.ts"
|
|
36
|
-
],
|
|
37
|
-
"references": [
|
|
38
|
-
{
|
|
39
|
-
"path": "../../../core/platform/bundle-tsconfig.json"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"path": "../../../core/sdk/bundle-tsconfig.json"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"path": "../../../generated/generated-tsconfig.json"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"path": "../handlers/bundle-tsconfig.json"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"path": "../helpers/bundle-tsconfig.json"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"path": "../types/bundle-tsconfig.json"
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../front_end/models/trace/sdk_services/sdk_services.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright 2022 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as DOMNodeLookup from './DOMNodeLookup.js';\nimport * as LayoutShifts from './LayoutShifts.js';\n\nexport {\n DOMNodeLookup,\n LayoutShifts,\n};\n"],
|
|
5
|
-
"mappings": "AAIA;AACA;AAEA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as TraceModule from "./trace.js";
|
|
2
|
-
self.SDK = self.SDK || {};
|
|
3
|
-
SDK = SDK || {};
|
|
4
|
-
SDK.TracingManager = TraceModule.TracingManager.TracingManager;
|
|
5
|
-
SDK.TracingModel = TraceModule.Legacy.TracingModel;
|
|
6
|
-
SDK.TracingModel.Event = TraceModule.Legacy.Event;
|
|
7
|
-
SDK.TracingModel.LegacyTopLevelEventCategory = TraceModule.Legacy.LegacyTopLevelEventCategory;
|
|
8
|
-
SDK.TracingModel.DevToolsMetadataEventCategory = TraceModule.Legacy.DevToolsMetadataEventCategory;
|
|
9
|
-
self.Trace = self.Trace || {};
|
|
10
|
-
Trace = Trace || {};
|
|
11
|
-
Trace.TracingManager = TraceModule.TracingManager.TracingManager;
|
|
12
|
-
Trace.TracingModel = TraceModule.Legacy.TracingModel;
|
|
13
|
-
Trace.TracingModel.Event = TraceModule.Legacy.Event;
|
|
14
|
-
Trace.TracingModel.LegacyTopLevelEventCategory = TraceModule.Legacy.LegacyTopLevelEventCategory;
|
|
15
|
-
Trace.TracingModel.DevToolsMetadataEventCategory = TraceModule.Legacy.DevToolsMetadataEventCategory;
|
|
16
|
-
//# sourceMappingURL=trace-legacy.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../front_end/models/trace/trace-legacy.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n// @ts-nocheck\n\nimport * as TraceModule from './trace.js';\n\n// All the Layout Tests expect to find the TracingManager and TracingModel on\n// SDK, not on the Trace namespace. To enable the frontend change to land,\n// these are exposed on both here. We can then update the layout tests in a\n// separate CL, and then update this code so it does not change the SDK global\n\nself.SDK = self.SDK || {};\nSDK = SDK || {};\n/** @constructor */\nSDK.TracingManager = TraceModule.TracingManager.TracingManager;\n\n/** @constructor */\nSDK.TracingModel = TraceModule.Legacy.TracingModel;\n\n/** @constructor */\nSDK.TracingModel.Event = TraceModule.Legacy.Event;\n\nSDK.TracingModel.LegacyTopLevelEventCategory = TraceModule.Legacy.LegacyTopLevelEventCategory;\nSDK.TracingModel.DevToolsMetadataEventCategory = TraceModule.Legacy.DevToolsMetadataEventCategory;\n\nself.Trace = self.Trace || {};\nTrace = Trace || {};\n/** @constructor */\nTrace.TracingManager = TraceModule.TracingManager.TracingManager;\n\n/** @constructor */\nTrace.TracingModel = TraceModule.Legacy.TracingModel;\n\n/** @constructor */\nTrace.TracingModel.Event = TraceModule.Legacy.Event;\n\nTrace.TracingModel.LegacyTopLevelEventCategory = TraceModule.Legacy.LegacyTopLevelEventCategory;\nTrace.TracingModel.DevToolsMetadataEventCategory = TraceModule.Legacy.DevToolsMetadataEventCategory;\n"],
|
|
5
|
-
"mappings": "AAMA;AAOA,KAAK,MAAM,KAAK,OAAO;AACvB,MAAM,OAAO;AAEb,IAAI,iBAAiB,YAAY,eAAe;AAGhD,IAAI,eAAe,YAAY,OAAO;AAGtC,IAAI,aAAa,QAAQ,YAAY,OAAO;AAE5C,IAAI,aAAa,8BAA8B,YAAY,OAAO;AAClE,IAAI,aAAa,gCAAgC,YAAY,OAAO;AAEpE,KAAK,QAAQ,KAAK,SAAS;AAC3B,QAAQ,SAAS;AAEjB,MAAM,iBAAiB,YAAY,eAAe;AAGlD,MAAM,eAAe,YAAY,OAAO;AAGxC,MAAM,aAAa,QAAQ,YAAY,OAAO;AAE9C,MAAM,aAAa,8BAA8B,YAAY,OAAO;AACpE,MAAM,aAAa,gCAAgC,YAAY,OAAO;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|