From c62fca75258ead4547a50323c6e94dcc119ad52d Mon Sep 17 00:00:00 2001 From: David Vacca Date: Thu, 30 Mar 2023 14:26:43 -0700 Subject: [PATCH] Reduce visibility of FabricComponentName mappings (#36602) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36602 This diff refactors and reduces visibility of the legacy class FabricComponents. This should not be a breaking change because nobody should be using it (there is no purpose to be used externally) changelog: [internal] internal change on the APIs Reviewed By: javache Differential Revision: D44112418 fbshipit-source-id: 5608d682ca4fddb8e50db82ff23668fd82dccfb6 --- .../react/fabric/FabricUIManager.java | 3 +- .../FabricNameComponentMapping.java | 50 +++++++++++++++++++ .../mountitems/IntBufferBatchMountItem.java | 2 +- .../mountitems/PreAllocateViewMountItem.java | 3 +- 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/FabricNameComponentMapping.java diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index 8139a36b68c..e080e6a2b0d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -9,7 +9,6 @@ package com.facebook.react.fabric; import static com.facebook.infer.annotation.ThreadConfined.ANY; import static com.facebook.infer.annotation.ThreadConfined.UI; -import static com.facebook.react.fabric.FabricComponents.getFabricComponentName; import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getMaxSize; import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getMinSize; import static com.facebook.react.fabric.mounting.LayoutMetricsConversions.getYogaMeasureMode; @@ -716,7 +715,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { new PreAllocateViewMountItem( rootTag, reactTag, - getFabricComponentName(componentName), + componentName, props, (StateWrapper) stateWrapper, (EventEmitterWrapper) eventEmitterWrapper, diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/FabricNameComponentMapping.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/FabricNameComponentMapping.java new file mode 100644 index 00000000000..bd5e1488227 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/FabricNameComponentMapping.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.fabric.mounting.mountitems; + +import androidx.annotation.NonNull; +import java.util.HashMap; +import java.util.Map; + +/** + * Utility class for Fabric components, this will be removed + * + *

TODO T97384889: remove this class when the component names are unified between JS - Android - + * iOS - C++ + */ +class FabricNameComponentMapping { + + private static @NonNull final Map sComponentNames = new HashMap<>(); + + static { + // TODO T97384889: unify component names between JS - Android - iOS - C++ + sComponentNames.put("View", "RCTView"); + sComponentNames.put("Image", "RCTImageView"); + sComponentNames.put("ScrollView", "RCTScrollView"); + sComponentNames.put("Slider", "RCTSlider"); + sComponentNames.put("ModalHostView", "RCTModalHostView"); + sComponentNames.put("Paragraph", "RCTText"); + sComponentNames.put("Text", "RCText"); + sComponentNames.put("RawText", "RCTRawText"); + sComponentNames.put("ActivityIndicatorView", "AndroidProgressBar"); + sComponentNames.put("ShimmeringView", "RKShimmeringView"); + sComponentNames.put("TemplateView", "RCTTemplateView"); + sComponentNames.put("AxialGradientView", "RCTAxialGradientView"); + sComponentNames.put("Video", "RCTVideo"); + sComponentNames.put("Map", "RCTMap"); + sComponentNames.put("WebView", "RCTWebView"); + sComponentNames.put("Keyframes", "RCTKeyframes"); + sComponentNames.put("ImpressionTrackingView", "RCTImpressionTrackingView"); + } + + /** @return the name of component in the Fabric environment */ + static String getFabricComponentName(String componentName) { + String component = sComponentNames.get(componentName); + return component != null ? component : componentName; + } +} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java index 9d110574ee8..84bcbeec909 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/IntBufferBatchMountItem.java @@ -7,9 +7,9 @@ package com.facebook.react.fabric.mounting.mountitems; -import static com.facebook.react.fabric.FabricComponents.getFabricComponentName; import static com.facebook.react.fabric.FabricUIManager.ENABLE_FABRIC_LOGS; import static com.facebook.react.fabric.FabricUIManager.IS_DEVELOPMENT_ENVIRONMENT; +import static com.facebook.react.fabric.mounting.mountitems.FabricNameComponentMapping.getFabricComponentName; import androidx.annotation.NonNull; import com.facebook.common.logging.FLog; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java index 0392f0846a0..4a0a67a18fc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/PreAllocateViewMountItem.java @@ -9,6 +9,7 @@ package com.facebook.react.fabric.mounting.mountitems; import static com.facebook.react.fabric.FabricUIManager.IS_DEVELOPMENT_ENVIRONMENT; import static com.facebook.react.fabric.FabricUIManager.TAG; +import static com.facebook.react.fabric.mounting.mountitems.FabricNameComponentMapping.getFabricComponentName; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -37,7 +38,7 @@ public class PreAllocateViewMountItem implements MountItem { @NonNull StateWrapper stateWrapper, @Nullable EventEmitterWrapper eventEmitterWrapper, boolean isLayoutable) { - mComponent = component; + mComponent = getFabricComponentName(component); mSurfaceId = surfaceId; mProps = props; mStateWrapper = stateWrapper;