From 906474a709cede33650bc1e506aa3aec15007491 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Thu, 24 Apr 2025 22:06:30 -0700 Subject: [PATCH] Annotate Interop Event APIs (#50927) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/50927 Annotate Interop Event APIs changelog: [internal] internal Reviewed By: shwanton Differential Revision: D73407612 fbshipit-source-id: 90cd6d888b3d72c09e3eb4c5142cc50da65d9b4c --- .../facebook/react/bridge/interop/InteropModuleRegistry.kt | 4 ++-- .../java/com/facebook/react/internal/interop/InteropEvent.kt | 4 ++-- .../facebook/react/internal/interop/InteropEventEmitter.kt | 4 ++-- .../facebook/react/uimanager/events/EventDispatcherImpl.java | 2 ++ .../com/facebook/react/uimanager/events/EventEmitterImpl.kt | 2 ++ .../com/facebook/react/uimanager/events/RCTEventEmitter.kt | 2 ++ 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt index b81d27ae113..8b80477478d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/interop/InteropModuleRegistry.kt @@ -8,7 +8,7 @@ package com.facebook.react.bridge.interop import com.facebook.react.bridge.JavaScriptModule -import com.facebook.react.common.annotations.internal.LegacyArchitecture +import com.facebook.react.common.annotations.internal.InteropLegacyArchitecture import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger import com.facebook.react.internal.featureflags.ReactNativeNewArchitectureFeatureFlags.enableFabricRenderer import com.facebook.react.internal.featureflags.ReactNativeNewArchitectureFeatureFlags.useFabricInterop @@ -21,7 +21,7 @@ import com.facebook.react.internal.featureflags.ReactNativeNewArchitectureFeatur * Currently we only support a `RCTEventEmitter` re-implementation, being `InteropEventEmitter` but * this class can support other re-implementation in the future. */ -@LegacyArchitecture +@InteropLegacyArchitecture internal class InteropModuleRegistry { private val supportedModules = mutableMapOf, Any?>() diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEvent.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEvent.kt index d2e8d9f65fb..1e26457a5a3 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEvent.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEvent.kt @@ -8,7 +8,7 @@ package com.facebook.react.internal.interop import com.facebook.react.bridge.WritableMap -import com.facebook.react.common.annotations.internal.LegacyArchitecture +import com.facebook.react.common.annotations.internal.InteropLegacyArchitecture import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger import com.facebook.react.uimanager.events.Event @@ -17,7 +17,7 @@ import com.facebook.react.uimanager.events.Event * the data which is received by the `receiveEvent` method and will be passed over the the * [com.facebook.react.uimanager.events.EventDispatcher] */ -@LegacyArchitecture +@InteropLegacyArchitecture internal class InteropEvent( @get:JvmName("eventName") val interopEventName: String, @get:JvmName("eventData") val eventData: WritableMap?, diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt index d5b9452afa9..8407904046c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/interop/InteropEventEmitter.kt @@ -13,7 +13,7 @@ import com.facebook.react.bridge.ReactContext import com.facebook.react.bridge.WritableArray import com.facebook.react.bridge.WritableMap import com.facebook.react.common.annotations.VisibleForTesting -import com.facebook.react.common.annotations.internal.LegacyArchitecture +import com.facebook.react.common.annotations.internal.InteropLegacyArchitecture import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger import com.facebook.react.uimanager.UIManagerHelper import com.facebook.react.uimanager.events.EventDispatcher @@ -29,7 +29,7 @@ import com.facebook.react.uimanager.events.RCTEventEmitter * is providing support for the `receiveEvent` method, so that non-Fabric ViewManagers can continue * to deliver events also when Fabric is turned on. */ -@LegacyArchitecture +@InteropLegacyArchitecture internal class InteropEventEmitter(private val reactContext: ReactContext) : RCTEventEmitter { private var eventDispatcherOverride: EventDispatcher? = null diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java index 6d378a0ee39..8db41b54d21 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventDispatcherImpl.java @@ -15,6 +15,7 @@ import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.common.MapBuilder; +import com.facebook.react.common.annotations.internal.InteropLegacyArchitecture; import com.facebook.react.modules.core.ReactChoreographer; import com.facebook.systrace.Systrace; import java.util.ArrayList; @@ -55,6 +56,7 @@ import java.util.concurrent.atomic.AtomicInteger; * 0x0000ffff00000000 COALESCING_KEY_MASK = 0xffff000000000000 */ @Nullsafe(Nullsafe.Mode.LOCAL) +@InteropLegacyArchitecture public class EventDispatcherImpl implements EventDispatcher, LifecycleEventListener { private static final Comparator EVENT_COMPARATOR = diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventEmitterImpl.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventEmitterImpl.kt index 1733667dc3b..49a751599a5 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventEmitterImpl.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/EventEmitterImpl.kt @@ -15,6 +15,7 @@ import com.facebook.react.bridge.ReactNoCrashSoftException import com.facebook.react.bridge.ReactSoftExceptionLogger.logSoftException import com.facebook.react.bridge.WritableArray import com.facebook.react.bridge.WritableMap +import com.facebook.react.common.annotations.internal.InteropLegacyArchitecture import com.facebook.react.uimanager.common.UIManagerType import com.facebook.react.uimanager.common.ViewUtil.getUIManagerType @@ -25,6 +26,7 @@ import com.facebook.react.uimanager.common.ViewUtil.getUIManagerType * * This class is constructed both by Paper's EventDispatcherImpl and the FabricEventDispatcher. */ +@InteropLegacyArchitecture internal class EventEmitterImpl( private val reactContext: ReactApplicationContext, ) : RCTModernEventEmitter { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt index 521c00fad6d..53f660abf18 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/RCTEventEmitter.kt @@ -11,6 +11,7 @@ import com.facebook.proguard.annotations.DoNotStripAny import com.facebook.react.bridge.JavaScriptModule import com.facebook.react.bridge.WritableArray import com.facebook.react.bridge.WritableMap +import com.facebook.react.common.annotations.internal.InteropLegacyArchitecture /** * Paper JS interface to emit events from native to JS. @@ -18,6 +19,7 @@ import com.facebook.react.bridge.WritableMap * Deprecated in favor of [RCTModernEventEmitter], which works with both the old and new renderer. */ @DoNotStripAny +@InteropLegacyArchitecture @Deprecated("Use [RCTModernEventEmitter] instead") public interface RCTEventEmitter : JavaScriptModule { /**