Skip to content

Commit d7bc47f

Browse files
RSNarafacebook-github-bot
authored andcommitted
Refactor: Read interop flag directly from feature flags
Summary: Read from react native feaure flags from within TurboModuleManager. This makes it easier to call installJSIBindings. The caller doesn't have to read from feature flags beforehand. Changelog: [Internal] Differential Revision: D89709217
1 parent 66b860a commit d7bc47f

File tree

5 files changed

+23
-24
lines changed

5 files changed

+23
-24
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactPackageTurboModuleManagerDelegate.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,6 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage
105105
}
106106
}
107107

108-
override fun unstable_shouldEnableLegacyModuleInterop(): Boolean = shouldEnableLegacyModuleInterop
109-
110108
override fun getModule(moduleName: String): TurboModule? {
111109
var resolvedModule: NativeModule? = null
112110

@@ -153,7 +151,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage
153151
}
154152

155153
override fun getLegacyModule(moduleName: String): NativeModule? {
156-
if (!unstable_shouldEnableLegacyModuleInterop()) {
154+
if (!shouldEnableLegacyModuleInterop) {
157155
return null
158156
}
159157

@@ -191,7 +189,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate : TurboModuleManage
191189
}
192190
}
193191

194-
private fun shouldSupportLegacyPackages(): Boolean = unstable_shouldEnableLegacyModuleInterop()
192+
private fun shouldSupportLegacyPackages(): Boolean = shouldEnableLegacyModuleInterop
195193

196194
public abstract class Builder {
197195
private var packages: List<ReactPackage>? = null

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManager.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public class TurboModuleManager(
6060

6161
init {
6262

63-
installJSIBindings(shouldEnableLegacyModuleInterop())
63+
installJSIBindings()
6464

6565
eagerInitModuleNames = delegate?.getEagerInitModuleNames() ?: emptyList()
6666

@@ -72,7 +72,7 @@ public class TurboModuleManager(
7272
ModuleProvider { moduleName: String -> delegate.getModule(moduleName) as NativeModule? }
7373

7474
legacyModuleProvider =
75-
if (delegate == null || !shouldEnableLegacyModuleInterop()) nullProvider
75+
if (delegate == null) nullProvider
7676
else
7777
ModuleProvider { moduleName: String ->
7878
val nativeModule = delegate.getLegacyModule(moduleName)
@@ -93,9 +93,6 @@ public class TurboModuleManager(
9393
private fun isLegacyModule(moduleName: String): Boolean =
9494
delegate?.unstable_isLegacyModuleRegistered(moduleName) == true
9595

96-
private fun shouldEnableLegacyModuleInterop(): Boolean =
97-
delegate?.unstable_shouldEnableLegacyModuleInterop() == true
98-
9996
// used from TurboModuleManager.cpp
10097
@Suppress("unused")
10198
@DoNotStrip
@@ -287,7 +284,7 @@ public class TurboModuleManager(
287284
tmmDelegate: TurboModuleManagerDelegate?,
288285
): HybridData
289286

290-
private external fun installJSIBindings(shouldCreateLegacyModules: Boolean)
287+
private external fun installJSIBindings()
291288

292289
override fun invalidate() {
293290
/*

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/turbomodule/core/TurboModuleManagerDelegate.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,6 @@ public abstract class TurboModuleManagerDelegate {
4848

4949
public open fun getEagerInitModuleNames(): List<String> = emptyList()
5050

51-
/** Can the TurboModule system create legacy modules? */
52-
public open fun unstable_shouldEnableLegacyModuleInterop(): Boolean = false
53-
5451
// TODO(T171231381): Consider removing this method: could we just use the static initializer
5552
// of derived classes instead?
5653
@Synchronized protected fun maybeLoadOtherSoLibraries(): Unit = Unit

packages/react-native/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <ReactCommon/JavaInteropTurboModule.h>
2020
#include <ReactCommon/TurboModuleBinding.h>
2121
#include <ReactCommon/TurboModulePerfLogger.h>
22+
#include <react/featureflags/ReactNativeFeatureFlags.h>
2223
#include <react/jni/CxxModuleWrapperBase.h>
2324

2425
namespace facebook::react {
@@ -227,6 +228,14 @@ std::shared_ptr<TurboModule> TurboModuleManager::getTurboModule(
227228
TurboModuleProviderFunctionTypeWithRuntime
228229
TurboModuleManager::createLegacyModuleProvider(
229230
jni::alias_ref<jhybridobject> javaPart) {
231+
bool shouldCreateLegacyModules =
232+
ReactNativeFeatureFlags::enableBridgelessArchitecture() &&
233+
ReactNativeFeatureFlags::useTurboModuleInterop();
234+
235+
if (!shouldCreateLegacyModules) {
236+
return nullptr;
237+
}
238+
230239
return [weakJavaPart = jni::make_weak(javaPart)](
231240
jsi::Runtime& /*runtime*/,
232241
const std::string& name) -> std::shared_ptr<TurboModule> {
@@ -314,21 +323,19 @@ std::shared_ptr<TurboModule> TurboModuleManager::getLegacyModule(
314323
}
315324

316325
void TurboModuleManager::installJSIBindings(
317-
jni::alias_ref<jhybridobject> javaPart,
318-
bool shouldCreateLegacyModules) {
326+
jni::alias_ref<jhybridobject> javaPart) {
319327
auto cxxPart = javaPart->cthis();
320328
if (cxxPart == nullptr || !cxxPart->jsCallInvoker_) {
321329
return; // Runtime doesn't exist when attached to Chrome debugger.
322330
}
323331

324-
cxxPart->runtimeExecutor_([javaPart = jni::make_global(javaPart),
325-
shouldCreateLegacyModules](jsi::Runtime& runtime) {
326-
TurboModuleBinding::install(
327-
runtime,
328-
createTurboModuleProvider(javaPart),
329-
shouldCreateLegacyModules ? createLegacyModuleProvider(javaPart)
330-
: nullptr);
331-
});
332+
cxxPart->runtimeExecutor_(
333+
[javaPart = jni::make_global(javaPart)](jsi::Runtime& runtime) {
334+
TurboModuleBinding::install(
335+
runtime,
336+
createTurboModuleProvider(javaPart),
337+
createLegacyModuleProvider(javaPart));
338+
});
332339
}
333340

334341
} // namespace facebook::react

packages/react-native/ReactAndroid/src/main/jni/react/turbomodule/ReactCommon/TurboModuleManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class TurboModuleManager : public jni::HybridClass<TurboModuleManager> {
5757
std::shared_ptr<NativeMethodCallInvoker> nativeMethodCallInvoker,
5858
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate);
5959

60-
static void installJSIBindings(jni::alias_ref<jhybridobject> javaPart, bool shouldCreateLegacyModules);
60+
static void installJSIBindings(jni::alias_ref<jhybridobject> javaPart);
6161

6262
static TurboModuleProviderFunctionTypeWithRuntime createTurboModuleProvider(jni::alias_ref<jhybridobject> javaPart);
6363
std::shared_ptr<TurboModule>

0 commit comments

Comments
 (0)