Skip to content

Commit 1d26907

Browse files
motiz88facebook-github-bot
authored andcommitted
Internal API for Activity-less "Paused in debugger" overlay (#44132)
Summary: Pull Request resolved: #44132 Changelog: [Breaking][Android] `DevSupportManagerFactory.create()` changed to take an additional parameter of type `PausedInDebuggerOverlayManager` (nullable) Enables integrators of React Native Android to supply their own implementation of the Fusebox "paused in debugger" overlay. This is primarily intended for legacy Meta-internal integrations that can't use the built-in implementation based on `Dialog`. **The API will likely go away once those integrations have been migrated.** Reviewed By: javache Differential Revision: D56215119 fbshipit-source-id: 9cd79a6948c268a952ac28e5563ae57c90756da7
1 parent 2f1cd04 commit 1d26907

11 files changed

Lines changed: 163 additions & 54 deletions

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ public class com/facebook/react/ReactInstanceManagerBuilder {
297297
public fun setLazyViewManagersEnabled (Z)Lcom/facebook/react/ReactInstanceManagerBuilder;
298298
public fun setMinNumShakes (I)Lcom/facebook/react/ReactInstanceManagerBuilder;
299299
public fun setMinTimeLeftInFrameForNonBatchedOperationMs (I)Lcom/facebook/react/ReactInstanceManagerBuilder;
300+
public fun setPausedInDebuggerOverlayManager (Lcom/facebook/react/devsupport/interfaces/PausedInDebuggerOverlayManager;)Lcom/facebook/react/ReactInstanceManagerBuilder;
300301
public fun setReactPackageTurboModuleManagerDelegateBuilder (Lcom/facebook/react/ReactPackageTurboModuleManagerDelegate$Builder;)Lcom/facebook/react/ReactInstanceManagerBuilder;
301302
public fun setRedBoxHandler (Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;)Lcom/facebook/react/ReactInstanceManagerBuilder;
302303
public fun setRequireActivity (Z)Lcom/facebook/react/ReactInstanceManagerBuilder;
@@ -321,6 +322,7 @@ public abstract class com/facebook/react/ReactNativeHost {
321322
protected fun getJavaScriptExecutorFactory ()Lcom/facebook/react/bridge/JavaScriptExecutorFactory;
322323
public fun getLazyViewManagersEnabled ()Z
323324
protected abstract fun getPackages ()Ljava/util/List;
325+
protected fun getPausedInDebuggerOverlayManager ()Lcom/facebook/react/devsupport/interfaces/PausedInDebuggerOverlayManager;
324326
public fun getReactInstanceManager ()Lcom/facebook/react/ReactInstanceManager;
325327
protected fun getReactPackageTurboModuleManagerDelegateBuilder ()Lcom/facebook/react/ReactPackageTurboModuleManagerDelegate$Builder;
326328
protected fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
@@ -2031,7 +2033,7 @@ public final class com/facebook/react/defaults/DefaultTurboModuleManagerDelegate
20312033
}
20322034

20332035
public final class com/facebook/react/devsupport/BridgeDevSupportManager : com/facebook/react/devsupport/DevSupportManagerBase {
2034-
public fun <init> (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;)V
2036+
public fun <init> (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/PausedInDebuggerOverlayManager;)V
20352037
public fun handleReloadJS ()V
20362038
public fun loadSplitBundleFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevSplitBundleCallback;)V
20372039
}
@@ -2061,7 +2063,7 @@ public class com/facebook/react/devsupport/DefaultDevLoadingViewImplementation :
20612063
public final class com/facebook/react/devsupport/DefaultDevSupportManagerFactory : com/facebook/react/devsupport/DevSupportManagerFactory {
20622064
public fun <init> ()V
20632065
public final fun create (Landroid/content/Context;Lcom/facebook/react/devsupport/ReactInstanceDevHelper;Ljava/lang/String;ZI)Lcom/facebook/react/devsupport/interfaces/DevSupportManager;
2064-
public 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;
2066+
public 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/PausedInDebuggerOverlayManager;)Lcom/facebook/react/devsupport/interfaces/DevSupportManager;
20652067
}
20662068

20672069
public class com/facebook/react/devsupport/DevServerHelper {
@@ -2101,7 +2103,7 @@ public final class com/facebook/react/devsupport/DevSettingsActivity : android/p
21012103
}
21022104

21032105
public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/facebook/react/devsupport/interfaces/DevSupportManager {
2104-
public fun <init> (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;)V
2106+
public fun <init> (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/PausedInDebuggerOverlayManager;)V
21052107
public fun addCustomDevOption (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevOptionHandler;)V
21062108
public fun createRootView (Ljava/lang/String;)Landroid/view/View;
21072109
public fun createSurfaceDelegate (Ljava/lang/String;)Lcom/facebook/react/common/SurfaceDelegate;
@@ -2164,7 +2166,7 @@ public abstract interface class com/facebook/react/devsupport/DevSupportManagerB
21642166
}
21652167

21662168
public abstract interface class com/facebook/react/devsupport/DevSupportManagerFactory {
2167-
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;
2169+
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/PausedInDebuggerOverlayManager;)Lcom/facebook/react/devsupport/interfaces/DevSupportManager;
21682170
}
21692171

21702172
public final class com/facebook/react/devsupport/DoubleTapReloadRecognizer {
@@ -2461,6 +2463,11 @@ public abstract interface class com/facebook/react/devsupport/interfaces/Package
24612463
public abstract fun onPackagerStatusFetched (Z)V
24622464
}
24632465

2466+
public abstract interface class com/facebook/react/devsupport/interfaces/PausedInDebuggerOverlayManager {
2467+
public abstract fun hidePausedInDebuggerOverlay ()V
2468+
public abstract fun showPausedInDebuggerOverlay (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PausedInDebuggerOverlayCommandListener;)V
2469+
}
2470+
24642471
public abstract interface class com/facebook/react/devsupport/interfaces/RedBoxHandler {
24652472
public abstract fun handleRedbox (Ljava/lang/String;[Lcom/facebook/react/devsupport/interfaces/StackFrame;Lcom/facebook/react/devsupport/interfaces/ErrorType;)V
24662473
public abstract fun isReportEnabled ()Z

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
import com.facebook.react.devsupport.interfaces.DevSupportManager;
9090
import com.facebook.react.devsupport.interfaces.DevSupportManager.PausedInDebuggerOverlayCommandListener;
9191
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
92+
import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager;
9293
import com.facebook.react.devsupport.interfaces.RedBoxHandler;
9394
import com.facebook.react.internal.AndroidChoreographerProvider;
9495
import com.facebook.react.internal.ChoreographerProvider;
@@ -244,7 +245,8 @@ public static ReactInstanceManagerBuilder builder() {
244245
@Nullable ReactPackageTurboModuleManagerDelegate.Builder tmmDelegateBuilder,
245246
@Nullable SurfaceDelegateFactory surfaceDelegateFactory,
246247
@Nullable DevLoadingViewManager devLoadingViewManager,
247-
@Nullable ChoreographerProvider choreographerProvider) {
248+
@Nullable ChoreographerProvider choreographerProvider,
249+
@Nullable PausedInDebuggerOverlayManager pausedInDebuggerOverlayManager) {
248250
FLog.d(TAG, "ReactInstanceManager.ctor()");
249251
initializeSoLoaderIfNecessary(applicationContext);
250252

@@ -274,7 +276,8 @@ public static ReactInstanceManagerBuilder builder() {
274276
minNumShakes,
275277
customPackagerCommandHandlers,
276278
surfaceDelegateFactory,
277-
devLoadingViewManager);
279+
devLoadingViewManager,
280+
pausedInDebuggerOverlayManager);
278281
Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE);
279282
mBridgeIdleDebugListener = bridgeIdleDebugListener;
280283
mLifecycleState = initialLifecycleState;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
3232
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager;
3333
import com.facebook.react.devsupport.interfaces.DevSupportManager;
34+
import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager;
3435
import com.facebook.react.devsupport.interfaces.RedBoxHandler;
3536
import com.facebook.react.internal.ChoreographerProvider;
3637
import com.facebook.react.jscexecutor.JSCExecutor;
@@ -75,6 +76,7 @@ public class ReactInstanceManagerBuilder {
7576
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
7677
private @Nullable JSEngineResolutionAlgorithm mJSEngineResolutionAlgorithm = null;
7778
private @Nullable ChoreographerProvider mChoreographerProvider = null;
79+
private @Nullable PausedInDebuggerOverlayManager mPausedInDebuggerOverlayManager = null;
7880

7981
/* package protected */ ReactInstanceManagerBuilder() {}
8082

@@ -235,6 +237,12 @@ public ReactInstanceManagerBuilder setDevLoadingViewManager(
235237
return this;
236238
}
237239

240+
public ReactInstanceManagerBuilder setPausedInDebuggerOverlayManager(
241+
@Nullable PausedInDebuggerOverlayManager pausedInDebuggerOverlayManager) {
242+
mPausedInDebuggerOverlayManager = pausedInDebuggerOverlayManager;
243+
return this;
244+
}
245+
238246
/**
239247
* Sets the initial lifecycle state of the host. For example, if the host is already resumed at
240248
* creation time, we wouldn't expect an onResume call until we get an onPause call.
@@ -365,7 +373,8 @@ public ReactInstanceManager build() {
365373
mTMMDelegateBuilder,
366374
mSurfaceDelegateFactory,
367375
mDevLoadingViewManager,
368-
mChoreographerProvider);
376+
mChoreographerProvider,
377+
mPausedInDebuggerOverlayManager);
369378
}
370379

371380
private JavaScriptExecutorFactory getDefaultJSExecutorFactory(

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.facebook.react.common.annotations.DeprecatedInNewArchitecture;
2121
import com.facebook.react.devsupport.DevSupportManagerFactory;
2222
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager;
23+
import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager;
2324
import com.facebook.react.devsupport.interfaces.RedBoxHandler;
2425
import com.facebook.react.internal.ChoreographerProvider;
2526
import java.util.List;
@@ -96,7 +97,8 @@ protected ReactInstanceManagerBuilder getBaseReactInstanceManagerBuilder() {
9697
.setReactPackageTurboModuleManagerDelegateBuilder(
9798
getReactPackageTurboModuleManagerDelegateBuilder())
9899
.setJSEngineResolutionAlgorithm(getJSEngineResolutionAlgorithm())
99-
.setChoreographerProvider(getChoreographerProvider());
100+
.setChoreographerProvider(getChoreographerProvider())
101+
.setPausedInDebuggerOverlayManager(getPausedInDebuggerOverlayManager());
100102

101103
for (ReactPackage reactPackage : getPackages()) {
102104
builder.addPackage(reactPackage);
@@ -171,6 +173,10 @@ public SurfaceDelegateFactory getSurfaceDelegateFactory() {
171173
return null;
172174
}
173175

176+
protected @Nullable PausedInDebuggerOverlayManager getPausedInDebuggerOverlayManager() {
177+
return null;
178+
}
179+
174180
/**
175181
* Returns the name of the main module. Determines the URL used to fetch the JS bundle from Metro.
176182
* It is only used when dev support is enabled. This is the first file to be executed once the

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager;
3030
import com.facebook.react.devsupport.interfaces.DevOptionHandler;
3131
import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback;
32+
import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager;
3233
import com.facebook.react.devsupport.interfaces.RedBoxHandler;
3334
import com.facebook.react.packagerconnection.RequestHandler;
3435
import java.io.File;
@@ -74,7 +75,8 @@ public BridgeDevSupportManager(
7475
int minNumShakes,
7576
@Nullable Map<String, RequestHandler> customPackagerCommandHandlers,
7677
@Nullable SurfaceDelegateFactory surfaceDelegateFactory,
77-
@Nullable DevLoadingViewManager devLoadingViewManager) {
78+
@Nullable DevLoadingViewManager devLoadingViewManager,
79+
@Nullable PausedInDebuggerOverlayManager pausedInDebuggerOverlayManager) {
7880
super(
7981
applicationContext,
8082
reactInstanceManagerHelper,
@@ -85,7 +87,8 @@ public BridgeDevSupportManager(
8587
minNumShakes,
8688
customPackagerCommandHandlers,
8789
surfaceDelegateFactory,
88-
devLoadingViewManager);
90+
devLoadingViewManager,
91+
pausedInDebuggerOverlayManager);
8992

9093
if (getDevSettings().isStartSamplingProfilerOnInit()) {
9194
// Only start the profiler. If its already running, there is an error

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DefaultDevSupportManagerFactory.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.facebook.react.common.SurfaceDelegateFactory
1212
import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener
1313
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager
1414
import com.facebook.react.devsupport.interfaces.DevSupportManager
15+
import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager
1516
import com.facebook.react.devsupport.interfaces.RedBoxHandler
1617
import com.facebook.react.packagerconnection.RequestHandler
1718

@@ -25,7 +26,7 @@ public class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
2526
@Deprecated(
2627
"in favor of the customisable create for DevSupportManagerFactory",
2728
ReplaceWith(
28-
"create(applicationContext, reactInstanceManagerHelper, packagerPathForJSBundleName, enableOnCreate, redBoxHandler, devBundleDownloadListener, minNumShakes, customPackagerCommandHandlers, surfaceDelegateFactory, devLoadingViewManager)"))
29+
"create(applicationContext, reactInstanceManagerHelper, packagerPathForJSBundleName, enableOnCreate, redBoxHandler, devBundleDownloadListener, minNumShakes, customPackagerCommandHandlers, surfaceDelegateFactory, devLoadingViewManager, pausedInDebuggerOverlayManager)"))
2930
public fun create(
3031
applicationContext: Context,
3132
reactInstanceDevHelper: ReactInstanceDevHelper,
@@ -43,6 +44,7 @@ public class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
4344
minNumShakes,
4445
null,
4546
null,
47+
null,
4648
null)
4749
}
4850

@@ -56,7 +58,8 @@ public class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
5658
minNumShakes: Int,
5759
customPackagerCommandHandlers: Map<String, RequestHandler>?,
5860
surfaceDelegateFactory: SurfaceDelegateFactory?,
59-
devLoadingViewManager: DevLoadingViewManager?
61+
devLoadingViewManager: DevLoadingViewManager?,
62+
pausedInDebuggerOverlayManager: PausedInDebuggerOverlayManager?
6063
): DevSupportManager {
6164
return if (!enableOnCreate) {
6265
ReleaseDevSupportManager()
@@ -88,7 +91,8 @@ public class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
8891
Int::class.javaPrimitiveType,
8992
MutableMap::class.java,
9093
SurfaceDelegateFactory::class.java,
91-
DevLoadingViewManager::class.java)
94+
DevLoadingViewManager::class.java,
95+
PausedInDebuggerOverlayManager::class.java)
9296
constructor.newInstance(
9397
applicationContext,
9498
reactInstanceManagerHelper,
@@ -99,7 +103,8 @@ public class DefaultDevSupportManagerFactory : DevSupportManagerFactory {
99103
minNumShakes,
100104
customPackagerCommandHandlers,
101105
surfaceDelegateFactory,
102-
devLoadingViewManager) as DevSupportManager
106+
devLoadingViewManager,
107+
pausedInDebuggerOverlayManager) as DevSupportManager
103108
} catch (e: Exception) {
104109
PerftestDevSupportManager(applicationContext)
105110
}

0 commit comments

Comments
 (0)