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
@@ -239,6 +239,7 @@ public abstract interface class com/facebook/react/ReactHost {
239
239
public abstract fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
240
240
public abstract fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
241
241
public abstract fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
242
+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
242
243
public abstract fun start ()Lcom/facebook/react/interfaces/TaskInterface;
243
244
}
244
245
@@ -1895,6 +1896,15 @@ public final class com/facebook/react/devsupport/DefaultDevLoadingViewImplementa
1895
1896
public final fun setDevLoadingEnabled (Z)V
1896
1897
}
1897
1898
1899
+
public final class com/facebook/react/devsupport/DevMenuConfiguration {
1900
+
public fun <init> ()V
1901
+
public fun <init> (ZZZ)V
1902
+
public synthetic fun <init> (ZZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
1903
+
public final fun getDevMenuEnabled ()Z
1904
+
public final fun getKeyboardShortcutsEnabled ()Z
1905
+
public final fun getShakeGestureEnabled ()Z
1906
+
}
1907
+
1898
1908
public class com/facebook/react/devsupport/DevServerHelper {
1899
1909
public fun <init> (Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;Landroid/content/Context;Lcom/facebook/react/packagerconnection/PackagerConnectionSettings;)V
1900
1910
public final fun closeInspectorConnection ()V
@@ -1936,17 +1946,20 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
1936
1946
public fun getCurrentActivity ()Landroid/app/Activity;
1937
1947
public final fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
1938
1948
public final fun getDevLoadingViewManager ()Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;
1949
+
public fun getDevMenuEnabled ()Z
1939
1950
public final fun getDevServerHelper ()Lcom/facebook/react/devsupport/DevServerHelper;
1940
1951
public final fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
1941
1952
public final fun getDevSupportEnabled ()Z
1942
1953
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
1943
1954
public final fun getJSAppBundleName ()Ljava/lang/String;
1955
+
public fun getKeyboardShortcutsEnabled ()Z
1944
1956
public final fun getLastErrorCookie ()I
1945
1957
public final fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
1946
1958
public final fun getLastErrorTitle ()Ljava/lang/String;
1947
1959
public final fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
1948
1960
public final fun getReactInstanceDevHelper ()Lcom/facebook/react/devsupport/ReactInstanceDevHelper;
1949
1961
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
1962
+
public final fun getShakeGestureEnabled ()Z
1950
1963
public fun getSourceMapUrl ()Ljava/lang/String;
1951
1964
public fun getSourceUrl ()Ljava/lang/String;
1952
1965
protected abstract fun getUniqueTag ()Ljava/lang/String;
@@ -1965,14 +1978,17 @@ public abstract class com/facebook/react/devsupport/DevSupportManagerBase : com/
1965
1978
public fun reloadSettings ()V
1966
1979
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
1967
1980
public final fun setDevLoadingViewManager (Lcom/facebook/react/devsupport/interfaces/DevLoadingViewManager;)V
1981
+
public fun setDevMenuEnabled (Z)V
1968
1982
public final fun setDevSupportEnabled (Z)V
1969
1983
public fun setFpsDebugEnabled (Z)V
1970
1984
public fun setHotModuleReplacementEnabled (Z)V
1985
+
public fun setKeyboardShortcutsEnabled (Z)V
1971
1986
public final fun setLastErrorCookie (I)V
1972
1987
public final fun setLastErrorStack ([Lcom/facebook/react/devsupport/interfaces/StackFrame;)V
1973
1988
public final fun setLastErrorTitle (Ljava/lang/String;)V
1974
1989
public final fun setLastErrorType (Lcom/facebook/react/devsupport/interfaces/ErrorType;)V
1975
1990
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
1991
+
public final fun setShakeGestureEnabled (Z)V
1976
1992
protected final fun showDevLoadingViewForRemoteJSEnabled ()V
1977
1993
public fun showDevOptionsDialog ()V
1978
1994
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
@@ -2029,14 +2045,17 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
2029
2045
public fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
2030
2046
public fun getCurrentActivity ()Landroid/app/Activity;
2031
2047
public fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2048
+
public fun getDevMenuEnabled ()Z
2032
2049
public fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
2033
2050
public fun getDevSupportEnabled ()Z
2034
2051
public fun getDownloadedJSBundleFile ()Ljava/lang/String;
2052
+
public fun getKeyboardShortcutsEnabled ()Z
2035
2053
public fun getLastErrorCookie ()I
2036
2054
public fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
2037
2055
public fun getLastErrorTitle ()Ljava/lang/String;
2038
2056
public fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
2039
2057
public fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2058
+
public fun getShakeGestureEnabled ()Z
2040
2059
public fun getSourceMapUrl ()Ljava/lang/String;
2041
2060
public fun getSourceUrl ()Ljava/lang/String;
2042
2061
public fun handleException (Ljava/lang/Exception;)V
@@ -2053,10 +2072,13 @@ public class com/facebook/react/devsupport/ReleaseDevSupportManager : com/facebo
2053
2072
public fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
2054
2073
public fun reloadSettings ()V
2055
2074
public fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2075
+
public fun setDevMenuEnabled (Z)V
2056
2076
public fun setDevSupportEnabled (Z)V
2057
2077
public fun setFpsDebugEnabled (Z)V
2058
2078
public fun setHotModuleReplacementEnabled (Z)V
2079
+
public fun setKeyboardShortcutsEnabled (Z)V
2059
2080
public fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2081
+
public fun setShakeGestureEnabled (Z)V
2060
2082
public fun showDevOptionsDialog ()V
2061
2083
public fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
2062
2084
public fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -2131,14 +2153,17 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
2131
2153
public abstract fun downloadBundleResourceFromUrlSync (Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
2132
2154
public abstract fun getCurrentActivity ()Landroid/app/Activity;
2133
2155
public abstract fun getCurrentReactContext ()Lcom/facebook/react/bridge/ReactContext;
2156
+
public fun getDevMenuEnabled ()Z
2134
2157
public abstract fun getDevSettings ()Lcom/facebook/react/modules/debug/interfaces/DeveloperSettings;
2135
2158
public abstract fun getDevSupportEnabled ()Z
2136
2159
public abstract fun getDownloadedJSBundleFile ()Ljava/lang/String;
2160
+
public fun getKeyboardShortcutsEnabled ()Z
2137
2161
public abstract fun getLastErrorCookie ()I
2138
2162
public abstract fun getLastErrorStack ()[Lcom/facebook/react/devsupport/interfaces/StackFrame;
2139
2163
public abstract fun getLastErrorTitle ()Ljava/lang/String;
2140
2164
public abstract fun getLastErrorType ()Lcom/facebook/react/devsupport/interfaces/ErrorType;
2141
2165
public abstract fun getRedBoxHandler ()Lcom/facebook/react/devsupport/interfaces/RedBoxHandler;
2166
+
public fun getShakeGestureEnabled ()Z
2142
2167
public abstract fun getSourceMapUrl ()Ljava/lang/String;
2143
2168
public abstract fun getSourceUrl ()Ljava/lang/String;
2144
2169
public abstract fun handleReloadJS ()V
@@ -2155,10 +2180,13 @@ public abstract interface class com/facebook/react/devsupport/interfaces/DevSupp
2155
2180
public abstract fun reloadJSFromServer (Ljava/lang/String;Lcom/facebook/react/devsupport/interfaces/BundleLoadCallback;)V
2156
2181
public abstract fun reloadSettings ()V
2157
2182
public abstract fun setAdditionalOptionForPackager (Ljava/lang/String;Ljava/lang/String;)V
2183
+
public fun setDevMenuEnabled (Z)V
2158
2184
public abstract fun setDevSupportEnabled (Z)V
2159
2185
public abstract fun setFpsDebugEnabled (Z)V
2160
2186
public abstract fun setHotModuleReplacementEnabled (Z)V
2187
+
public fun setKeyboardShortcutsEnabled (Z)V
2161
2188
public abstract fun setPackagerLocationCustomizer (Lcom/facebook/react/devsupport/interfaces/DevSupportManager$PackagerLocationCustomizer;)V
2189
+
public fun setShakeGestureEnabled (Z)V
2162
2190
public abstract fun showDevOptionsDialog ()V
2163
2191
public abstract fun showNewJSError (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;I)V
2164
2192
public abstract fun showNewJavaError (Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -3071,6 +3099,7 @@ public final class com/facebook/react/runtime/ReactHostImpl : com/facebook/react
3071
3099
public fun reload (Ljava/lang/String;)Lcom/facebook/react/interfaces/TaskInterface;
3072
3100
public fun removeBeforeDestroyListener (Lkotlin/jvm/functions/Function0;)V
3073
3101
public fun removeReactInstanceEventListener (Lcom/facebook/react/ReactInstanceEventListener;)V
3102
+
public fun setDevMenuConfiguration (Lcom/facebook/react/devsupport/DevMenuConfiguration;)V
3074
3103
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