From 10d89b1effc365bf53ba4b27bd4daae45cf9ea3a Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Fri, 20 Sep 2019 10:48:50 -0700 Subject: [PATCH] Make TurboModuleManager accept a CallInvoker for the NativeModules thread Summary: In the previous diffs, I: 1. D17422165: Created a `CallInvoker` for the NativeModules thread. 2. D17422164: Exposed this `CallInvoker` via `CatalystInstance.getNativeCallInvokerHolder()`. In this diff, I: 1. Make TurboModuleManager accept the NativeModules thread `CallInvoker` as a constructor argument. Reviewed By: PeteTheHeat Differential Revision: D17422163 fbshipit-source-id: cbaac2fc06f7f726d89e0c545154123ad7410e62 --- .../turbomodule/core/TurboModuleManager.java | 15 ++++++++++++--- .../core/jni/ReactCommon/TurboModuleManager.cpp | 6 +++++- .../core/jni/ReactCommon/TurboModuleManager.h | 3 +++ 3 files changed, 20 insertions(+), 4 deletions(-) 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 b8a5b1a02d7..46a6216a34f 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 @@ -39,8 +39,14 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry { public TurboModuleManager( JavaScriptContextHolder jsContext, TurboModuleManagerDelegate tmmDelegate, - CallInvokerHolder instanceHolder) { - mHybridData = initHybrid(jsContext.get(), (CallInvokerHolderImpl) instanceHolder, tmmDelegate); + CallInvokerHolder jsCallInvokerHolder, + CallInvokerHolder nativeCallInvokerHolder) { + mHybridData = + initHybrid( + jsContext.get(), + (CallInvokerHolderImpl) jsCallInvokerHolder, + (CallInvokerHolderImpl) nativeCallInvokerHolder, + tmmDelegate); mTurbomoduleManagerDelegate = tmmDelegate; } @@ -78,7 +84,10 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry { } private native HybridData initHybrid( - long jsContext, CallInvokerHolderImpl jsQueue, TurboModuleManagerDelegate tmmDelegate); + long jsContext, + CallInvokerHolderImpl jsCallInvokerHolder, + CallInvokerHolderImpl nativeCallInvokerHolder, + TurboModuleManagerDelegate tmmDelegate); private native void installJSIBindings(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp index 0028efe6e2f..cfc5e37d310 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp @@ -24,11 +24,13 @@ TurboModuleManager::TurboModuleManager( jni::alias_ref jThis, jsi::Runtime* rt, std::shared_ptr jsCallInvoker, + std::shared_ptr nativeCallInvoker, jni::alias_ref delegate ): javaPart_(jni::make_global(jThis)), runtime_(rt), jsCallInvoker_(jsCallInvoker), + nativeCallInvoker_(nativeCallInvoker), delegate_(jni::make_global(delegate)) {} @@ -36,11 +38,13 @@ jni::local_ref TurboModuleManager::initHybrid( jni::alias_ref jThis, jlong jsContext, jni::alias_ref jsCallInvokerHolder, + jni::alias_ref nativeCallInvokerHolder, jni::alias_ref delegate ) { auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker(); + auto nativeCallInvoker = nativeCallInvokerHolder->cthis()->getCallInvoker(); - return makeCxxInstance(jThis, (jsi::Runtime *) jsContext, jsCallInvoker, delegate); + return makeCxxInstance(jThis, (jsi::Runtime *) jsContext, jsCallInvoker, nativeCallInvoker, delegate); } void TurboModuleManager::registerNatives() { diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h index 9e524f63689..65927078a48 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.h @@ -28,6 +28,7 @@ public: jni::alias_ref jThis, jlong jsContext, jni::alias_ref jsCallInvokerHolder, + jni::alias_ref nativeCallInvokerHolder, jni::alias_ref delegate ); static void registerNatives(); @@ -36,6 +37,7 @@ private: jni::global_ref javaPart_; jsi::Runtime* runtime_; std::shared_ptr jsCallInvoker_; + std::shared_ptr nativeCallInvoker_; jni::global_ref delegate_; /** @@ -51,6 +53,7 @@ private: jni::alias_ref jThis, jsi::Runtime *rt, std::shared_ptr jsCallInvoker, + std::shared_ptr nativeCallInvoker, jni::alias_ref delegate ); };