Don't inject timeline hooks unless React supports profiling (#23151)

This gives DevTools a way to detect whether the current React renderer supports Timeline profiling. (Version alone isn't enough to detect this, neither is general profiling support– since these two are controlled by different feature flags.)
This commit is contained in:
Brian Vaughn 2022-01-20 11:11:26 -05:00 committed by GitHub
parent e12a9dfc96
commit 505c15c9ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 10 deletions

View File

@ -74,11 +74,19 @@ export function injectInternals(internals: Object): boolean {
return true;
}
try {
rendererID = hook.inject({
...internals,
getLaneLabelMap,
injectProfilingHooks,
});
if (enableSchedulingProfiler) {
// Conditionally inject these hooks only if Timeline profiler is supported by this build.
// This gives DevTools a way to feature detect that isn't tied to version number
// (since profiling and timeline are controlled by different feature flags).
internals = {
...internals,
getLaneLabelMap,
injectProfilingHooks,
};
}
rendererID = hook.inject(internals);
// We have successfully injected, so now it is safe to set up hooks.
injectedHook = hook;
} catch (err) {

View File

@ -74,11 +74,19 @@ export function injectInternals(internals: Object): boolean {
return true;
}
try {
rendererID = hook.inject({
...internals,
getLaneLabelMap,
injectProfilingHooks,
});
if (enableSchedulingProfiler) {
// Conditionally inject these hooks only if Timeline profiler is supported by this build.
// This gives DevTools a way to feature detect that isn't tied to version number
// (since profiling and timeline are controlled by different feature flags).
internals = {
...internals,
getLaneLabelMap,
injectProfilingHooks,
};
}
rendererID = hook.inject(internals);
// We have successfully injected, so now it is safe to set up hooks.
injectedHook = hook;
} catch (err) {