You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Android: Add new configuration for DevSupportManager (#53557)
Summary:
Following the [RFC](react-native-community/discussions-and-proposals#925), this PR adds new `DevMenuConfiguration` object and extends `ReactHost` API for passing settings to the particular `DevSupportManager`. The `DevMenuConfiguration` includes:
- isDevMenuEnabled,
- isShakeGestureEnabled,
- areKeyboardShortcutsEnabled,
## Changelog:
[ANDROID][ADDED] - Add new configuration for `RCTDevMenu`
Test Plan:
Tested with different configuration on `DevMenuConfiguration`:
<details>
<summary>Click to view code</summary>
```kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
fullyDrawnReporter.addReporter()
maybeUpdateBackgroundColor()
reactDelegate?.reactHost?.let { reactHost ->
val devMenuConfiguration = DevMenuConfiguration(
isDevMenuEnabled = true,
isShakeGestureEnabled = false,
areKeyboardShortcutsEnabled = false,
)
reactHost.setDevMenuConfiguration(devMenuConfiguration)
}
// register insets listener to update margins on the ReactRootView to avoid overlap w/ system
// bars
reactDelegate?.reactRootView?.let { rootView ->
val insetsType: Int =
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()
val windowInsetsListener = { view: View, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(insetsType)
(view.layoutParams as FrameLayout.LayoutParams).apply {
setMargins(insets.left, insets.top, insets.right, insets.bottom)
}
WindowInsetsCompat.CONSUMED
}
ViewCompat.setOnApplyWindowInsetsListener(rootView, windowInsetsListener)
}
}
```
</details>
Differential Revision: D81684310
Pulled By: coado
Copy file name to clipboardExpand all lines: packages/react-native/ReactAndroid/api/ReactAndroid.api
+29Lines changed: 29 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -244,6 +244,7 @@ public abstract interface class com/facebook/react/ReactHost {
244
244
public abstract fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
245
245
public abstract fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
246
246
public abstract fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
247
+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
247
248
public abstract fun start ()Lcom/facebook/react/interfaces/TaskInterface;
248
249
}
249
250
@@ -1900,6 +1901,15 @@ public final class com/facebook/react/devsupport/DefaultDevLoadingViewImplementa
1900
1901
public final fun setDevLoadingEnabled (Z)V
1901
1902
}
1902
1903
1904
+
public final class com/facebook/react/devsupport/DevMenuConfiguration {
1905
+
public fun <init> ()V
1906
+
public fun <init> (ZZZ)V
1907
+
public synthetic fun <init> (ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
1908
+
public final fun getDevMenuEnabled ()Z
1909
+
public final fun getKeyboardShortcutsEnabled ()Z
1910
+
public final fun getShakeGestureEnabled ()Z
1911
+
}
1912
+
1903
1913
public class com/facebook/react/devsupport/DevServerHelper {
1904
1914
public fun <init> (Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;Landroid/content/Context;Lcom/facebook/react/packagerconnection/PackagerConnectionSettings;)V
1905
1915
public final fun closeInspectorConnection ()V
@@ -1941,17 +1951,20 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
1941
1951
public fun getCurrentActivity ()Landroid/app/Activity;
1942
1952
public final fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
1943
1953
public final fun getDevLoadingViewManager ()Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;
1954
+
public fun getDevMenuEnabled ()Z
1944
1955
public final fun getDevServerHelper ()Lcom/facebook/react/devsupport/DevServerHelper;
1945
1956
public final fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
1946
1957
public final fun getDevSupportEnabled ()Z
1947
1958
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
1948
1959
public final fun getJSAppBundleName ()Ljava/lang/String;
1960
+
public fun getKeyboardShortcutsEnabled ()Z
1949
1961
public final fun getLastErrorCookie ()I
1950
1962
public final fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
1951
1963
public final fun getLastErrorTitle ()Ljava/lang/String;
1952
1964
public final fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
1953
1965
public final fun getReactInstanceDevHelper ()Lcom/facebook/react/devsupport/ReactInstanceDevHelper;
1954
1966
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
1967
+
public final fun getShakeGestureEnabled ()Z
1955
1968
public fun getSourceMapUrl ()Ljava/lang/String;
1956
1969
public fun getSourceUrl ()Ljava/lang/String;
1957
1970
protected abstract fun getUniqueTag ()Ljava/lang/String;
@@ -1970,14 +1983,17 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
1970
1983
public fun reloadSettings ()V
1971
1984
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
1972
1985
public final fun setDevLoadingViewManager (Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;)V
1986
+
public fun setDevMenuEnabled (Z)V
1973
1987
public final fun setDevSupportEnabled (Z)V
1974
1988
public fun setFpsDebugEnabled (Z)V
1975
1989
public fun setHotModuleReplacementEnabled (Z)V
1990
+
public fun setKeyboardShortcutsEnabled (Z)V
1976
1991
public final fun setLastErrorCookie (I)V
1977
1992
public final fun setLastErrorStack ([Lcom/facebook/react/devsupport/interfaces/StackFrame;)V
1978
1993
public final fun setLastErrorTitle (Ljava/lang/String;)V
1979
1994
public final fun setLastErrorType (Lcom/facebook/react/devsupport/interfaces/ErrorType;)V
1980
1995
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
1996
+
public final fun setShakeGestureEnabled (Z)V
1981
1997
protected final fun showDevLoadingViewForRemoteJSEnabled ()V
1982
1998
public fun showDevOptionsDialog ()V
1983
1999
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
@@ -2034,14 +2050,17 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
2034
2050
public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
2035
2051
public fun getCurrentActivity ()Landroid/app/Activity;
2036
2052
public fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2053
+
public fun getDevMenuEnabled ()Z
2037
2054
public fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
2038
2055
public fun getDevSupportEnabled ()Z
2039
2056
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
2057
+
public fun getKeyboardShortcutsEnabled ()Z
2040
2058
public fun getLastErrorCookie ()I
2041
2059
public fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
2042
2060
public fun getLastErrorTitle ()Ljava/lang/String;
2043
2061
public fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
2044
2062
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2063
+
public fun getShakeGestureEnabled ()Z
2045
2064
public fun getSourceMapUrl ()Ljava/lang/String;
2046
2065
public fun getSourceUrl ()Ljava/lang/String;
2047
2066
public fun handleException (Ljava/lang/Exception;)V
@@ -2058,10 +2077,13 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
2058
2077
public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
2059
2078
public fun reloadSettings ()V
2060
2079
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2080
+
public fun setDevMenuEnabled (Z)V
2061
2081
public fun setDevSupportEnabled (Z)V
2062
2082
public fun setFpsDebugEnabled (Z)V
2063
2083
public fun setHotModuleReplacementEnabled (Z)V
2084
+
public fun setKeyboardShortcutsEnabled (Z)V
2064
2085
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2086
+
public fun setShakeGestureEnabled (Z)V
2065
2087
public fun showDevOptionsDialog ()V
2066
2088
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
2067
2089
public fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -2136,14 +2158,17 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
2136
2158
public abstract fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
2137
2159
public abstract fun getCurrentActivity ()Landroid/app/Activity;
2138
2160
public abstract fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2161
+
public fun getDevMenuEnabled ()Z
2139
2162
public abstract fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
2140
2163
public abstract fun getDevSupportEnabled ()Z
2141
2164
public abstract fun getDownloadedJSBundleFile ()Ljava/lang/String;
2165
+
public fun getKeyboardShortcutsEnabled ()Z
2142
2166
public abstract fun getLastErrorCookie ()I
2143
2167
public abstract fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
2144
2168
public abstract fun getLastErrorTitle ()Ljava/lang/String;
2145
2169
public abstract fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
2146
2170
public abstract fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2171
+
public fun getShakeGestureEnabled ()Z
2147
2172
public abstract fun getSourceMapUrl ()Ljava/lang/String;
2148
2173
public abstract fun getSourceUrl ()Ljava/lang/String;
2149
2174
public abstract fun handleReloadJS ()V
@@ -2160,10 +2185,13 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
2160
2185
public abstract fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
2161
2186
public abstract fun reloadSettings ()V
2162
2187
public abstract fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2188
+
public fun setDevMenuEnabled (Z)V
2163
2189
public abstract fun setDevSupportEnabled (Z)V
2164
2190
public abstract fun setFpsDebugEnabled (Z)V
2165
2191
public abstract fun setHotModuleReplacementEnabled (Z)V
2192
+
public fun setKeyboardShortcutsEnabled (Z)V
2166
2193
public abstract fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2194
+
public fun setShakeGestureEnabled (Z)V
2167
2195
public abstract fun showDevOptionsDialog ()V
2168
2196
public abstract fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
2169
2197
public abstract fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -3075,6 +3103,7 @@ public final class com/facebook/react/runtime/ReactHostImpl : com/facebook/react
3075
3103
public fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
3076
3104
public fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
3077
3105
public fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
3106
+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
3078
3107
public fun start ()Lcom/facebook/react/interfaces/TaskInterface;
Copy file name to clipboardExpand all lines: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/ReleaseDevSupportManager.kt
+13-1Lines changed: 13 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -70,7 +70,19 @@ public open class ReleaseDevSupportManager : DevSupportManager {
Copy file name to clipboardExpand all lines: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.kt
+12Lines changed: 12 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -36,6 +36,18 @@ public interface DevSupportManager : JSExceptionHandler {
0 commit comments