From e5a8e3a53e8106b861624ece5e7a70e662548467 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Fri, 7 Jun 2019 13:08:28 -0700 Subject: [PATCH] Initialize TurboModules after creation Summary: When `ModuleHolder` instantiates `NativeModules`, it calls the `initialize()` method. We should replicate this call in the TurboModule system. `NativeModule.initialize()` is meant to be called after ReactApplicationContext is initialized. TurboModuleManager is initialized after ReactApplicationContext is initialized. Therefore, after we create the TurboModule, it should be safe to call `initialize()` on it. Reviewed By: mdvacca Differential Revision: D15711540 fbshipit-source-id: c2ef1a2ab164996bfc5716d81b3b3c716bf0e120 --- .../react/turbomodule/core/TurboModuleManager.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java index 511dd690f31..c887c777bc0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java @@ -12,6 +12,7 @@ import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.CatalystInstance; import com.facebook.react.bridge.JSIModule; import com.facebook.react.bridge.JavaScriptContextHolder; +import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.turbomodule.core.interfaces.JSCallInvokerHolder; @@ -53,6 +54,12 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry { final TurboModule turboModule = mTurbomoduleManagerDelegate.getModule(name); if (turboModule != null) { + /** + * TurboModuleManager is initialized after ReactApplicationContext has been setup. + * Therefore, it's safe to call initialize on the TurboModule. + */ + ((NativeModule)turboModule).initialize(); + mTurboModules.put(name, turboModule); } }