9
10
import type {Fiber} from './ReactInternalTypes';
11
12
+import type {Lanes} from './ReactFiberLane';
13
+
14
import getComponentNameFromFiber from './getComponentNameFromFiber';
15
14
-import {getGroupNameOfHighestPriorityLane} from './ReactFiberLane';
16
+import {
17
+ getGroupNameOfHighestPriorityLane,
18
+ includesOnlyHydrationLanes,
19
+ includesOnlyOffscreenLanes,
20
+ includesOnlyHydrationOrOffscreenLanes,
21
+} from './ReactFiberLane';
22
23
import {enableProfilerTimer} from 'shared/ReactFeatureFlags';
24
58
},
59
};
60
54
-export function setCurrentTrackFromLanes(lanes: number): void {
61
+export function setCurrentTrackFromLanes(lanes: Lanes): void {
62
reusableLaneDevToolDetails.track = getGroupNameOfHighestPriorityLane(lanes);
63
}
64
230
eventType: null | string,
231
eventIsRepeat: boolean,
232
renderStartTime: number,
233
+ lanes: Lanes,
234
): void {
235
if (supportsUserTiming) {
236
reusableLaneDevToolDetails.track = 'Blocking';
248
}
249
if (updateTime > 0) {
250
// Log the time from when we called setState until we started rendering.
243
- reusableLaneDevToolDetails.color = 'primary-light';
251
+ reusableLaneDevToolDetails.color = includesOnlyHydrationOrOffscreenLanes(
252
+ lanes,
253
+ )
254
+ ? 'tertiary-light'
255
+ : 'primary-light';
256
reusableLaneOptions.start = updateTime;
257
reusableLaneOptions.end = renderStartTime;
258
performance.measure('Blocked', reusableLaneOptions);
304
}
305
}
306
295
-export function logRenderPhase(startTime: number, endTime: number): void {
307
+export function logRenderPhase(
308
+ startTime: number,
309
+ endTime: number,
310
+ lanes: Lanes,
311
+): void {
312
if (supportsUserTiming) {
297
- reusableLaneDevToolDetails.color = 'primary-dark';
313
+ reusableLaneDevToolDetails.color = includesOnlyHydrationOrOffscreenLanes(
314
+ lanes,
315
+ )
316
+ ? 'tertiary-dark'
317
+ : 'primary-dark';
318
reusableLaneOptions.start = startTime;
319
reusableLaneOptions.end = endTime;
300
- performance.measure('Render', reusableLaneOptions);
320
+ performance.measure(
321
+ includesOnlyOffscreenLanes(lanes)
322
+ ? 'Prepared'
323
+ : includesOnlyHydrationLanes(lanes)
324
+ ? 'Hydrated'
325
+ : 'Render',
326
+ reusableLaneOptions,
327
+ );
328
}
329
}
330
331
export function logInterruptedRenderPhase(
332
startTime: number,
333
endTime: number,
334
+ lanes: Lanes,
335
): void {
336
if (supportsUserTiming) {
309
- reusableLaneDevToolDetails.color = 'primary-dark';
337
+ reusableLaneDevToolDetails.color = includesOnlyHydrationOrOffscreenLanes(
338
+ lanes,
339
+ )
340
+ ? 'tertiary-dark'
341
+ : 'primary-dark';
342
reusableLaneOptions.start = startTime;
343
reusableLaneOptions.end = endTime;
312
- performance.measure('Interrupted Render', reusableLaneOptions);
344
+ performance.measure(
345
+ includesOnlyOffscreenLanes(lanes)
346
+ ? 'Prewarm'
347
+ : includesOnlyHydrationLanes(lanes)
348
+ ? 'Interrupted Hydration'
349
+ : 'Interrupted Render',
350
+ reusableLaneOptions,
351
+ );
352
}
353
}
354
355
export function logSuspendedRenderPhase(
356
startTime: number,
357
endTime: number,
358
+ lanes: Lanes,
359
): void {
360
if (supportsUserTiming) {
321
- reusableLaneDevToolDetails.color = 'primary-dark';
361
+ reusableLaneDevToolDetails.color = includesOnlyHydrationOrOffscreenLanes(
362
+ lanes,
363
+ )
364
+ ? 'tertiary-dark'
365
+ : 'primary-dark';
366
reusableLaneOptions.start = startTime;
367
reusableLaneOptions.end = endTime;
368
performance.measure('Prewarm', reusableLaneOptions);
372
export function logSuspendedWithDelayPhase(
373
startTime: number,
374
endTime: number,
375
+ lanes: Lanes,
376
): void {
377
// This means the render was suspended and cannot commit until it gets unblocked.
378
if (supportsUserTiming) {
334
- reusableLaneDevToolDetails.color = 'primary-dark';
379
+ reusableLaneDevToolDetails.color = includesOnlyHydrationOrOffscreenLanes(
380
+ lanes,
381
+ )
382
+ ? 'tertiary-dark'
383
+ : 'primary-dark';
384
reusableLaneOptions.start = startTime;
385
reusableLaneOptions.end = endTime;
386
performance.measure('Suspended', reusableLaneOptions);
390
export function logErroredRenderPhase(
391
startTime: number,
392
endTime: number,
393
+ lanes: Lanes,
394
): void {
395
if (supportsUserTiming) {
396
reusableLaneDevToolDetails.color = 'error';