[DevTools] use backend manager to support multiple backends in extension (#26615)

In the extension, currently we do the following:
1. check whether there's at least one React renderer on the page
2. if yes, load the backend to the page
3. initialize the backend

To support multiple versions of backends, we are changing it to:
1. check the versions of React renders on the page
2. load corresponding React DevTools backends that are shipped with the
extension; if they are not contained (usually prod builds of
prereleases), show a UI to allow users to load them from UI
3. initialize each of the backends

To enable this workflow, a backend will ignore React renderers that does
not match its version

This PR adds a new file "backendManager" in the extension for this
purpose.

------
I've tested it on Chrome, Edge and Firefox extensions

DiffTrain build for commit https://github.com/facebook/react/commit/d962f35cac4e1b9e4c6d9320e60ca51037680296.
This commit is contained in:
mondaychen
2023-04-18 16:07:58 +00:00
parent 8537561412
commit ab60b82ecb
13 changed files with 19 additions and 19 deletions
@@ -23745,7 +23745,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-next-77d3b02e5-20230417";
var ReactVersion = "18.3.0-next-d962f35ca-20230418";
// Might add PROFILE later.
@@ -8587,7 +8587,7 @@ var devToolsConfig$jscomp$inline_1023 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-next-77d3b02e5-20230417",
version: "18.3.0-next-d962f35ca-20230418",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1206 = {
@@ -8618,7 +8618,7 @@ var internals$jscomp$inline_1206 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-77d3b02e5-20230417"
reconcilerVersion: "18.3.0-next-d962f35ca-20230418"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1207 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -9013,7 +9013,7 @@ var devToolsConfig$jscomp$inline_1065 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "18.3.0-next-77d3b02e5-20230417",
version: "18.3.0-next-d962f35ca-20230418",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1247 = {
@@ -9044,7 +9044,7 @@ var internals$jscomp$inline_1247 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-77d3b02e5-20230417"
reconcilerVersion: "18.3.0-next-d962f35ca-20230418"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1248 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -27,7 +27,7 @@ if (
}
"use strict";
var ReactVersion = "18.3.0-next-77d3b02e5-20230417";
var ReactVersion = "18.3.0-next-d962f35ca-20230418";
// ATTENTION
// When adding new symbols to this file,
@@ -639,4 +639,4 @@ exports.useSyncExternalStore = function (
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-next-77d3b02e5-20230417";
exports.version = "18.3.0-next-d962f35ca-20230418";
@@ -642,7 +642,7 @@ exports.useSyncExternalStore = function (
);
};
exports.useTransition = useTransition;
exports.version = "18.3.0-next-77d3b02e5-20230417";
exports.version = "18.3.0-next-d962f35ca-20230418";
/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
@@ -1 +1 @@
77d3b02e5c8bd92190d20c692fdbf2db01e3657b
d962f35cac4e1b9e4c6d9320e60ca51037680296
@@ -27052,7 +27052,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-next-77d3b02e5-20230417";
var ReactVersion = "18.3.0-next-d962f35ca-20230418";
function createPortal$1(
children,
@@ -9456,7 +9456,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1047 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "18.3.0-next-77d3b02e5-20230417",
version: "18.3.0-next-d962f35ca-20230418",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -9498,7 +9498,7 @@ var internals$jscomp$inline_1276 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-77d3b02e5-20230417"
reconcilerVersion: "18.3.0-next-d962f35ca-20230418"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1277 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -10165,7 +10165,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1125 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "18.3.0-next-77d3b02e5-20230417",
version: "18.3.0-next-d962f35ca-20230418",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -10220,7 +10220,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-77d3b02e5-20230417"
reconcilerVersion: "18.3.0-next-d962f35ca-20230418"
});
exports.createPortal = function (children, containerTag) {
return createPortal$1(
@@ -27565,7 +27565,7 @@ function createFiberRoot(
return root;
}
var ReactVersion = "18.3.0-next-77d3b02e5-20230417";
var ReactVersion = "18.3.0-next-d962f35ca-20230418";
function createPortal$1(
children,
@@ -9715,7 +9715,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1102 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "18.3.0-next-77d3b02e5-20230417",
version: "18.3.0-next-d962f35ca-20230418",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -9757,7 +9757,7 @@ var internals$jscomp$inline_1345 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-77d3b02e5-20230417"
reconcilerVersion: "18.3.0-next-d962f35ca-20230418"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1346 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -10424,7 +10424,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1180 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "18.3.0-next-77d3b02e5-20230417",
version: "18.3.0-next-d962f35ca-20230418",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForViewTag: function () {
@@ -10479,7 +10479,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "18.3.0-next-77d3b02e5-20230417"
reconcilerVersion: "18.3.0-next-d962f35ca-20230418"
});
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {
computeComponentStackForErrorReporting: function (reactTag) {