Skip to content

Commit 7cf8dfd

Browse files
authored
[Transition Tracing] Create/Process Marker Complete Callback (#24700)
This PR adds code to add a marker complete callback to the queue. It also adds code to process marker complete callback. Marker complete callbacks, in addition to the fields that transition complete callbacks need, also have a `markerName` field
1 parent 327e4a1 commit 7cf8dfd

4 files changed

+78
-0
lines changed

packages/react-reconciler/src/ReactFiberTracingMarkerComponent.new.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ export type TransitionObject = {
2121
startTime: number,
2222
};
2323

24+
export type MarkerTransitionObject = TransitionObject & {markerName: string};
2425
export type PendingTransitionCallbacks = {
2526
transitionStart: Array<TransitionObject> | null,
2627
transitionComplete: Array<TransitionObject> | null,
28+
markerComplete: Array<MarkerTransitionObject> | null,
2729
};
2830

2931
export type Transition = {
@@ -58,6 +60,20 @@ export function processTransitionCallbacks(
5860
});
5961
}
6062

63+
const markerComplete = pendingTransitions.markerComplete;
64+
if (markerComplete !== null) {
65+
markerComplete.forEach(transition => {
66+
if (callbacks.onMarkerComplete != null) {
67+
callbacks.onMarkerComplete(
68+
transition.transitionName,
69+
transition.markerName,
70+
transition.startTime,
71+
endTime,
72+
);
73+
}
74+
});
75+
}
76+
6177
const transitionComplete = pendingTransitions.transitionComplete;
6278
if (transitionComplete !== null) {
6379
transitionComplete.forEach(transition => {

packages/react-reconciler/src/ReactFiberTracingMarkerComponent.old.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ export type TransitionObject = {
2121
startTime: number,
2222
};
2323

24+
export type MarkerTransitionObject = TransitionObject & {markerName: string};
2425
export type PendingTransitionCallbacks = {
2526
transitionStart: Array<TransitionObject> | null,
2627
transitionComplete: Array<TransitionObject> | null,
28+
markerComplete: Array<MarkerTransitionObject> | null,
2729
};
2830

2931
export type Transition = {
@@ -58,6 +60,20 @@ export function processTransitionCallbacks(
5860
});
5961
}
6062

63+
const markerComplete = pendingTransitions.markerComplete;
64+
if (markerComplete !== null) {
65+
markerComplete.forEach(transition => {
66+
if (callbacks.onMarkerComplete != null) {
67+
callbacks.onMarkerComplete(
68+
transition.transitionName,
69+
transition.markerName,
70+
transition.startTime,
71+
endTime,
72+
);
73+
}
74+
});
75+
}
76+
6177
const transitionComplete = pendingTransitions.transitionComplete;
6278
if (transitionComplete !== null) {
6379
transitionComplete.forEach(transition => {

packages/react-reconciler/src/ReactFiberWorkLoop.new.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import type {EventPriority} from './ReactEventPriorities.new';
1818
import type {
1919
PendingTransitionCallbacks,
2020
TransitionObject,
21+
MarkerTransitionObject,
2122
Transition,
2223
} from './ReactFiberTracingMarkerComponent.new';
2324

@@ -350,6 +351,7 @@ export function addTransitionStartCallbackToPendingTransition(
350351
currentPendingTransitionCallbacks = {
351352
transitionStart: [],
352353
transitionComplete: null,
354+
markerComplete: null,
353355
};
354356
}
355357

@@ -361,6 +363,26 @@ export function addTransitionStartCallbackToPendingTransition(
361363
}
362364
}
363365

366+
export function addMarkerCompleteCallbackToPendingTransition(
367+
transition: MarkerTransitionObject,
368+
) {
369+
if (enableTransitionTracing) {
370+
if (currentPendingTransitionCallbacks === null) {
371+
currentPendingTransitionCallbacks = {
372+
transitionStart: null,
373+
transitionComplete: null,
374+
markerComplete: [],
375+
};
376+
}
377+
378+
if (currentPendingTransitionCallbacks.markerComplete === null) {
379+
currentPendingTransitionCallbacks.markerComplete = [];
380+
}
381+
382+
currentPendingTransitionCallbacks.markerComplete.push(transition);
383+
}
384+
}
385+
364386
export function addTransitionCompleteCallbackToPendingTransition(
365387
transition: TransitionObject,
366388
) {
@@ -369,6 +391,7 @@ export function addTransitionCompleteCallbackToPendingTransition(
369391
currentPendingTransitionCallbacks = {
370392
transitionStart: null,
371393
transitionComplete: [],
394+
markerComplete: null,
372395
};
373396
}
374397

packages/react-reconciler/src/ReactFiberWorkLoop.old.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import type {EventPriority} from './ReactEventPriorities.old';
1818
import type {
1919
PendingTransitionCallbacks,
2020
TransitionObject,
21+
MarkerTransitionObject,
2122
Transition,
2223
} from './ReactFiberTracingMarkerComponent.old';
2324

@@ -349,6 +350,7 @@ export function addTransitionStartCallbackToPendingTransition(
349350
currentPendingTransitionCallbacks = {
350351
transitionStart: [],
351352
transitionComplete: null,
353+
markerComplete: null,
352354
};
353355
}
354356

@@ -360,6 +362,26 @@ export function addTransitionStartCallbackToPendingTransition(
360362
}
361363
}
362364

365+
export function addMarkerCompleteCallbackToPendingTransition(
366+
transition: MarkerTransitionObject,
367+
) {
368+
if (enableTransitionTracing) {
369+
if (currentPendingTransitionCallbacks === null) {
370+
currentPendingTransitionCallbacks = {
371+
transitionStart: null,
372+
transitionComplete: null,
373+
markerComplete: [],
374+
};
375+
}
376+
377+
if (currentPendingTransitionCallbacks.markerComplete === null) {
378+
currentPendingTransitionCallbacks.markerComplete = [];
379+
}
380+
381+
currentPendingTransitionCallbacks.markerComplete.push(transition);
382+
}
383+
}
384+
363385
export function addTransitionCompleteCallbackToPendingTransition(
364386
transition: TransitionObject,
365387
) {
@@ -368,6 +390,7 @@ export function addTransitionCompleteCallbackToPendingTransition(
368390
currentPendingTransitionCallbacks = {
369391
transitionStart: null,
370392
transitionComplete: [],
393+
markerComplete: null,
371394
};
372395
}
373396

0 commit comments

Comments
 (0)