@paulirish/trace_engine 0.0.11 → 0.0.13

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.
Files changed (147) hide show
  1. package/core/platform/{array-utilities.js → ArrayUtilities.js} +1 -1
  2. package/core/platform/ArrayUtilities.js.map +1 -0
  3. package/core/platform/{brand.js → Brand.js} +1 -1
  4. package/core/platform/{brand.js.map → Brand.js.map} +1 -1
  5. package/core/platform/{dom-utilities.js → DOMUtilities.js} +1 -1
  6. package/core/platform/DOMUtilities.js.map +1 -0
  7. package/core/platform/{date-utilities.js → DateUtilities.js} +1 -1
  8. package/core/platform/DateUtilities.js.map +1 -0
  9. package/core/platform/DevToolsPath.d.ts +1 -1
  10. package/core/platform/DevToolsPath.js.map +1 -1
  11. package/core/platform/{keyboard-utilities.js → KeyboardUtilities.js} +1 -1
  12. package/core/platform/KeyboardUtilities.js.map +1 -0
  13. package/core/platform/{map-utilities.js → MapUtilities.js} +1 -1
  14. package/core/platform/MapUtilities.js.map +1 -0
  15. package/core/platform/{number-utilities.js → NumberUtilities.js} +1 -1
  16. package/core/platform/NumberUtilities.js.map +1 -0
  17. package/core/platform/{promise-utilities.js → PromiseUtilities.js} +1 -1
  18. package/core/platform/PromiseUtilities.js.map +1 -0
  19. package/core/platform/{set-utilities.js → SetUtilities.js} +1 -1
  20. package/core/platform/SetUtilities.js.map +1 -0
  21. package/core/platform/{string-utilities.js → StringUtilities.js} +4 -4
  22. package/core/platform/StringUtilities.js.map +1 -0
  23. package/core/platform/Timing.d.ts +1 -1
  24. package/core/platform/Timing.js.map +1 -1
  25. package/core/platform/{typescript-utilities.js → TypescriptUtilities.js} +1 -1
  26. package/core/platform/TypescriptUtilities.js.map +1 -0
  27. package/core/platform/UIString.d.ts +1 -1
  28. package/core/platform/UIString.js.map +1 -1
  29. package/core/platform/platform-tsconfig.json +11 -16
  30. package/core/platform/platform.d.ts +12 -13
  31. package/core/platform/platform.js +16 -17
  32. package/core/platform/platform.js.map +1 -1
  33. package/generated/protocol.d.ts +83 -28
  34. package/models/trace/ModelImpl.d.ts +3 -0
  35. package/models/trace/ModelImpl.js +10 -2
  36. package/models/trace/ModelImpl.js.map +1 -1
  37. package/models/trace/Processor.d.ts +3 -1
  38. package/models/trace/Processor.js +43 -4
  39. package/models/trace/Processor.js.map +1 -1
  40. package/models/trace/TracingManager.js.map +1 -1
  41. package/models/trace/extras/FetchNodes.d.ts +10 -3
  42. package/models/trace/extras/FetchNodes.js +14 -1
  43. package/models/trace/extras/FetchNodes.js.map +1 -1
  44. package/models/trace/handlers/NetworkRequestsHandler.js +5 -0
  45. package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
  46. package/models/trace/handlers/RendererHandler.js +2 -1
  47. package/models/trace/handlers/RendererHandler.js.map +1 -1
  48. package/models/trace/insights/InsightRunners.d.ts +1 -0
  49. package/models/trace/insights/InsightRunners.js +5 -0
  50. package/models/trace/insights/InsightRunners.js.map +1 -0
  51. package/models/trace/insights/RenderBlocking.d.ts +6 -0
  52. package/models/trace/insights/RenderBlocking.js +27 -0
  53. package/models/trace/insights/RenderBlocking.js.map +1 -0
  54. package/models/trace/insights/bundle-tsconfig.json +1 -0
  55. package/models/trace/{frames → insights}/devtools_entrypoint-bundle-typescript-tsconfig.json +5 -4
  56. package/models/trace/{worker/processor-tsconfig.json → insights/insights-tsconfig.json} +9 -8
  57. package/models/trace/insights/insights.d.ts +2 -0
  58. package/models/trace/insights/insights.js +6 -0
  59. package/models/trace/insights/insights.js.map +1 -0
  60. package/models/trace/insights/types.d.ts +33 -0
  61. package/models/trace/insights/types.js +5 -0
  62. package/models/trace/insights/types.js.map +1 -0
  63. package/models/trace/trace-tsconfig.json +3 -0
  64. package/models/trace/trace.d.ts +2 -1
  65. package/models/trace/trace.js +2 -1
  66. package/models/trace/trace.js.map +1 -1
  67. package/models/trace/types/TraceEvents.d.ts +24 -0
  68. package/models/trace/types/TraceEvents.js.map +1 -1
  69. package/package.json +7 -5
  70. package/LICENSE +0 -27
  71. package/PAUL.readme.md +0 -5
  72. package/README.md +0 -156
  73. package/analyze-trace.mjs +0 -184
  74. package/core/platform/array-utilities.js.map +0 -1
  75. package/core/platform/date-utilities.js.map +0 -1
  76. package/core/platform/dcheck-tsconfig.json +0 -8
  77. package/core/platform/dcheck.d.ts +0 -4
  78. package/core/platform/dcheck.js +0 -5
  79. package/core/platform/devtools_entrypoint-bundle-tsconfig-tsconfig.json +0 -40
  80. package/core/platform/dom-utilities.js.map +0 -1
  81. package/core/platform/keyboard-utilities.js.map +0 -1
  82. package/core/platform/map-utilities.js.map +0 -1
  83. package/core/platform/number-utilities.js.map +0 -1
  84. package/core/platform/platform.js.compressed +0 -0
  85. package/core/platform/platform.js.hash +0 -1
  86. package/core/platform/platform.prebundle.d.ts +0 -15
  87. package/core/platform/platform.prebundle.js +0 -50
  88. package/core/platform/platform.prebundle.js.map +0 -1
  89. package/core/platform/platform.prebundle.ts +0 -64
  90. package/core/platform/promise-utilities.js.map +0 -1
  91. package/core/platform/set-utilities.js.map +0 -1
  92. package/core/platform/string-utilities.js.map +0 -1
  93. package/core/platform/typescript-utilities.js.map +0 -1
  94. package/models/trace/SDKServices.js +0 -104
  95. package/models/trace/SDKServices.js.map +0 -7
  96. package/models/trace/TraceProcessor.js +0 -133
  97. package/models/trace/TraceProcessor.js.map +0 -7
  98. package/models/trace/TreeManipulator.js +0 -85
  99. package/models/trace/TreeManipulator.js.map +0 -7
  100. package/models/trace/devtools_entrypoint-legacy-typescript-tsconfig.json +0 -43
  101. package/models/trace/frames/TimelineFrameModel.js +0 -392
  102. package/models/trace/frames/TimelineFrameModel.js.map +0 -7
  103. package/models/trace/frames/bundle-tsconfig.json +0 -1
  104. package/models/trace/frames/frames-tsconfig.json +0 -58
  105. package/models/trace/frames/frames.js +0 -5
  106. package/models/trace/frames/frames.js.map +0 -7
  107. package/models/trace/handlers/Migration.js +0 -27
  108. package/models/trace/handlers/Migration.js.map +0 -7
  109. package/models/trace/handlers/UberFramesHandler.js +0 -293
  110. package/models/trace/handlers/UberFramesHandler.js.map +0 -7
  111. package/models/trace/legacy-tsconfig.json +0 -1
  112. package/models/trace/sdk_services/DOMNodeLookup.js +0 -41
  113. package/models/trace/sdk_services/DOMNodeLookup.js.map +0 -7
  114. package/models/trace/sdk_services/LayoutShifts.js +0 -68
  115. package/models/trace/sdk_services/LayoutShifts.js.map +0 -7
  116. package/models/trace/sdk_services/bundle-tsconfig.json +0 -1
  117. package/models/trace/sdk_services/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -41
  118. package/models/trace/sdk_services/sdk_services-tsconfig.json +0 -57
  119. package/models/trace/sdk_services/sdk_services.js +0 -7
  120. package/models/trace/sdk_services/sdk_services.js.map +0 -7
  121. package/models/trace/trace-legacy.js +0 -16
  122. package/models/trace/trace-legacy.js.map +0 -7
  123. package/models/trace/worker/Processor.js +0 -143
  124. package/models/trace/worker/Processor.js.map +0 -7
  125. package/models/trace/worker/Types.js +0 -1
  126. package/models/trace/worker/Types.js.map +0 -7
  127. package/models/trace/worker/bundle-tsconfig.json +0 -1
  128. package/models/trace/worker/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -41
  129. package/models/trace/worker/devtools_entrypoint-worker_entrypoint-typescript-tsconfig.json +0 -41
  130. package/models/trace/worker/worker.js +0 -7
  131. package/models/trace/worker/worker.js.map +0 -7
  132. package/models/trace/worker/worker_entrypoint-tsconfig.json +0 -1
  133. package/models/trace/worker/worker_entrypoint.js +0 -36
  134. package/models/trace/worker/worker_entrypoint.js.map +0 -7
  135. package/test/invalid-animation-events.json.gz +0 -0
  136. package/test/test-trace-engine.mjs +0 -52
  137. /package/core/platform/{array-utilities.d.ts → ArrayUtilities.d.ts} +0 -0
  138. /package/core/platform/{brand.d.ts → Brand.d.ts} +0 -0
  139. /package/core/platform/{dom-utilities.d.ts → DOMUtilities.d.ts} +0 -0
  140. /package/core/platform/{date-utilities.d.ts → DateUtilities.d.ts} +0 -0
  141. /package/core/platform/{keyboard-utilities.d.ts → KeyboardUtilities.d.ts} +0 -0
  142. /package/core/platform/{map-utilities.d.ts → MapUtilities.d.ts} +0 -0
  143. /package/core/platform/{number-utilities.d.ts → NumberUtilities.d.ts} +0 -0
  144. /package/core/platform/{promise-utilities.d.ts → PromiseUtilities.d.ts} +0 -0
  145. /package/core/platform/{set-utilities.d.ts → SetUtilities.d.ts} +0 -0
  146. /package/core/platform/{string-utilities.d.ts → StringUtilities.d.ts} +0 -0
  147. /package/core/platform/{typescript-utilities.d.ts → TypescriptUtilities.d.ts} +0 -0
@@ -1,392 +0,0 @@
1
- import * as Platform from "../../../core/platform/platform.js";
2
- import * as SDK from "../../../core/sdk/sdk.js";
3
- import * as Handlers from "../handlers/handlers.js";
4
- import * as Helpers from "../helpers/helpers.js";
5
- import * as Types from "../types/types.js";
6
- function isFrameEvent(event) {
7
- return Types.TraceEvents.isTraceEventSetLayerId(event) || Types.TraceEvents.isTraceEventBeginFrame(event) || Types.TraceEvents.isTraceEventDroppedFrame(event) || Types.TraceEvents.isTraceEventRequestMainThreadFrame(event) || Types.TraceEvents.isTraceEventBeginMainThreadFrame(event) || Types.TraceEvents.isTraceEventNeedsBeginFrameChanged(event) || Types.TraceEvents.isTraceEventCommit(event) || Types.TraceEvents.isTraceEventCompositeLayers(event) || Types.TraceEvents.isTraceEventActivateLayerTree(event) || Types.TraceEvents.isTraceEventDrawFrame(event);
8
- }
9
- function idForEntry(entry) {
10
- const scope = Types.TraceEvents.isTraceEventInstant(entry) && entry.s || void 0;
11
- if (Types.TraceEvents.isNestableAsyncPhase(entry.ph)) {
12
- const id = Helpers.Trace.extractId(entry);
13
- return scope ? `${scope}@${id}` : id;
14
- }
15
- return void 0;
16
- }
17
- function entryIsTopLevel(entry) {
18
- const devtoolsTimelineCategory = "disabled-by-default-devtools.timeline";
19
- return entry.name === Types.TraceEvents.KnownEventName.RunTask && entry.cat.includes(devtoolsTimelineCategory);
20
- }
21
- export class TimelineFrameModel {
22
- frames;
23
- frameById;
24
- beginFrameQueue;
25
- minimumRecordTime;
26
- lastFrame;
27
- mainFrameCommitted;
28
- mainFrameRequested;
29
- lastLayerTree;
30
- framePendingActivation;
31
- target;
32
- framePendingCommit;
33
- lastBeginFrame;
34
- lastNeedsBeginFrame;
35
- lastTaskBeginTime = null;
36
- layerTreeId;
37
- #activeProcessId = null;
38
- #activeThreadId = null;
39
- #traceParseData;
40
- constructor(target, allEvents, traceParseData) {
41
- this.reset();
42
- this.#traceParseData = traceParseData;
43
- const mainThreads = Handlers.Threads.threadsInTrace(traceParseData).filter((thread) => {
44
- return thread.type === Handlers.Threads.ThreadType.MAIN_THREAD && thread.processIsOnMainFrame;
45
- });
46
- const threadData = mainThreads.map((thread) => {
47
- return {
48
- tid: thread.tid,
49
- pid: thread.pid,
50
- startTime: thread.entries[0].ts
51
- };
52
- });
53
- this.addTraceEvents(target, allEvents, threadData);
54
- }
55
- getFrames() {
56
- return this.frames;
57
- }
58
- getFramesWithinWindow(startTime, endTime) {
59
- const firstFrame = Platform.ArrayUtilities.lowerBound(this.frames, startTime || 0, (time, frame) => time - frame.endTime);
60
- const lastFrame = Platform.ArrayUtilities.lowerBound(this.frames, endTime || Infinity, (time, frame) => time - frame.startTime);
61
- return this.frames.slice(firstFrame, lastFrame);
62
- }
63
- reset() {
64
- this.minimumRecordTime = Types.Timing.MicroSeconds(Infinity);
65
- this.frames = [];
66
- this.frameById = {};
67
- this.beginFrameQueue = new TimelineFrameBeginFrameQueue();
68
- this.lastFrame = null;
69
- this.lastLayerTree = null;
70
- this.mainFrameCommitted = false;
71
- this.mainFrameRequested = false;
72
- this.framePendingCommit = null;
73
- this.lastBeginFrame = null;
74
- this.lastNeedsBeginFrame = null;
75
- this.framePendingActivation = null;
76
- this.lastTaskBeginTime = null;
77
- this.target = null;
78
- this.layerTreeId = null;
79
- }
80
- handleBeginFrame(startTime, seqId) {
81
- if (!this.lastFrame) {
82
- this.startFrame(startTime, seqId);
83
- }
84
- this.lastBeginFrame = startTime;
85
- this.beginFrameQueue.addFrameIfNotExists(seqId, startTime, false, false);
86
- }
87
- handleDroppedFrame(startTime, seqId, isPartial) {
88
- if (!this.lastFrame) {
89
- this.startFrame(startTime, seqId);
90
- }
91
- this.beginFrameQueue.addFrameIfNotExists(seqId, startTime, true, isPartial);
92
- this.beginFrameQueue.setDropped(seqId, true);
93
- this.beginFrameQueue.setPartial(seqId, isPartial);
94
- }
95
- handleDrawFrame(startTime, seqId) {
96
- if (!this.lastFrame) {
97
- this.startFrame(startTime, seqId);
98
- return;
99
- }
100
- if (this.mainFrameCommitted || !this.mainFrameRequested) {
101
- if (this.lastNeedsBeginFrame) {
102
- const idleTimeEnd = this.framePendingActivation ? this.framePendingActivation.triggerTime : this.lastBeginFrame || this.lastNeedsBeginFrame;
103
- if (idleTimeEnd > this.lastFrame.startTime) {
104
- this.lastFrame.idle = true;
105
- this.lastBeginFrame = null;
106
- }
107
- this.lastNeedsBeginFrame = null;
108
- }
109
- const framesToVisualize = this.beginFrameQueue.processPendingBeginFramesOnDrawFrame(seqId);
110
- for (const frame of framesToVisualize) {
111
- const isLastFrameIdle = this.lastFrame.idle;
112
- this.startFrame(frame.startTime, seqId);
113
- if (isLastFrameIdle && this.framePendingActivation) {
114
- this.commitPendingFrame();
115
- }
116
- if (frame.isDropped) {
117
- this.lastFrame.dropped = true;
118
- }
119
- if (frame.isPartial) {
120
- this.lastFrame.isPartial = true;
121
- }
122
- }
123
- }
124
- this.mainFrameCommitted = false;
125
- }
126
- handleActivateLayerTree() {
127
- if (!this.lastFrame) {
128
- return;
129
- }
130
- if (this.framePendingActivation && !this.lastNeedsBeginFrame) {
131
- this.commitPendingFrame();
132
- }
133
- }
134
- handleRequestMainThreadFrame() {
135
- if (!this.lastFrame) {
136
- return;
137
- }
138
- this.mainFrameRequested = true;
139
- }
140
- handleCommit() {
141
- if (!this.framePendingCommit) {
142
- return;
143
- }
144
- this.framePendingActivation = this.framePendingCommit;
145
- this.framePendingCommit = null;
146
- this.mainFrameRequested = false;
147
- this.mainFrameCommitted = true;
148
- }
149
- handleLayerTreeSnapshot(layerTree) {
150
- this.lastLayerTree = layerTree;
151
- }
152
- handleNeedFrameChanged(startTime, needsBeginFrame) {
153
- if (needsBeginFrame) {
154
- this.lastNeedsBeginFrame = startTime;
155
- }
156
- }
157
- startFrame(startTime, seqId) {
158
- if (this.lastFrame) {
159
- this.flushFrame(this.lastFrame, startTime);
160
- }
161
- this.lastFrame = new TimelineFrame(seqId, startTime, Types.Timing.MicroSeconds(startTime - this.minimumRecordTime));
162
- }
163
- flushFrame(frame, endTime) {
164
- frame.setLayerTree(this.lastLayerTree);
165
- frame.setEndTime(endTime);
166
- if (this.lastLayerTree) {
167
- this.lastLayerTree.paints = frame.paints;
168
- }
169
- const lastFrame = this.frames[this.frames.length - 1];
170
- if (this.frames.length && lastFrame && (frame.startTime !== lastFrame.endTime || frame.startTime > frame.endTime)) {
171
- console.assert(false, `Inconsistent frame time for frame ${this.frames.length} (${frame.startTime} - ${frame.endTime})`);
172
- }
173
- this.frames.push(frame);
174
- if (typeof frame.mainFrameId === "number") {
175
- this.frameById[frame.mainFrameId] = frame;
176
- }
177
- }
178
- commitPendingFrame() {
179
- if (!this.framePendingActivation || !this.lastFrame) {
180
- return;
181
- }
182
- this.lastFrame.paints = this.framePendingActivation.paints;
183
- this.lastFrame.mainFrameId = this.framePendingActivation.mainFrameId;
184
- this.framePendingActivation = null;
185
- }
186
- addTraceEvents(target, events, threadData) {
187
- this.target = target;
188
- let j = 0;
189
- this.#activeThreadId = threadData.length && threadData[0].tid || null;
190
- this.#activeProcessId = threadData.length && threadData[0].pid || null;
191
- for (let i = 0; i < events.length; ++i) {
192
- while (j + 1 < threadData.length && threadData[j + 1].startTime <= events[i].ts) {
193
- this.#activeThreadId = threadData[++j].tid;
194
- this.#activeProcessId = threadData[j].pid;
195
- }
196
- this.addTraceEvent(events[i], this.#traceParseData.Meta.mainFrameId);
197
- }
198
- this.#activeThreadId = null;
199
- this.#activeProcessId = null;
200
- }
201
- addTraceEvent(event, mainFrameId) {
202
- if (event.ts && event.ts < this.minimumRecordTime) {
203
- this.minimumRecordTime = event.ts;
204
- }
205
- const entryId = idForEntry(event);
206
- if (Types.TraceEvents.isTraceEventSetLayerId(event) && event.args.data.frame === mainFrameId) {
207
- this.layerTreeId = event.args.data.layerTreeId;
208
- } else if (entryId && Types.TraceEvents.isTraceEventLayerTreeHostImplSnapshot(event) && Number(entryId) === this.layerTreeId && this.target) {
209
- this.handleLayerTreeSnapshot({
210
- entry: event,
211
- paints: []
212
- });
213
- } else {
214
- if (isFrameEvent(event)) {
215
- this.processCompositorEvents(event);
216
- }
217
- if (event.tid === this.#activeThreadId && event.pid === this.#activeProcessId) {
218
- this.addMainThreadTraceEvent(event);
219
- }
220
- }
221
- }
222
- processCompositorEvents(entry) {
223
- if (entry.args["layerTreeId"] !== this.layerTreeId) {
224
- return;
225
- }
226
- if (Types.TraceEvents.isTraceEventBeginFrame(entry)) {
227
- this.handleBeginFrame(entry.ts, entry.args["frameSeqId"]);
228
- } else if (Types.TraceEvents.isTraceEventDrawFrame(entry)) {
229
- this.handleDrawFrame(entry.ts, entry.args["frameSeqId"]);
230
- } else if (Types.TraceEvents.isTraceEventActivateLayerTree(entry)) {
231
- this.handleActivateLayerTree();
232
- } else if (Types.TraceEvents.isTraceEventRequestMainThreadFrame(entry)) {
233
- this.handleRequestMainThreadFrame();
234
- } else if (Types.TraceEvents.isTraceEventNeedsBeginFrameChanged(entry)) {
235
- this.handleNeedFrameChanged(entry.ts, entry.args["data"] && Boolean(entry.args["data"]["needsBeginFrame"]));
236
- } else if (Types.TraceEvents.isTraceEventDroppedFrame(entry)) {
237
- this.handleDroppedFrame(entry.ts, entry.args["frameSeqId"], Boolean(entry.args["hasPartialUpdate"]));
238
- }
239
- }
240
- addMainThreadTraceEvent(entry) {
241
- if (entryIsTopLevel(entry)) {
242
- this.lastTaskBeginTime = entry.ts;
243
- }
244
- if (!this.framePendingCommit && TimelineFrameModel.mainFrameMarkers.indexOf(entry.name) >= 0) {
245
- this.framePendingCommit = new PendingFrame(this.lastTaskBeginTime || entry.ts);
246
- }
247
- if (!this.framePendingCommit) {
248
- return;
249
- }
250
- if (Types.TraceEvents.isTraceEventBeginMainThreadFrame(entry) && entry.args.data.frameId) {
251
- this.framePendingCommit.mainFrameId = entry.args.data.frameId;
252
- }
253
- if (Types.TraceEvents.isTraceEventPaint(entry)) {
254
- const snapshot = this.#traceParseData.LayerTreeHandler.paintsToSnapshots.get(entry);
255
- if (snapshot) {
256
- this.framePendingCommit.paints.push(new LayerPaintEvent(entry, snapshot, this.target));
257
- }
258
- }
259
- if ((Types.TraceEvents.isTraceEventCompositeLayers(entry) || Types.TraceEvents.isTraceEventCommit(entry)) && entry.args["layerTreeId"] === this.layerTreeId) {
260
- this.handleCommit();
261
- }
262
- }
263
- static mainFrameMarkers = [
264
- Types.TraceEvents.KnownEventName.ScheduleStyleRecalculation,
265
- Types.TraceEvents.KnownEventName.InvalidateLayout,
266
- Types.TraceEvents.KnownEventName.BeginMainThreadFrame,
267
- Types.TraceEvents.KnownEventName.ScrollLayer
268
- ];
269
- }
270
- export class TimelineFrame {
271
- startTime;
272
- startTimeOffset;
273
- endTime;
274
- duration;
275
- idle;
276
- dropped;
277
- isPartial;
278
- layerTree;
279
- paints;
280
- mainFrameId;
281
- seqId;
282
- constructor(seqId, startTime, startTimeOffset) {
283
- this.seqId = seqId;
284
- this.startTime = startTime;
285
- this.startTimeOffset = startTimeOffset;
286
- this.endTime = this.startTime;
287
- this.duration = Types.Timing.MicroSeconds(0);
288
- this.idle = false;
289
- this.dropped = false;
290
- this.isPartial = false;
291
- this.layerTree = null;
292
- this.paints = [];
293
- this.mainFrameId = void 0;
294
- }
295
- setEndTime(endTime) {
296
- this.endTime = endTime;
297
- this.duration = Types.Timing.MicroSeconds(this.endTime - this.startTime);
298
- }
299
- setLayerTree(layerTree) {
300
- this.layerTree = layerTree;
301
- }
302
- }
303
- export class LayerPaintEvent {
304
- eventInternal;
305
- target;
306
- #snapshot;
307
- constructor(event, snapshot, target) {
308
- this.eventInternal = event;
309
- this.#snapshot = snapshot;
310
- this.target = target;
311
- }
312
- layerId() {
313
- return String(this.eventInternal.args["data"]["layerId"]);
314
- }
315
- event() {
316
- return this.eventInternal;
317
- }
318
- picture() {
319
- const rect = this.#snapshot.args.snapshot.params?.layer_rect;
320
- const pictureData = this.#snapshot.args.snapshot.skp64;
321
- return rect && pictureData ? { rect, serializedPicture: pictureData } : null;
322
- }
323
- async snapshotPromise() {
324
- const paintProfilerModel = this.target && this.target.model(SDK.PaintProfiler.PaintProfilerModel);
325
- const picture = this.picture();
326
- if (!picture || !paintProfilerModel) {
327
- return null;
328
- }
329
- const snapshot = await paintProfilerModel.loadSnapshot(picture.serializedPicture);
330
- return snapshot ? { rect: picture.rect, snapshot } : null;
331
- }
332
- }
333
- export class PendingFrame {
334
- paints;
335
- mainFrameId;
336
- triggerTime;
337
- constructor(triggerTime) {
338
- this.paints = [];
339
- this.mainFrameId = void 0;
340
- this.triggerTime = triggerTime;
341
- }
342
- }
343
- class BeginFrameInfo {
344
- seqId;
345
- startTime;
346
- isDropped;
347
- isPartial;
348
- constructor(seqId, startTime, isDropped, isPartial) {
349
- this.seqId = seqId;
350
- this.startTime = startTime;
351
- this.isDropped = isDropped;
352
- this.isPartial = isPartial;
353
- }
354
- }
355
- export class TimelineFrameBeginFrameQueue {
356
- queueFrames = [];
357
- mapFrames = {};
358
- addFrameIfNotExists(seqId, startTime, isDropped, isPartial) {
359
- if (!(seqId in this.mapFrames)) {
360
- this.mapFrames[seqId] = new BeginFrameInfo(seqId, startTime, isDropped, isPartial);
361
- this.queueFrames.push(seqId);
362
- }
363
- }
364
- setDropped(seqId, isDropped) {
365
- if (seqId in this.mapFrames) {
366
- this.mapFrames[seqId].isDropped = isDropped;
367
- }
368
- }
369
- setPartial(seqId, isPartial) {
370
- if (seqId in this.mapFrames) {
371
- this.mapFrames[seqId].isPartial = isPartial;
372
- }
373
- }
374
- processPendingBeginFramesOnDrawFrame(seqId) {
375
- const framesToVisualize = [];
376
- if (seqId in this.mapFrames) {
377
- while (this.queueFrames[0] !== seqId) {
378
- const currentSeqId = this.queueFrames[0];
379
- if (this.mapFrames[currentSeqId].isDropped) {
380
- framesToVisualize.push(this.mapFrames[currentSeqId]);
381
- }
382
- delete this.mapFrames[currentSeqId];
383
- this.queueFrames.shift();
384
- }
385
- framesToVisualize.push(this.mapFrames[seqId]);
386
- delete this.mapFrames[seqId];
387
- this.queueFrames.shift();
388
- }
389
- return framesToVisualize;
390
- }
391
- }
392
- //# sourceMappingURL=TimelineFrameModel.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../front_end/models/trace/frames/TimelineFrameModel.ts"],
4
- "sourcesContent": ["/*\n * Copyright (C) 2013 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\nimport * as Platform from '../../../core/platform/platform.js';\nimport * as SDK from '../../../core/sdk/sdk.js';\nimport * as Handlers from '../handlers/handlers.js';\nimport * as Helpers from '../helpers/helpers.js';\nimport * as Types from '../types/types.js';\n\ntype FrameEvent = Types.TraceEvents.TraceEventBeginFrame|Types.TraceEvents.TraceEventDroppedFrame|\n Types.TraceEvents.TraceEventRequestMainThreadFrame|\n Types.TraceEvents.TraceEventBeginMainThreadFrame|Types.TraceEvents.TraceEventCommit|\n Types.TraceEvents.TraceEventCompositeLayers|Types.TraceEvents.TraceEventActivateLayerTree|\n Types.TraceEvents.TraceEventNeedsBeginFrameChanged|Types.TraceEvents.TraceEventDrawFrame;\n\nfunction isFrameEvent(event: Types.TraceEvents.TraceEventData): event is FrameEvent {\n return (\n Types.TraceEvents.isTraceEventSetLayerId(event) || Types.TraceEvents.isTraceEventBeginFrame(event) ||\n Types.TraceEvents.isTraceEventDroppedFrame(event) ||\n Types.TraceEvents.isTraceEventRequestMainThreadFrame(event) ||\n Types.TraceEvents.isTraceEventBeginMainThreadFrame(event) ||\n Types.TraceEvents.isTraceEventNeedsBeginFrameChanged(event) ||\n // Note that \"Commit\" is the replacement for \"CompositeLayers\" so in a trace\n // we wouldn't expect to see a combination of these. All \"new\" trace\n // recordings use \"Commit\", but we can easily support \"CompositeLayers\" too\n // to not break older traces being imported.\n Types.TraceEvents.isTraceEventCommit(event) || Types.TraceEvents.isTraceEventCompositeLayers(event) ||\n Types.TraceEvents.isTraceEventActivateLayerTree(event) || Types.TraceEvents.isTraceEventDrawFrame(event));\n}\n\nfunction idForEntry(entry: Types.TraceEvents.TraceEventData): string|undefined {\n const scope = Types.TraceEvents.isTraceEventInstant(entry) && entry.s || undefined;\n\n if (Types.TraceEvents.isNestableAsyncPhase(entry.ph)) {\n const id = Helpers.Trace.extractId(entry as Types.TraceEvents.TraceEventNestableAsync);\n return scope ? `${scope}@${id}` : id;\n }\n\n return undefined;\n}\n\nfunction entryIsTopLevel(entry: Types.TraceEvents.TraceEventData): boolean {\n const devtoolsTimelineCategory = 'disabled-by-default-devtools.timeline';\n return entry.name === Types.TraceEvents.KnownEventName.RunTask && entry.cat.includes(devtoolsTimelineCategory);\n}\n\nexport class TimelineFrameModel {\n private frames!: TimelineFrame[];\n private frameById!: {\n [x: number]: TimelineFrame,\n };\n private beginFrameQueue!: TimelineFrameBeginFrameQueue;\n private minimumRecordTime!: Types.Timing.MicroSeconds;\n private lastFrame!: TimelineFrame|null;\n private mainFrameCommitted!: boolean;\n private mainFrameRequested!: boolean;\n private lastLayerTree!: FrameLayerTreeData|null;\n private framePendingActivation!: PendingFrame|null;\n private target!: SDK.Target.Target|null;\n private framePendingCommit?: PendingFrame|null;\n private lastBeginFrame?: number|null;\n private lastNeedsBeginFrame?: number|null;\n private lastTaskBeginTime: Types.Timing.MicroSeconds|null = null;\n private layerTreeId?: number|null;\n #activeProcessId: Types.TraceEvents.ProcessID|null = null;\n #activeThreadId: Types.TraceEvents.ThreadID|null = null;\n\n #traceParseData: Handlers.Types.TraceParseData;\n\n constructor(\n target: SDK.Target.Target|null, allEvents: readonly Types.TraceEvents.TraceEventData[],\n traceParseData: Handlers.Types.TraceParseData) {\n this.reset();\n this.#traceParseData = traceParseData;\n const mainThreads = Handlers.Threads.threadsInTrace(traceParseData).filter(thread => {\n return thread.type === Handlers.Threads.ThreadType.MAIN_THREAD && thread.processIsOnMainFrame;\n });\n const threadData = mainThreads.map(thread => {\n return {\n tid: thread.tid,\n pid: thread.pid,\n startTime: thread.entries[0].ts,\n };\n });\n\n this.addTraceEvents(target, allEvents, threadData);\n }\n\n getFrames(): TimelineFrame[] {\n return this.frames;\n }\n\n getFramesWithinWindow(startTime: number, endTime: number): TimelineFrame[] {\n const firstFrame =\n Platform.ArrayUtilities.lowerBound(this.frames, startTime || 0, (time, frame) => time - frame.endTime);\n const lastFrame =\n Platform.ArrayUtilities.lowerBound(this.frames, endTime || Infinity, (time, frame) => time - frame.startTime);\n return this.frames.slice(firstFrame, lastFrame);\n }\n\n reset(): void {\n this.minimumRecordTime = Types.Timing.MicroSeconds(Infinity);\n this.frames = [];\n this.frameById = {};\n this.beginFrameQueue = new TimelineFrameBeginFrameQueue();\n this.lastFrame = null;\n this.lastLayerTree = null;\n this.mainFrameCommitted = false;\n this.mainFrameRequested = false;\n this.framePendingCommit = null;\n this.lastBeginFrame = null;\n this.lastNeedsBeginFrame = null;\n this.framePendingActivation = null;\n this.lastTaskBeginTime = null;\n this.target = null;\n this.layerTreeId = null;\n }\n\n handleBeginFrame(startTime: Types.Timing.MicroSeconds, seqId: number): void {\n if (!this.lastFrame) {\n this.startFrame(startTime, seqId);\n }\n this.lastBeginFrame = startTime;\n\n this.beginFrameQueue.addFrameIfNotExists(seqId, startTime, false, false);\n }\n\n handleDroppedFrame(startTime: Types.Timing.MicroSeconds, seqId: number, isPartial: boolean): void {\n if (!this.lastFrame) {\n this.startFrame(startTime, seqId);\n }\n\n // This line handles the case where no BeginFrame event is issued for\n // the dropped frame. In this situation, add a BeginFrame to the queue\n // as if it actually occurred.\n this.beginFrameQueue.addFrameIfNotExists(seqId, startTime, true, isPartial);\n this.beginFrameQueue.setDropped(seqId, true);\n this.beginFrameQueue.setPartial(seqId, isPartial);\n }\n\n handleDrawFrame(startTime: Types.Timing.MicroSeconds, seqId: number): void {\n if (!this.lastFrame) {\n this.startFrame(startTime, seqId);\n return;\n }\n\n // - if it wasn't drawn, it didn't happen!\n // - only show frames that either did not wait for the main thread frame or had one committed.\n if (this.mainFrameCommitted || !this.mainFrameRequested) {\n if (this.lastNeedsBeginFrame) {\n const idleTimeEnd = this.framePendingActivation ? this.framePendingActivation.triggerTime :\n (this.lastBeginFrame || this.lastNeedsBeginFrame);\n if (idleTimeEnd > this.lastFrame.startTime) {\n this.lastFrame.idle = true;\n this.lastBeginFrame = null;\n }\n this.lastNeedsBeginFrame = null;\n }\n\n const framesToVisualize = this.beginFrameQueue.processPendingBeginFramesOnDrawFrame(seqId);\n\n // Visualize the current frame and all pending frames before it.\n for (const frame of framesToVisualize) {\n const isLastFrameIdle = this.lastFrame.idle;\n\n // If |frame| is the first frame after an idle period, the CPU time\n // will be logged (\"committed\") under |frame| if applicable.\n this.startFrame(frame.startTime, seqId);\n if (isLastFrameIdle && this.framePendingActivation) {\n this.commitPendingFrame();\n }\n if (frame.isDropped) {\n this.lastFrame.dropped = true;\n }\n if (frame.isPartial) {\n this.lastFrame.isPartial = true;\n }\n }\n }\n this.mainFrameCommitted = false;\n }\n\n handleActivateLayerTree(): void {\n if (!this.lastFrame) {\n return;\n }\n if (this.framePendingActivation && !this.lastNeedsBeginFrame) {\n this.commitPendingFrame();\n }\n }\n\n handleRequestMainThreadFrame(): void {\n if (!this.lastFrame) {\n return;\n }\n this.mainFrameRequested = true;\n }\n\n handleCommit(): void {\n if (!this.framePendingCommit) {\n return;\n }\n this.framePendingActivation = this.framePendingCommit;\n this.framePendingCommit = null;\n this.mainFrameRequested = false;\n this.mainFrameCommitted = true;\n }\n\n handleLayerTreeSnapshot(layerTree: FrameLayerTreeData): void {\n this.lastLayerTree = layerTree;\n }\n\n handleNeedFrameChanged(startTime: Types.Timing.MicroSeconds, needsBeginFrame: boolean): void {\n if (needsBeginFrame) {\n this.lastNeedsBeginFrame = startTime;\n }\n }\n\n private startFrame(startTime: Types.Timing.MicroSeconds, seqId: number): void {\n if (this.lastFrame) {\n this.flushFrame(this.lastFrame, startTime);\n }\n this.lastFrame = new TimelineFrame(seqId, startTime, Types.Timing.MicroSeconds(startTime - this.minimumRecordTime));\n }\n\n private flushFrame(frame: TimelineFrame, endTime: Types.Timing.MicroSeconds): void {\n frame.setLayerTree(this.lastLayerTree);\n frame.setEndTime(endTime);\n if (this.lastLayerTree) {\n this.lastLayerTree.paints = frame.paints;\n }\n const lastFrame = this.frames[this.frames.length - 1];\n if (this.frames.length && lastFrame && (frame.startTime !== lastFrame.endTime || frame.startTime > frame.endTime)) {\n console.assert(\n false, `Inconsistent frame time for frame ${this.frames.length} (${frame.startTime} - ${frame.endTime})`);\n }\n this.frames.push(frame);\n if (typeof frame.mainFrameId === 'number') {\n this.frameById[frame.mainFrameId] = frame;\n }\n }\n\n private commitPendingFrame(): void {\n if (!this.framePendingActivation || !this.lastFrame) {\n return;\n }\n\n this.lastFrame.paints = this.framePendingActivation.paints;\n this.lastFrame.mainFrameId = this.framePendingActivation.mainFrameId;\n this.framePendingActivation = null;\n }\n\n addTraceEvents(target: SDK.Target.Target|null, events: readonly Types.TraceEvents.TraceEventData[], threadData: {\n pid: Types.TraceEvents.ProcessID,\n tid: Types.TraceEvents.ThreadID,\n startTime: Types.Timing.MicroSeconds,\n }[]): void {\n this.target = target;\n let j = 0;\n this.#activeThreadId = threadData.length && threadData[0].tid || null;\n this.#activeProcessId = threadData.length && threadData[0].pid || null;\n for (let i = 0; i < events.length; ++i) {\n while (j + 1 < threadData.length && threadData[j + 1].startTime <= events[i].ts) {\n this.#activeThreadId = threadData[++j].tid;\n this.#activeProcessId = threadData[j].pid;\n }\n this.addTraceEvent(events[i], this.#traceParseData.Meta.mainFrameId);\n }\n this.#activeThreadId = null;\n this.#activeProcessId = null;\n }\n\n private addTraceEvent(event: Types.TraceEvents.TraceEventData, mainFrameId: string): void {\n if (event.ts && event.ts < this.minimumRecordTime) {\n this.minimumRecordTime = event.ts;\n }\n\n const entryId = idForEntry(event);\n\n if (Types.TraceEvents.isTraceEventSetLayerId(event) && event.args.data.frame === mainFrameId) {\n this.layerTreeId = event.args.data.layerTreeId;\n } else if (\n entryId && Types.TraceEvents.isTraceEventLayerTreeHostImplSnapshot(event) &&\n Number(entryId) === this.layerTreeId && this.target) {\n this.handleLayerTreeSnapshot({\n entry: event,\n paints: [],\n });\n } else {\n if (isFrameEvent(event)) {\n this.processCompositorEvents(event);\n }\n // Make sure we only use events from the main thread: we check the PID as\n // well in case two processes have a thread with the same TID.\n if (event.tid === this.#activeThreadId && event.pid === this.#activeProcessId) {\n this.addMainThreadTraceEvent(event);\n }\n }\n }\n\n private processCompositorEvents(entry: FrameEvent): void {\n if (entry.args['layerTreeId'] !== this.layerTreeId) {\n return;\n }\n if (Types.TraceEvents.isTraceEventBeginFrame(entry)) {\n this.handleBeginFrame(entry.ts, entry.args['frameSeqId']);\n } else if (Types.TraceEvents.isTraceEventDrawFrame(entry)) {\n this.handleDrawFrame(entry.ts, entry.args['frameSeqId']);\n } else if (Types.TraceEvents.isTraceEventActivateLayerTree(entry)) {\n this.handleActivateLayerTree();\n } else if (Types.TraceEvents.isTraceEventRequestMainThreadFrame(entry)) {\n this.handleRequestMainThreadFrame();\n } else if (Types.TraceEvents.isTraceEventNeedsBeginFrameChanged(entry)) {\n // needsBeginFrame property will either be 0 or 1, which represents\n // true/false in this case, hence the Boolean() wrapper.\n this.handleNeedFrameChanged(entry.ts, entry.args['data'] && Boolean(entry.args['data']['needsBeginFrame']));\n } else if (Types.TraceEvents.isTraceEventDroppedFrame(entry)) {\n this.handleDroppedFrame(entry.ts, entry.args['frameSeqId'], Boolean(entry.args['hasPartialUpdate']));\n }\n }\n\n private addMainThreadTraceEvent(entry: Types.TraceEvents.TraceEventData): void {\n if (entryIsTopLevel(entry)) {\n this.lastTaskBeginTime = entry.ts;\n }\n if (!this.framePendingCommit &&\n TimelineFrameModel.mainFrameMarkers.indexOf(entry.name as Types.TraceEvents.KnownEventName) >= 0) {\n this.framePendingCommit = new PendingFrame(this.lastTaskBeginTime || entry.ts);\n }\n if (!this.framePendingCommit) {\n return;\n }\n\n if (Types.TraceEvents.isTraceEventBeginMainThreadFrame(entry) && entry.args.data.frameId) {\n this.framePendingCommit.mainFrameId = entry.args.data.frameId;\n }\n if (Types.TraceEvents.isTraceEventPaint(entry)) {\n const snapshot = this.#traceParseData.LayerTreeHandler.paintsToSnapshots.get(entry);\n if (snapshot) {\n this.framePendingCommit.paints.push(new LayerPaintEvent(entry, snapshot, this.target));\n }\n }\n // Commit will be replacing CompositeLayers but CompositeLayers is kept\n // around for backwards compatibility.\n if ((Types.TraceEvents.isTraceEventCompositeLayers(entry) || Types.TraceEvents.isTraceEventCommit(entry)) &&\n entry.args['layerTreeId'] === this.layerTreeId) {\n this.handleCommit();\n }\n }\n\n private static readonly mainFrameMarkers: Types.TraceEvents.KnownEventName[] = [\n Types.TraceEvents.KnownEventName.ScheduleStyleRecalculation,\n Types.TraceEvents.KnownEventName.InvalidateLayout,\n Types.TraceEvents.KnownEventName.BeginMainThreadFrame,\n Types.TraceEvents.KnownEventName.ScrollLayer,\n ];\n}\n\nexport interface FrameLayerTreeData {\n entry: Types.TraceEvents.TraceEventLayerTreeHostImplSnapshot;\n paints: LayerPaintEvent[];\n}\n\nexport class TimelineFrame {\n startTime: Types.Timing.MicroSeconds;\n startTimeOffset: Types.Timing.MicroSeconds;\n endTime: Types.Timing.MicroSeconds;\n duration: Types.Timing.MicroSeconds;\n idle: boolean;\n dropped: boolean;\n isPartial: boolean;\n layerTree: FrameLayerTreeData|null;\n paints: LayerPaintEvent[];\n mainFrameId: number|undefined;\n readonly seqId: number;\n\n constructor(seqId: number, startTime: Types.Timing.MicroSeconds, startTimeOffset: Types.Timing.MicroSeconds) {\n this.seqId = seqId;\n this.startTime = startTime;\n this.startTimeOffset = startTimeOffset;\n this.endTime = this.startTime;\n this.duration = Types.Timing.MicroSeconds(0);\n this.idle = false;\n this.dropped = false;\n this.isPartial = false;\n this.layerTree = null;\n this.paints = [];\n this.mainFrameId = undefined;\n }\n\n setEndTime(endTime: Types.Timing.MicroSeconds): void {\n this.endTime = endTime;\n this.duration = Types.Timing.MicroSeconds(this.endTime - this.startTime);\n }\n\n setLayerTree(layerTree: FrameLayerTreeData|null): void {\n this.layerTree = layerTree;\n }\n}\n\nexport interface LayerPaintEventPicture {\n rect: Array<number>;\n serializedPicture: string;\n}\nexport class LayerPaintEvent {\n private readonly eventInternal: Types.TraceEvents.TraceEventPaint;\n private readonly target: SDK.Target.Target|null;\n #snapshot: Types.TraceEvents.TraceEventDisplayItemListSnapshot;\n\n constructor(\n event: Types.TraceEvents.TraceEventPaint, snapshot: Types.TraceEvents.TraceEventDisplayItemListSnapshot,\n target: SDK.Target.Target|null) {\n this.eventInternal = event;\n this.#snapshot = snapshot;\n this.target = target;\n }\n\n layerId(): string {\n // TODO: could make this function return a number?\n return String(this.eventInternal.args['data']['layerId']);\n }\n\n event(): Types.TraceEvents.TraceEventPaint {\n return this.eventInternal;\n }\n\n picture(): LayerPaintEventPicture|null {\n // TODO(crbug.com/1453234): this function does not need to be async now\n const rect = this.#snapshot.args.snapshot.params?.layer_rect;\n const pictureData = this.#snapshot.args.snapshot.skp64;\n return rect && pictureData ? {rect: rect, serializedPicture: pictureData} : null;\n }\n\n async snapshotPromise(): Promise<{\n rect: Array<number>,\n snapshot: SDK.PaintProfiler.PaintProfilerSnapshot,\n }|null> {\n const paintProfilerModel = this.target && this.target.model(SDK.PaintProfiler.PaintProfilerModel);\n const picture = this.picture();\n if (!picture || !paintProfilerModel) {\n return null;\n }\n const snapshot = await paintProfilerModel.loadSnapshot(picture.serializedPicture);\n return snapshot ? {rect: picture.rect, snapshot: snapshot} : null;\n }\n}\n\nexport class PendingFrame {\n paints: LayerPaintEvent[];\n mainFrameId: number|undefined;\n triggerTime: number;\n constructor(triggerTime: number) {\n this.paints = [];\n this.mainFrameId = undefined;\n this.triggerTime = triggerTime;\n }\n}\n\n// The parameters of an impl-side BeginFrame.\nclass BeginFrameInfo {\n seqId: number;\n startTime: Types.Timing.MicroSeconds;\n isDropped: boolean;\n isPartial: boolean;\n constructor(seqId: number, startTime: Types.Timing.MicroSeconds, isDropped: boolean, isPartial: boolean) {\n this.seqId = seqId;\n this.startTime = startTime;\n this.isDropped = isDropped;\n this.isPartial = isPartial;\n }\n}\n\n// A queue of BeginFrames pending visualization.\n// BeginFrames are added into this queue as they occur; later when their\n// corresponding DrawFrames occur (or lack thereof), the BeginFrames are removed\n// from the queue and their timestamps are used for visualization.\nexport class TimelineFrameBeginFrameQueue {\n private queueFrames: number[] = [];\n\n // Maps frameSeqId to BeginFrameInfo.\n private mapFrames: {\n [x: number]: BeginFrameInfo,\n } = {};\n\n // Add a BeginFrame to the queue, if it does not already exit.\n addFrameIfNotExists(seqId: number, startTime: Types.Timing.MicroSeconds, isDropped: boolean, isPartial: boolean):\n void {\n if (!(seqId in this.mapFrames)) {\n this.mapFrames[seqId] = new BeginFrameInfo(seqId, startTime, isDropped, isPartial);\n this.queueFrames.push(seqId);\n }\n }\n\n // Set a BeginFrame in queue as dropped.\n setDropped(seqId: number, isDropped: boolean): void {\n if (seqId in this.mapFrames) {\n this.mapFrames[seqId].isDropped = isDropped;\n }\n }\n\n setPartial(seqId: number, isPartial: boolean): void {\n if (seqId in this.mapFrames) {\n this.mapFrames[seqId].isPartial = isPartial;\n }\n }\n\n processPendingBeginFramesOnDrawFrame(seqId: number): BeginFrameInfo[] {\n const framesToVisualize: BeginFrameInfo[] = [];\n\n // Do not visualize this frame in the rare case where the current DrawFrame\n // does not have a corresponding BeginFrame.\n if (seqId in this.mapFrames) {\n // Pop all BeginFrames before the current frame, and add only the dropped\n // ones in |frames_to_visualize|.\n // Non-dropped frames popped here are BeginFrames that are never\n // drawn (but not considered dropped either for some reason).\n // Those frames do not require an proactive visualization effort and will\n // be naturally presented as continuationss of other frames.\n while (this.queueFrames[0] !== seqId) {\n const currentSeqId = this.queueFrames[0];\n if (this.mapFrames[currentSeqId].isDropped) {\n framesToVisualize.push(this.mapFrames[currentSeqId]);\n }\n\n delete this.mapFrames[currentSeqId];\n this.queueFrames.shift();\n }\n\n // Pop the BeginFrame associated with the current DrawFrame.\n framesToVisualize.push(this.mapFrames[seqId]);\n delete this.mapFrames[seqId];\n this.queueFrames.shift();\n }\n return framesToVisualize;\n }\n}\n"],
5
- "mappings": "AAgCA;AACA;AACA;AACA;AACA;AAQA,sBAAsB,OAA8D;AAClF,SACI,MAAM,YAAY,uBAAuB,UAAU,MAAM,YAAY,uBAAuB,UAC5F,MAAM,YAAY,yBAAyB,UAC3C,MAAM,YAAY,mCAAmC,UACrD,MAAM,YAAY,iCAAiC,UACnD,MAAM,YAAY,mCAAmC,UAKrD,MAAM,YAAY,mBAAmB,UAAU,MAAM,YAAY,4BAA4B,UAC7F,MAAM,YAAY,8BAA8B,UAAU,MAAM,YAAY,sBAAsB;AAAA;AAGxG,oBAAoB,OAA2D;AAC7E,QAAM,QAAQ,MAAM,YAAY,oBAAoB,UAAU,MAAM,KAAK;AAEzE,MAAI,MAAM,YAAY,qBAAqB,MAAM,KAAK;AACpD,UAAM,KAAK,QAAQ,MAAM,UAAU;AACnC,WAAO,QAAQ,GAAG,SAAS,OAAO;AAAA;AAGpC,SAAO;AAAA;AAGT,yBAAyB,OAAkD;AACzE,QAAM,2BAA2B;AACjC,SAAO,MAAM,SAAS,MAAM,YAAY,eAAe,WAAW,MAAM,IAAI,SAAS;AAAA;AAGhF,gCAAyB;AAAA,EACtB;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoD;AAAA,EACpD;AAAA,qBAC6C;AAAA,oBACF;AAAA;AAAA,EAInD,YACI,QAAgC,WAChC,gBAA+C;AACjD,SAAK;AACL,2BAAuB;AACvB,UAAM,cAAc,SAAS,QAAQ,eAAe,gBAAgB,OAAO,YAAU;AACnF,aAAO,OAAO,SAAS,SAAS,QAAQ,WAAW,eAAe,OAAO;AAAA;AAE3E,UAAM,aAAa,YAAY,IAAI,YAAU;AAC3C,aAAO;AAAA,QACL,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,WAAW,OAAO,QAAQ,GAAG;AAAA;AAAA;AAIjC,SAAK,eAAe,QAAQ,WAAW;AAAA;AAAA,EAGzC,YAA6B;AAC3B,WAAO,KAAK;AAAA;AAAA,EAGd,sBAAsB,WAAmB,SAAkC;AACzE,UAAM,aACF,SAAS,eAAe,WAAW,KAAK,QAAQ,aAAa,GAAG,CAAC,MAAM,UAAU,OAAO,MAAM;AAClG,UAAM,YACF,SAAS,eAAe,WAAW,KAAK,QAAQ,WAAW,UAAU,CAAC,MAAM,UAAU,OAAO,MAAM;AACvG,WAAO,KAAK,OAAO,MAAM,YAAY;AAAA;AAAA,EAGvC,QAAc;AACZ,SAAK,oBAAoB,MAAM,OAAO,aAAa;AACnD,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,kBAAkB,IAAI;AAC3B,SAAK,YAAY;AACjB,SAAK,gBAAgB;AACrB,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAC1B,SAAK,iBAAiB;AACtB,SAAK,sBAAsB;AAC3B,SAAK,yBAAyB;AAC9B,SAAK,oBAAoB;AACzB,SAAK,SAAS;AACd,SAAK,cAAc;AAAA;AAAA,EAGrB,iBAAiB,WAAsC,OAAqB;AAC1E,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,WAAW,WAAW;AAAA;AAE7B,SAAK,iBAAiB;AAEtB,SAAK,gBAAgB,oBAAoB,OAAO,WAAW,OAAO;AAAA;AAAA,EAGpE,mBAAmB,WAAsC,OAAe,WAA0B;AAChG,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,WAAW,WAAW;AAAA;AAM7B,SAAK,gBAAgB,oBAAoB,OAAO,WAAW,MAAM;AACjE,SAAK,gBAAgB,WAAW,OAAO;AACvC,SAAK,gBAAgB,WAAW,OAAO;AAAA;AAAA,EAGzC,gBAAgB,WAAsC,OAAqB;AACzE,QAAI,CAAC,KAAK,WAAW;AACnB,WAAK,WAAW,WAAW;AAC3B;AAAA;AAKF,QAAI,KAAK,sBAAsB,CAAC,KAAK,oBAAoB;AACvD,UAAI,KAAK,qBAAqB;AAC5B,cAAM,cAAc,KAAK,yBAAyB,KAAK,uBAAuB,cAC3B,KAAK,kBAAkB,KAAK;AAC/E,YAAI,cAAc,KAAK,UAAU,WAAW;AAC1C,eAAK,UAAU,OAAO;AACtB,eAAK,iBAAiB;AAAA;AAExB,aAAK,sBAAsB;AAAA;AAG7B,YAAM,oBAAoB,KAAK,gBAAgB,qCAAqC;AAGpF,iBAAW,SAAS,mBAAmB;AACrC,cAAM,kBAAkB,KAAK,UAAU;AAIvC,aAAK,WAAW,MAAM,WAAW;AACjC,YAAI,mBAAmB,KAAK,wBAAwB;AAClD,eAAK;AAAA;AAEP,YAAI,MAAM,WAAW;AACnB,eAAK,UAAU,UAAU;AAAA;AAE3B,YAAI,MAAM,WAAW;AACnB,eAAK,UAAU,YAAY;AAAA;AAAA;AAAA;AAIjC,SAAK,qBAAqB;AAAA;AAAA,EAG5B,0BAAgC;AAC9B,QAAI,CAAC,KAAK,WAAW;AACnB;AAAA;AAEF,QAAI,KAAK,0BAA0B,CAAC,KAAK,qBAAqB;AAC5D,WAAK;AAAA;AAAA;AAAA,EAIT,+BAAqC;AACnC,QAAI,CAAC,KAAK,WAAW;AACnB;AAAA;AAEF,SAAK,qBAAqB;AAAA;AAAA,EAG5B,eAAqB;AACnB,QAAI,CAAC,KAAK,oBAAoB;AAC5B;AAAA;AAEF,SAAK,yBAAyB,KAAK;AACnC,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAC1B,SAAK,qBAAqB;AAAA;AAAA,EAG5B,wBAAwB,WAAqC;AAC3D,SAAK,gBAAgB;AAAA;AAAA,EAGvB,uBAAuB,WAAsC,iBAAgC;AAC3F,QAAI,iBAAiB;AACnB,WAAK,sBAAsB;AAAA;AAAA;AAAA,EAIvB,WAAW,WAAsC,OAAqB;AAC5E,QAAI,KAAK,WAAW;AAClB,WAAK,WAAW,KAAK,WAAW;AAAA;AAElC,SAAK,YAAY,IAAI,cAAc,OAAO,WAAW,MAAM,OAAO,aAAa,YAAY,KAAK;AAAA;AAAA,EAG1F,WAAW,OAAsB,SAA0C;AACjF,UAAM,aAAa,KAAK;AACxB,UAAM,WAAW;AACjB,QAAI,KAAK,eAAe;AACtB,WAAK,cAAc,SAAS,MAAM;AAAA;AAEpC,UAAM,YAAY,KAAK,OAAO,KAAK,OAAO,SAAS;AACnD,QAAI,KAAK,OAAO,UAAU,aAAc,OAAM,cAAc,UAAU,WAAW,MAAM,YAAY,MAAM,UAAU;AACjH,cAAQ,OACJ,OAAO,qCAAqC,KAAK,OAAO,WAAW,MAAM,eAAe,MAAM;AAAA;AAEpG,SAAK,OAAO,KAAK;AACjB,QAAI,OAAO,MAAM,gBAAgB,UAAU;AACzC,WAAK,UAAU,MAAM,eAAe;AAAA;AAAA;AAAA,EAIhC,qBAA2B;AACjC,QAAI,CAAC,KAAK,0BAA0B,CAAC,KAAK,WAAW;AACnD;AAAA;AAGF,SAAK,UAAU,SAAS,KAAK,uBAAuB;AACpD,SAAK,UAAU,cAAc,KAAK,uBAAuB;AACzD,SAAK,yBAAyB;AAAA;AAAA,EAGhC,eAAe,QAAgC,QAAqD,YAIzF;AACT,SAAK,SAAS;AACd,QAAI,IAAI;AACR,2BAAuB,WAAW,UAAU,WAAW,GAAG,OAAO;AACjE,4BAAwB,WAAW,UAAU,WAAW,GAAG,OAAO;AAClE,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACtC,aAAO,IAAI,IAAI,WAAW,UAAU,WAAW,IAAI,GAAG,aAAa,OAAO,GAAG,IAAI;AAC/E,+BAAuB,WAAW,EAAE,GAAG;AACvC,gCAAwB,WAAW,GAAG;AAAA;AAExC,WAAK,cAAc,OAAO,IAAI,qBAAqB,KAAK;AAAA;AAE1D,2BAAuB;AACvB,4BAAwB;AAAA;AAAA,EAGlB,cAAc,OAAyC,aAA2B;AACxF,QAAI,MAAM,MAAM,MAAM,KAAK,KAAK,mBAAmB;AACjD,WAAK,oBAAoB,MAAM;AAAA;AAGjC,UAAM,UAAU,WAAW;AAE3B,QAAI,MAAM,YAAY,uBAAuB,UAAU,MAAM,KAAK,KAAK,UAAU,aAAa;AAC5F,WAAK,cAAc,MAAM,KAAK,KAAK;AAAA,eAEjC,WAAW,MAAM,YAAY,sCAAsC,UACnE,OAAO,aAAa,KAAK,eAAe,KAAK,QAAQ;AACvD,WAAK,wBAAwB;AAAA,QAC3B,OAAO;AAAA,QACP,QAAQ;AAAA;AAAA,WAEL;AACL,UAAI,aAAa,QAAQ;AACvB,aAAK,wBAAwB;AAAA;AAI/B,UAAI,MAAM,QAAQ,wBAAwB,MAAM,QAAQ,uBAAuB;AAC7E,aAAK,wBAAwB;AAAA;AAAA;AAAA;AAAA,EAK3B,wBAAwB,OAAyB;AACvD,QAAI,MAAM,KAAK,mBAAmB,KAAK,aAAa;AAClD;AAAA;AAEF,QAAI,MAAM,YAAY,uBAAuB,QAAQ;AACnD,WAAK,iBAAiB,MAAM,IAAI,MAAM,KAAK;AAAA,eAClC,MAAM,YAAY,sBAAsB,QAAQ;AACzD,WAAK,gBAAgB,MAAM,IAAI,MAAM,KAAK;AAAA,eACjC,MAAM,YAAY,8BAA8B,QAAQ;AACjE,WAAK;AAAA,eACI,MAAM,YAAY,mCAAmC,QAAQ;AACtE,WAAK;AAAA,eACI,MAAM,YAAY,mCAAmC,QAAQ;AAGtE,WAAK,uBAAuB,MAAM,IAAI,MAAM,KAAK,WAAW,QAAQ,MAAM,KAAK,QAAQ;AAAA,eAC9E,MAAM,YAAY,yBAAyB,QAAQ;AAC5D,WAAK,mBAAmB,MAAM,IAAI,MAAM,KAAK,eAAe,QAAQ,MAAM,KAAK;AAAA;AAAA;AAAA,EAI3E,wBAAwB,OAA+C;AAC7E,QAAI,gBAAgB,QAAQ;AAC1B,WAAK,oBAAoB,MAAM;AAAA;AAEjC,QAAI,CAAC,KAAK,sBACN,mBAAmB,iBAAiB,QAAQ,MAAM,SAA6C,GAAG;AACpG,WAAK,qBAAqB,IAAI,aAAa,KAAK,qBAAqB,MAAM;AAAA;AAE7E,QAAI,CAAC,KAAK,oBAAoB;AAC5B;AAAA;AAGF,QAAI,MAAM,YAAY,iCAAiC,UAAU,MAAM,KAAK,KAAK,SAAS;AACxF,WAAK,mBAAmB,cAAc,MAAM,KAAK,KAAK;AAAA;AAExD,QAAI,MAAM,YAAY,kBAAkB,QAAQ;AAC9C,YAAM,WAAW,qBAAqB,iBAAiB,kBAAkB,IAAI;AAC7E,UAAI,UAAU;AACZ,aAAK,mBAAmB,OAAO,KAAK,IAAI,gBAAgB,OAAO,UAAU,KAAK;AAAA;AAAA;AAKlF,QAAK,OAAM,YAAY,4BAA4B,UAAU,MAAM,YAAY,mBAAmB,WAC9F,MAAM,KAAK,mBAAmB,KAAK,aAAa;AAClD,WAAK;AAAA;AAAA;AAAA,SAIe,mBAAuD;AAAA,IAC7E,MAAM,YAAY,eAAe;AAAA,IACjC,MAAM,YAAY,eAAe;AAAA,IACjC,MAAM,YAAY,eAAe;AAAA,IACjC,MAAM,YAAY,eAAe;AAAA;AAAA;AAS9B,2BAAoB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACS;AAAA,EAET,YAAY,OAAe,WAAsC,iBAA4C;AAC3G,SAAK,QAAQ;AACb,SAAK,YAAY;AACjB,SAAK,kBAAkB;AACvB,SAAK,UAAU,KAAK;AACpB,SAAK,WAAW,MAAM,OAAO,aAAa;AAC1C,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,cAAc;AAAA;AAAA,EAGrB,WAAW,SAA0C;AACnD,SAAK,UAAU;AACf,SAAK,WAAW,MAAM,OAAO,aAAa,KAAK,UAAU,KAAK;AAAA;AAAA,EAGhE,aAAa,WAA0C;AACrD,SAAK,YAAY;AAAA;AAAA;AAQd,6BAAsB;AAAA,EACV;AAAA,EACA;AAAA;AAAA,EAGjB,YACI,OAA0C,UAC1C,QAAgC;AAClC,SAAK,gBAAgB;AACrB,qBAAiB;AACjB,SAAK,SAAS;AAAA;AAAA,EAGhB,UAAkB;AAEhB,WAAO,OAAO,KAAK,cAAc,KAAK,QAAQ;AAAA;AAAA,EAGhD,QAA2C;AACzC,WAAO,KAAK;AAAA;AAAA,EAGd,UAAuC;AAErC,UAAM,OAAO,eAAe,KAAK,SAAS,QAAQ;AAClD,UAAM,cAAc,eAAe,KAAK,SAAS;AACjD,WAAO,QAAQ,cAAc,EAAC,MAAY,mBAAmB,gBAAe;AAAA;AAAA,QAGxE,kBAGE;AACN,UAAM,qBAAqB,KAAK,UAAU,KAAK,OAAO,MAAM,IAAI,cAAc;AAC9E,UAAM,UAAU,KAAK;AACrB,QAAI,CAAC,WAAW,CAAC,oBAAoB;AACnC,aAAO;AAAA;AAET,UAAM,WAAW,MAAM,mBAAmB,aAAa,QAAQ;AAC/D,WAAO,WAAW,EAAC,MAAM,QAAQ,MAAM,aAAsB;AAAA;AAAA;AAI1D,0BAAmB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,aAAqB;AAC/B,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,cAAc;AAAA;AAAA;AAKvB,qBAAqB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,OAAe,WAAsC,WAAoB,WAAoB;AACvG,SAAK,QAAQ;AACb,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,YAAY;AAAA;AAAA;AAQd,0CAAmC;AAAA,EAChC,cAAwB;AAAA,EAGxB,YAEJ;AAAA,EAGJ,oBAAoB,OAAe,WAAsC,WAAoB,WACpF;AACP,QAAI,CAAE,UAAS,KAAK,YAAY;AAC9B,WAAK,UAAU,SAAS,IAAI,eAAe,OAAO,WAAW,WAAW;AACxE,WAAK,YAAY,KAAK;AAAA;AAAA;AAAA,EAK1B,WAAW,OAAe,WAA0B;AAClD,QAAI,SAAS,KAAK,WAAW;AAC3B,WAAK,UAAU,OAAO,YAAY;AAAA;AAAA;AAAA,EAItC,WAAW,OAAe,WAA0B;AAClD,QAAI,SAAS,KAAK,WAAW;AAC3B,WAAK,UAAU,OAAO,YAAY;AAAA;AAAA;AAAA,EAItC,qCAAqC,OAAiC;AACpE,UAAM,oBAAsC;AAI5C,QAAI,SAAS,KAAK,WAAW;AAO3B,aAAO,KAAK,YAAY,OAAO,OAAO;AACpC,cAAM,eAAe,KAAK,YAAY;AACtC,YAAI,KAAK,UAAU,cAAc,WAAW;AAC1C,4BAAkB,KAAK,KAAK,UAAU;AAAA;AAGxC,eAAO,KAAK,UAAU;AACtB,aAAK,YAAY;AAAA;AAInB,wBAAkB,KAAK,KAAK,UAAU;AACtC,aAAO,KAAK,UAAU;AACtB,WAAK,YAAY;AAAA;AAEnB,WAAO;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- {"compilerOptions":{"composite":true,"outDir":".","baseUrl":".","rootDir":"../../../../../../../front_end/models/trace/frames"},"files":["../../../../../../../front_end/models/trace/frames/frames.ts"],"references":[{"path":"./frames-tsconfig.json"}]}
@@ -1,58 +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
- "noImplicitOverride": true,
19
- "noImplicitReturns": true,
20
- "noUnusedLocals": false,
21
- "outDir": ".",
22
- "rootDir": "../../../../../../../front_end/models/trace/frames",
23
- "skipLibCheck": true,
24
- "sourceMap": true,
25
- "strict": true,
26
- "target": "esnext",
27
- "tsBuildInfoFile": "frames-tsconfig.json.tsbuildinfo",
28
- "typeRoots": [],
29
- "useUnknownInCatchVariables": false
30
- },
31
- "files": [
32
- "../../../../../../../front_end/models/trace/frames/TimelineFrameModel.ts",
33
- "../../../../../../../front_end/legacy/legacy-defs.d.ts",
34
- "../../../../../../../front_end/global_typings/global_defs.d.ts",
35
- "../../../../../../../front_end/global_typings/request_idle_callback.d.ts",
36
- "../../../../../../../node_modules/@types/filesystem/index.d.ts"
37
- ],
38
- "references": [
39
- {
40
- "path": "../../../core/platform/bundle-tsconfig.json"
41
- },
42
- {
43
- "path": "../../../core/sdk/bundle-tsconfig.json"
44
- },
45
- {
46
- "path": "../../../generated/generated-tsconfig.json"
47
- },
48
- {
49
- "path": "../handlers/bundle-tsconfig.json"
50
- },
51
- {
52
- "path": "../helpers/bundle-tsconfig.json"
53
- },
54
- {
55
- "path": "../types/bundle-tsconfig.json"
56
- }
57
- ]
58
- }
@@ -1,5 +0,0 @@
1
- import * as TimelineFrameModel from "./TimelineFrameModel.js";
2
- export {
3
- TimelineFrameModel
4
- };
5
- //# sourceMappingURL=frames.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../front_end/models/trace/frames/frames.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\nimport * as TimelineFrameModel from './TimelineFrameModel.js';\n\nexport {\n TimelineFrameModel,\n};\n"],
5
- "mappings": "AAIA;AAEA;AAAA;AAAA;",
6
- "names": []
7
- }
@@ -1,27 +0,0 @@
1
- import * as Animations from "./AnimationHandler.js";
2
- import * as AuctionWorklets from "./AuctionWorkletsHandler.js";
3
- import * as GPU from "./GPUHandler.js";
4
- import * as LayoutShifts from "./LayoutShiftsHandler.js";
5
- import * as Memory from "./MemoryHandler.js";
6
- import * as NetworkRequests from "./NetworkRequestsHandler.js";
7
- import * as PageLoadMetrics from "./PageLoadMetricsHandler.js";
8
- import * as Screenshots from "./ScreenshotsHandler.js";
9
- import * as UserInteractions from "./UserInteractionsHandler.js";
10
- import * as UserTimings from "./UserTimingsHandler.js";
11
- import * as Warnings from "./WarningsHandler.js";
12
- import * as Workers from "./WorkersHandler.js";
13
- export const ENABLED_TRACE_HANDLERS = {
14
- Animations,
15
- AuctionWorklets,
16
- UserTimings,
17
- PageLoadMetrics,
18
- UserInteractions,
19
- LayoutShifts,
20
- Screenshots,
21
- GPU,
22
- Memory,
23
- NetworkRequests,
24
- Warnings,
25
- Workers
26
- };
27
- //# sourceMappingURL=Migration.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../front_end/models/trace/handlers/Migration.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\nimport * as Animations from './AnimationHandler.js';\nimport * as AuctionWorklets from './AuctionWorkletsHandler.js';\nimport * as GPU from './GPUHandler.js';\nimport * as LayoutShifts from './LayoutShiftsHandler.js';\nimport * as Memory from './MemoryHandler.js';\nimport * as NetworkRequests from './NetworkRequestsHandler.js';\nimport * as PageLoadMetrics from './PageLoadMetricsHandler.js';\nimport type * as Renderer from './RendererHandler.js';\nimport type * as Samples from './SamplesHandler.js';\nimport * as Screenshots from './ScreenshotsHandler.js';\nimport type * as Types from './types.js';\nimport * as UserInteractions from './UserInteractionsHandler.js';\nimport * as UserTimings from './UserTimingsHandler.js';\nimport * as Warnings from './WarningsHandler.js';\nimport * as Workers from './WorkersHandler.js';\n\n// As we migrate the data engine we are incrementally enabling the new handlers\n// one by one, so we do not waste effort parsing data that we do not use. This\n// object should be updated when we add a new handler to enable it.\nexport const ENABLED_TRACE_HANDLERS = {\n Animations,\n AuctionWorklets,\n UserTimings,\n PageLoadMetrics,\n UserInteractions,\n LayoutShifts,\n Screenshots,\n GPU,\n Memory,\n NetworkRequests,\n Warnings,\n Workers,\n};\n\nexport type EnabledHandlersDuringMigration = typeof ENABLED_TRACE_HANDLERS;\n\n// Renderer and Samples handler are only executed when the panel is run\n// from the component examples server. Thus we mark them as optional\n// properties during the migration.\nexport type PartialTraceData = Readonly<Types.EnabledHandlerDataWithMeta<EnabledHandlersDuringMigration>>&{\n // eslint-disable-next-line @typescript-eslint/naming-convention\n readonly Renderer?: Readonly<ReturnType<typeof Renderer['data']>>,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n readonly Samples?: Readonly<ReturnType<typeof Samples['data']>>,\n};\n"],
5
- "mappings": "AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AACA;AAKO,aAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;",
6
- "names": []
7
- }