diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js index b49330a46be..cb199581de1 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaDelegate.js @@ -74,7 +74,7 @@ const PropSetterTemplate = ({propCases}: {propCases: string}) => const CommandsTemplate = ({commandCases}: {commandCases: string}) => ` @Override - public void receiveCommand(T view, String commandName, @Nullable ReadableArray args) { + public void receiveCommand(T view, String commandName, ReadableArray args) { switch (commandName) { ${commandCases} } diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap index f7c436912a8..e314686ad64 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsJavaDelegate-test.js.snap @@ -221,7 +221,7 @@ public class CommandNativeComponentManagerDelegate * @param args optional arguments for the command */ @Deprecated - public void receiveCommand(@NonNull T view, int commandId, @Nullable ReadableArray args) {} + public void receiveCommand(@NonNull T view, int commandId, ReadableArray args) {} /** * Subclasses may use this method to receive events/commands directly from JS through the {@link @@ -339,7 +339,7 @@ public abstract class ViewManager * @param commandId code of the command * @param args optional arguments for the command */ - public void receiveCommand(@NonNull T view, String commandId, @Nullable ReadableArray args) { + public void receiveCommand(@NonNull T view, String commandId, ReadableArray args) { getOrCreateViewManagerDelegate().receiveCommand(view, commandId, args); } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt index bffd01672e9..f380867cdb4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.kt @@ -55,7 +55,17 @@ public interface ViewManagerDelegate { @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("kotlinCompat\$receiveCommand") @JvmSynthetic - public fun receiveCommand(view: T, commandName: String, args: ReadableArray?) + public fun receiveCommand(view: T, commandName: String, args: ReadableArray) + + @Suppress("INAPPLICABLE_JVM_NAME") + @Deprecated( + message = "args is not nullable, please update your method signature", + replaceWith = + ReplaceWith("receiveCommand(view: T, commandName: String, args: ReadableArray)")) + @JvmName("kotlinCompat\$receiveCommandNullableArgs") + @JvmSynthetic + public fun receiveCommand(view: T, commandName: String, args: ReadableArray?): Unit = + receiveCommand(view, commandName, checkNotNull(args)) @Suppress("INAPPLICABLE_JVM_NAME") @Deprecated( @@ -63,5 +73,5 @@ public interface ViewManagerDelegate { replaceWith = ReplaceWith("receiveCommand(view, commandName, args)")) @JvmName("receiveCommand") public fun javaCompat_receiveCommand(view: T, commandName: String?, args: ReadableArray?): Unit = - receiveCommand(view, checkNotNull(commandName), args) + receiveCommand(view, checkNotNull(commandName), checkNotNull(args)) } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt index 48d812314e5..d61f559e8a7 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerPropertyUpdater.kt @@ -186,6 +186,6 @@ public object ViewManagerPropertyUpdater { } @Suppress("ACCIDENTAL_OVERRIDE") - override fun receiveCommand(view: T, commandName: String, args: ReadableArray?) = Unit + override fun receiveCommand(view: T, commandName: String, args: ReadableArray) = Unit } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/debuggingoverlay/DebuggingOverlayManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/debuggingoverlay/DebuggingOverlayManager.kt index 5dc8ff7d7d2..9c98ed740fb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/debuggingoverlay/DebuggingOverlayManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/debuggingoverlay/DebuggingOverlayManager.kt @@ -30,7 +30,7 @@ internal class DebuggingOverlayManager : override fun getDelegate(): ViewManagerDelegate = delegate - override fun receiveCommand(view: DebuggingOverlay, commandId: String, args: ReadableArray?) = + override fun receiveCommand(view: DebuggingOverlay, commandId: String, args: ReadableArray) = delegate.receiveCommand(view, commandId, args) override fun highlightTraceUpdates( diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt index 8f4144dfa31..5ee2e3aacc8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/drawer/ReactDrawerLayoutManager.kt @@ -173,7 +173,7 @@ public class ReactDrawerLayoutManager : public override fun receiveCommand( view: ReactDrawerLayout, commandId: String, - args: ReadableArray? + args: ReadableArray ): Unit = delegate.receiveCommand(view, commandId, args) public override fun getExportedViewConstants(): Map = diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.kt index ca3a5a913ad..1422a17bbfb 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/swiperefresh/SwipeRefreshLayoutManager.kt @@ -120,7 +120,7 @@ internal open class SwipeRefreshLayoutManager : override fun receiveCommand( view: ReactSwipeRefreshLayout, commandId: String, - args: ReadableArray? + args: ReadableArray ) = delegate.receiveCommand(view, commandId, args) override fun getExportedViewConstants(): MutableMap = diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt index 1b149f342b6..82218941848 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/switchview/ReactSwitchManager.kt @@ -95,7 +95,7 @@ internal class ReactSwitchManager : setValueInternal(view, value) } - override fun receiveCommand(view: ReactSwitch, commandId: String, args: ReadableArray?) = + override fun receiveCommand(view: ReactSwitch, commandId: String, args: ReadableArray) = delegate.receiveCommand(view, commandId, args) override fun addEventEmitters(reactContext: ThemedReactContext, view: ReactSwitch) { diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/fabric/FabricUIManagerTest.kt b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/fabric/FabricUIManagerTest.kt index ed12a4331dd..4205c86bfcd 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/fabric/FabricUIManagerTest.kt +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/fabric/FabricUIManagerTest.kt @@ -8,19 +8,19 @@ package com.facebook.react.fabric import com.facebook.react.bridge.BridgeReactContext +import com.facebook.react.bridge.JavaOnlyArray import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags +import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests import com.facebook.react.uimanager.ViewManagerRegistry import com.facebook.react.uimanager.events.BatchEventDispatchedListener import com.facebook.testutils.fakes.FakeBatchEventDispatchedListener import com.facebook.testutils.shadows.ShadowSoLoader import org.assertj.core.api.Assertions.assertThat -import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.MockedStatic -import org.mockito.Mockito.mockStatic import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.Config @@ -37,22 +37,17 @@ class FabricUIManagerTest { @Before fun setup() { - featureFlags = mockStatic(ReactNativeFeatureFlags::class.java) - featureFlags.`when` { ReactNativeFeatureFlags.enableFabricLogs() }.thenAnswer { false } + ReactNativeFeatureFlagsForTests.setUp() reactContext = BridgeReactContext(RuntimeEnvironment.getApplication()) viewManagerRegistry = ViewManagerRegistry(emptyList()) batchEventDispatchedListener = FakeBatchEventDispatchedListener() underTest = FabricUIManager(reactContext, viewManagerRegistry, batchEventDispatchedListener) } - @After - fun teardown() { - featureFlags.close() - } - @Test fun createDispatchCommandMountItemForInterop_withValidString_returnsStringEvent() { - val command = underTest.createDispatchCommandMountItemForInterop(11, 1, "anEvent", null) + val command = + underTest.createDispatchCommandMountItemForInterop(11, 1, "anEvent", JavaOnlyArray()) // DispatchStringCommandMountItem is package private so we can `as` check it. val className = command::class.java.name.substringAfterLast(".") @@ -61,7 +56,7 @@ class FabricUIManagerTest { @Test fun createDispatchCommandMountItemForInterop_withValidInt_returnsIntEvent() { - val command = underTest.createDispatchCommandMountItemForInterop(11, 1, "42", null) + val command = underTest.createDispatchCommandMountItemForInterop(11, 1, "42", JavaOnlyArray()) // DispatchIntCommandMountItem is package private so we can `as` check it. val className = command::class.java.name.substringAfterLast(".") diff --git a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/component/MyNativeViewManager.kt b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/component/MyNativeViewManager.kt index 8d66de87757..2b8d35f2f7c 100644 --- a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/component/MyNativeViewManager.kt +++ b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/component/MyNativeViewManager.kt @@ -37,7 +37,7 @@ internal class MyNativeViewManager : override fun createViewInstance(reactContext: ThemedReactContext): MyNativeView = MyNativeView(reactContext) - override fun receiveCommand(view: MyNativeView, commandName: String, args: ReadableArray?) { + override fun receiveCommand(view: MyNativeView, commandName: String, args: ReadableArray) { delegate.receiveCommand(view, commandName, args) }