diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 23055d29bc7..80b20bd1516 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -2143,52 +2143,6 @@ public abstract interface class com/facebook/react/devsupport/DevSupportManagerF public abstract fun create (Landroid/content/Context;Lcom/facebook/react/devsupport/ReactInstanceDevHelper;Ljava/lang/String;ZLcom/facebook/react/devsupport/interfaces/RedBoxHandler;Lcom/facebook/react/devsupport/interfaces/DevBundleDownloadListener;ILjava/util/Map;Lcom/facebook/react/common/SurfaceDelegateFactory;Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;)Lcom/facebook/react/devsupport/interfaces/DevSupportManager; } -public class com/facebook/react/devsupport/DisabledDevSupportManager : com/facebook/react/devsupport/interfaces/DevSupportManager { - public fun ()V - public fun addCustomDevOption (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevOptionHandler;)V - public fun createRootView (Ljava/lang/String;)Landroid/view/View; - public fun createSurfaceDelegate (Ljava/lang/String;)Lcom/facebook/react/common/SurfaceDelegate; - public fun destroyRootView (Landroid/view/View;)V - public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File; - public fun getCurrentActivity ()Landroid/app/Activity; - public fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings; - public fun getDevSupportEnabled ()Z - public fun getDownloadedJSBundleFile ()Ljava/lang/String; - public fun getJSBundleURLForRemoteDebugging ()Ljava/lang/String; - public fun getLastErrorCookie ()I - public fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame; - public fun getLastErrorTitle ()Ljava/lang/String; - public fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType; - public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler; - public fun getSourceMapUrl ()Ljava/lang/String; - public fun getSourceUrl ()Ljava/lang/String; - public fun handleException (Ljava/lang/Exception;)V - public fun handleReloadJS ()V - public fun hasUpToDateJSBundleInCache ()Z - public fun hideRedboxDialog ()V - public fun isPackagerRunning (Lcom/facebook/react/devsupport/interfaces/PackagerStatusCallback;)V - public fun loadSplitBundleFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevSplitBundleCallback;)V - public fun onNewReactContextCreated (Lcom/facebook/react/bridge/ReactContext;)V - public fun onReactInstanceDestroyed (Lcom/facebook/react/bridge/ReactContext;)V - public fun processErrorCustomizers (Landroid/util/Pair;)Landroid/util/Pair; - public fun registerErrorCustomizer (Lcom/facebook/react/devsupport/interfaces/ErrorCustomizer;)V - public fun reloadJSFromServer (Ljava/lang/String;)V - public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V - public fun reloadSettings ()V - public fun setDevSupportEnabled (Z)V - public fun setFpsDebugEnabled (Z)V - public fun setHotModuleReplacementEnabled (Z)V - public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V - public fun setRemoteJSDebugEnabled (Z)V - public fun showDevOptionsDialog ()V - public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V - public fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V - public fun startInspector ()V - public fun stopInspector ()V - public fun toggleElementInspector ()V - public fun updateJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V -} - public class com/facebook/react/devsupport/DoubleTapReloadRecognizer { public fun ()V public fun didDoubleTapR (ILandroid/view/View;)Z @@ -2263,7 +2217,7 @@ public class com/facebook/react/devsupport/PackagerStatusCheck { public fun run (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/PackagerStatusCallback;)V } -public final class com/facebook/react/devsupport/PerftestDevSupportManager : com/facebook/react/devsupport/DisabledDevSupportManager { +public final class com/facebook/react/devsupport/PerftestDevSupportManager : com/facebook/react/devsupport/ReleaseDevSupportManager { public fun (Landroid/content/Context;)V public fun getDevSettings ()Lcom/facebook/react/devsupport/DevInternalSettings; public synthetic fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings; @@ -2292,6 +2246,52 @@ public class com/facebook/react/devsupport/RedBoxContentView : android/widget/Li public fun setRedBoxHandler (Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;)Lcom/facebook/react/devsupport/RedBoxContentView; } +public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebook/react/devsupport/interfaces/DevSupportManager { + public fun ()V + public fun addCustomDevOption (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevOptionHandler;)V + public fun createRootView (Ljava/lang/String;)Landroid/view/View; + public fun createSurfaceDelegate (Ljava/lang/String;)Lcom/facebook/react/common/SurfaceDelegate; + public fun destroyRootView (Landroid/view/View;)V + public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File; + public fun getCurrentActivity ()Landroid/app/Activity; + public fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings; + public fun getDevSupportEnabled ()Z + public fun getDownloadedJSBundleFile ()Ljava/lang/String; + public fun getJSBundleURLForRemoteDebugging ()Ljava/lang/String; + public fun getLastErrorCookie ()I + public fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame; + public fun getLastErrorTitle ()Ljava/lang/String; + public fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType; + public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler; + public fun getSourceMapUrl ()Ljava/lang/String; + public fun getSourceUrl ()Ljava/lang/String; + public fun handleException (Ljava/lang/Exception;)V + public fun handleReloadJS ()V + public fun hasUpToDateJSBundleInCache ()Z + public fun hideRedboxDialog ()V + public fun isPackagerRunning (Lcom/facebook/react/devsupport/interfaces/PackagerStatusCallback;)V + public fun loadSplitBundleFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevSplitBundleCallback;)V + public fun onNewReactContextCreated (Lcom/facebook/react/bridge/ReactContext;)V + public fun onReactInstanceDestroyed (Lcom/facebook/react/bridge/ReactContext;)V + public fun processErrorCustomizers (Landroid/util/Pair;)Landroid/util/Pair; + public fun registerErrorCustomizer (Lcom/facebook/react/devsupport/interfaces/ErrorCustomizer;)V + public fun reloadJSFromServer (Ljava/lang/String;)V + public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V + public fun reloadSettings ()V + public fun setDevSupportEnabled (Z)V + public fun setFpsDebugEnabled (Z)V + public fun setHotModuleReplacementEnabled (Z)V + public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V + public fun setRemoteJSDebugEnabled (Z)V + public fun showDevOptionsDialog ()V + public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V + public fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V + public fun startInspector ()V + public fun stopInspector ()V + public fun toggleElementInspector ()V + public fun updateJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V +} + public class com/facebook/react/devsupport/StackTraceHelper { public static final field COLUMN_KEY Ljava/lang/String; public static final field LINE_NUMBER_KEY Ljava/lang/String; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java index 176fbf37b38..10475422026 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java @@ -15,8 +15,8 @@ import android.view.KeyEvent; import androidx.annotation.Nullable; import com.facebook.infer.annotation.Assertions; import com.facebook.react.config.ReactFeatureFlags; -import com.facebook.react.devsupport.DisabledDevSupportManager; import com.facebook.react.devsupport.DoubleTapReloadRecognizer; +import com.facebook.react.devsupport.ReleaseDevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.interfaces.fabric.ReactSurface; import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler; @@ -230,7 +230,7 @@ public class ReactDelegate { DevSupportManager devSupportManager = getDevSupportManager(); if (devSupportManager != null) { // With Bridgeless enabled, reload in RELEASE mode - if (devSupportManager instanceof DisabledDevSupportManager + if (devSupportManager instanceof ReleaseDevSupportManager && ReactFeatureFlags.enableBridgelessArchitecture && mReactHost != null) { // Do not reload the bundle from JS as there is no bundler running in release mode. diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java index 3c288f2fab4..34b58bc4b6c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.java @@ -23,7 +23,7 @@ import java.util.Map; * A simple factory that creates instances of {@link DevSupportManager} implementations. Uses * reflection to create BridgeDevSupportManager if it exists. This allows ProGuard to strip that * class and its dependencies in release builds. If the class isn't found, {@link - * DisabledDevSupportManager} is returned instead. + * ReleaseDevSupportManager} is returned instead. */ @Nullsafe(Nullsafe.Mode.LOCAL) public class DefaultDevSupportManagerFactory implements DevSupportManagerFactory { @@ -68,7 +68,7 @@ public class DefaultDevSupportManagerFactory implements DevSupportManagerFactory @Nullable SurfaceDelegateFactory surfaceDelegateFactory, @Nullable DevLoadingViewManager devLoadingViewManager) { if (!enableOnCreate) { - return new DisabledDevSupportManager(); + return new ReleaseDevSupportManager(); } // Developer support is enabled, we now must choose whether to return a DevSupportManager, // or a more lean profiling-only PerftestDevSupportManager. We make the choice by first diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java index 3c4b45642ed..4e832f054cb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/PerftestDevSupportManager.java @@ -15,7 +15,7 @@ import com.facebook.infer.annotation.Nullsafe; * Communication is enabled via the Inspector, but everything else is disabled. */ @Nullsafe(Nullsafe.Mode.LOCAL) -public final class PerftestDevSupportManager extends DisabledDevSupportManager { +public final class PerftestDevSupportManager extends ReleaseDevSupportManager { private final DevServerHelper mDevServerHelper; private final DevInternalSettings mDevSettings; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.java similarity index 97% rename from packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java rename to packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.java index 4c965eba443..a3d7af149ea 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.java @@ -31,11 +31,11 @@ import java.io.File; * A dummy implementation of {@link DevSupportManager} to be used in production mode where * development features aren't needed. */ -public class DisabledDevSupportManager implements DevSupportManager { +public class ReleaseDevSupportManager implements DevSupportManager { private final DefaultJSExceptionHandler mDefaultJSExceptionHandler; - public DisabledDevSupportManager() { + public ReleaseDevSupportManager() { mDefaultJSExceptionHandler = new DefaultJSExceptionHandler(); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java index 84c756550cf..41636b600ac 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java @@ -21,7 +21,7 @@ import java.io.File; /** * Interface for accessing and interacting with development features. In dev mode, use the * implementation {@link BridgeDevSupportManager}. In production mode, use the dummy implementation - * {@link DisabledDevSupportManager}. + * {@link ReleaseDevSupportManager}. */ public interface DevSupportManager extends JSExceptionHandler { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java index 76d4da79b95..ba13735ed6e 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java @@ -49,8 +49,8 @@ import com.facebook.react.bridge.queue.ReactQueueConfiguration; import com.facebook.react.common.LifecycleState; import com.facebook.react.common.build.ReactBuildConfig; import com.facebook.react.devsupport.DevSupportManagerBase; -import com.facebook.react.devsupport.DisabledDevSupportManager; import com.facebook.react.devsupport.InspectorFlags; +import com.facebook.react.devsupport.ReleaseDevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.fabric.ComponentFactory; import com.facebook.react.fabric.FabricUIManager; @@ -183,7 +183,7 @@ public class ReactHostImpl implements ReactHost { new BridgelessDevSupportManager( ReactHostImpl.this, mContext, mReactHostDelegate.getJsMainModulePath()); } else { - mDevSupportManager = new DisabledDevSupportManager(); + mDevSupportManager = new ReleaseDevSupportManager(); } mUseDevSupport = useDevSupport; } diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/runtime/ReactHostTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/runtime/ReactHostTest.kt index e82b56d9c0a..07d770eef58 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/runtime/ReactHostTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/runtime/ReactHostTest.kt @@ -15,7 +15,7 @@ import com.facebook.react.bridge.MemoryPressureListener import com.facebook.react.bridge.UIManager import com.facebook.react.common.LifecycleState import com.facebook.react.common.annotations.UnstableReactNativeAPI -import com.facebook.react.devsupport.DisabledDevSupportManager +import com.facebook.react.devsupport.ReleaseDevSupportManager import com.facebook.react.devsupport.interfaces.PackagerStatusCallback import com.facebook.react.fabric.ComponentFactory import com.facebook.react.interfaces.TaskInterface @@ -121,13 +121,13 @@ class ReactHostTest { @Test fun testGetDevSupportManager() { // BridgelessDevSupportManager is created only for debug - // we check if it was instantiated or if DisabledDevSupportManager was created (for release). + // we check if it was instantiated or if ReleaseDevSupportManager was created (for release). if (mockedDevSupportManagerCtor.constructed().isNotEmpty()) { val devSupportManager = mockedDevSupportManagerCtor.constructed().first() Assertions.assertThat(reactHost.devSupportManager).isEqualTo(devSupportManager) } else { Assertions.assertThat(reactHost.devSupportManager) - .isInstanceOf(DisabledDevSupportManager::class.java) + .isInstanceOf(ReleaseDevSupportManager::class.java) } }