From 13f100f788063be2a30109c3f7fee386cb766ec4 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Tue, 2 Feb 2021 20:46:40 -0800 Subject: [PATCH] Move TurboModuleManager creation into ReactInstanceManager Summary: See title. Changelog: [Android][Changed] - Move TurboModuleManager creation into ReactInstanceManager Reviewed By: mdvacca Differential Revision: D26193053 fbshipit-source-id: fe92636f0cb3dca65fa919ac5df8931b693f76c5 --- .../facebook/react/ReactInstanceManager.java | 19 ++++++-- .../react/uiapp/RNTesterApplication.java | 46 ++++--------------- 2 files changed, 23 insertions(+), 42 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index a3d5ee67807..88f6c8df38f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -54,7 +54,6 @@ import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.CatalystInstance; import com.facebook.react.bridge.CatalystInstanceImpl; import com.facebook.react.bridge.JSBundleLoader; -import com.facebook.react.bridge.JSIModule; import com.facebook.react.bridge.JSIModulePackage; import com.facebook.react.bridge.JSIModuleType; import com.facebook.react.bridge.JavaJSExecutor; @@ -93,6 +92,8 @@ import com.facebook.react.modules.debug.interfaces.DeveloperSettings; import com.facebook.react.modules.fabric.ReactFabric; import com.facebook.react.packagerconnection.RequestHandler; import com.facebook.react.surface.ReactStage; +import com.facebook.react.turbomodule.core.TurboModuleManager; +import com.facebook.react.turbomodule.core.TurboModuleManagerDelegate; import com.facebook.react.turbomodule.core.interfaces.TurboModuleRegistry; import com.facebook.react.uimanager.DisplayMetricsHolder; import com.facebook.react.uimanager.ReactRoot; @@ -1292,9 +1293,19 @@ public class ReactInstanceManager { mJSIModulePackage.getJSIModules( reactContext, catalystInstance.getJavaScriptContextHolder())); - if (ReactFeatureFlags.useTurboModules) { - JSIModule turboModuleManager = - catalystInstance.getJSIModule(JSIModuleType.TurboModuleManager); + if (ReactFeatureFlags.useTurboModules && mTMMDelegateBuilder != null) { + TurboModuleManagerDelegate tmmDelegate = + mTMMDelegateBuilder + .setPackages(mPackages) + .setReactApplicationContext(reactContext) + .build(); + + TurboModuleManager turboModuleManager = + new TurboModuleManager( + catalystInstance.getRuntimeExecutor(), + tmmDelegate, + catalystInstance.getJSCallInvokerHolder(), + catalystInstance.getNativeCallInvokerHolder()); catalystInstance.setTurboModuleManager(turboModuleManager); diff --git a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java index c11fd2a24c7..6d014d9dac3 100644 --- a/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java +++ b/packages/rn-tester/android/app/src/main/java/com/facebook/react/uiapp/RNTesterApplication.java @@ -15,8 +15,8 @@ import com.facebook.react.ReactApplication; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; +import com.facebook.react.ReactPackageTurboModuleManagerDelegate; import com.facebook.react.TurboReactPackage; -import com.facebook.react.bridge.JSIModule; import com.facebook.react.bridge.JSIModulePackage; import com.facebook.react.bridge.JSIModuleProvider; import com.facebook.react.bridge.JSIModuleSpec; @@ -33,7 +33,6 @@ import com.facebook.react.fabric.ReactNativeConfig; import com.facebook.react.module.model.ReactModuleInfo; import com.facebook.react.module.model.ReactModuleInfoProvider; import com.facebook.react.shell.MainReactPackage; -import com.facebook.react.turbomodule.core.TurboModuleManager; import com.facebook.react.uimanager.ViewManagerRegistry; import com.facebook.react.views.text.ReactFontManager; import com.facebook.soloader.SoLoader; @@ -108,6 +107,13 @@ public class RNTesterApplication extends Application implements ReactApplication }); } + @Nullable + @Override + protected ReactPackageTurboModuleManagerDelegate.Builder + getReactPackageTurboModuleManagerDelegateBuilder() { + return new RNTesterTurboModuleManagerDelegate.Builder(); + } + @Nullable @Override protected JSIModulePackage getJSIModulePackage() { @@ -122,42 +128,6 @@ public class RNTesterApplication extends Application implements ReactApplication final JavaScriptContextHolder jsContext) { final List specs = new ArrayList<>(); - // Install the new native module system. - if (ReactFeatureFlags.useTurboModules) { - specs.add( - new JSIModuleSpec() { - @Override - public JSIModuleType getJSIModuleType() { - return JSIModuleType.TurboModuleManager; - } - - @Override - public JSIModuleProvider getJSIModuleProvider() { - return new JSIModuleProvider() { - @Override - public JSIModule get() { - final ReactInstanceManager reactInstanceManager = - getReactInstanceManager(); - final List packages = reactInstanceManager.getPackages(); - - return new TurboModuleManager( - reactApplicationContext.getCatalystInstance().getRuntimeExecutor(), - new RNTesterTurboModuleManagerDelegate.Builder() - .setPackages(packages) - .setReactApplicationContext(reactApplicationContext) - .build(), - reactApplicationContext - .getCatalystInstance() - .getJSCallInvokerHolder(), - reactApplicationContext - .getCatalystInstance() - .getNativeCallInvokerHolder()); - } - }; - } - }); - } - // Install the new renderer. if (BuildConfig.ENABLE_FABRIC) { specs.add(