From bd7aa2c82dbcff677986b63963e6f03f7227f440 Mon Sep 17 00:00:00 2001 From: Phillip Pan Date: Tue, 28 Mar 2023 23:48:23 -0700 Subject: [PATCH] trigger codegenned reflection if module is a turbomodule (#36672) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36672 Changelog: [Internal] if we look at usages of ReactModuleWithSpec, we see that it's existence was to simply identify generated native modules since the inheritance graph of native modules was different if they were generated. this was introduced before we created the TurboModule interface, which all codegenned native modules also conform to. since that exists now, there's no need for both of these. this is the only callsite in our code where ReactModuleWithSpec triggers any logic, so i'm updating it. bypass-github-export-checks Reviewed By: javache Differential Revision: D44450687 fbshipit-source-id: f9c26fce8e360b6e319153aad83fc788079bac91 --- .../java/com/facebook/react/bridge/JavaModuleWrapper.java | 3 ++- .../react/turbomodule/core/TurboModuleInteropUtils.java | 4 ++-- .../ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK | 1 + .../java/com/facebook/react/bridge/BaseJavaModuleTest.java | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java index b9ea9bb79e4..0272cc4c21b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/JavaModuleWrapper.java @@ -16,6 +16,7 @@ import static com.facebook.systrace.Systrace.TRACE_TAG_REACT_JAVA_BRIDGE; import androidx.annotation.Nullable; import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.config.ReactFeatureFlags; +import com.facebook.react.turbomodule.core.interfaces.TurboModule; import com.facebook.systrace.Systrace; import com.facebook.systrace.SystraceMessage; import java.lang.reflect.Method; @@ -71,7 +72,7 @@ public class JavaModuleWrapper { Class classForMethods = mModuleHolder.getModule().getClass(); Class superClass = (Class) classForMethods.getSuperclass(); - if (ReactModuleWithSpec.class.isAssignableFrom(superClass)) { + if (TurboModule.class.isAssignableFrom(superClass)) { // For java module that is based on generated flow-type spec, inspect the // spec abstract class instead, which is the super class of the given java // module. diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleInteropUtils.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleInteropUtils.java index c6a729e79ca..b079f1cfda5 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleInteropUtils.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleInteropUtils.java @@ -14,11 +14,11 @@ import com.facebook.react.bridge.Dynamic; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReactModuleWithSpec; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; +import com.facebook.react.turbomodule.core.interfaces.TurboModule; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashSet; @@ -112,7 +112,7 @@ public class TurboModuleInteropUtils { Class classForMethods = module.getClass(); Class superClass = (Class) classForMethods.getSuperclass(); - if (ReactModuleWithSpec.class.isAssignableFrom(superClass)) { + if (TurboModule.class.isAssignableFrom(superClass)) { // For java module that is based on generated flow-type spec, inspect the // spec abstract class instead, which is the super class of the given java // module. diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK index 7bb8b24c8e4..d86795f2041 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BUCK @@ -40,6 +40,7 @@ rn_robolectric_test( react_native_dep("third-party/java/junit:junit"), react_native_target("java/com/facebook/react/bridge:bridge"), react_native_target("java/com/facebook/react/common:common"), + react_native_target("java/com/facebook/react/turbomodule/core/interfaces:interfaces"), react_native_target("java/com/facebook/react/uimanager:uimanager"), react_native_tests_target("java/com/facebook/common/logging:logging"), ], diff --git a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java index 6b7dbb01187..52919c2a1e7 100644 --- a/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java +++ b/packages/react-native/ReactAndroid/src/test/java/com/facebook/react/bridge/BaseJavaModuleTest.java @@ -10,6 +10,7 @@ package com.facebook.react.bridge; import static org.mockito.Mockito.when; import android.content.Context; +import com.facebook.react.turbomodule.core.interfaces.TurboModule; import com.facebook.soloader.SoLoader; import java.util.List; import org.junit.Before; @@ -127,7 +128,7 @@ public class BaseJavaModuleTest { } private abstract class NativeTestGeneratedModuleSpec extends BaseJavaModule - implements ReactModuleWithSpec { + implements TurboModule { @ReactMethod public abstract void generatedMethod(String a, int b); }