Dispatch promise methods to the NativeModules thread

Summary:
In D17480605 (https://github.com/facebook/react-native/commit/689233b018bd533a7eecd38e38a7fb84b849cf88), I made all methods with void return types dispatch to the NativeModules thread. This diff makes the same change to methods with promise return types.

**Note:** The changes are disabled for now. I'll add an MC so that we can test this in production in a later diff.

Changelog:
[Android][Fixed] - Make promise NativeModule methods dispatch to NativeModules thread

Reviewed By: PeteTheHeat

Differential Revision: D22489338

fbshipit-source-id: d5b030871f9f7b3f48eb111225516521493cb05e
This commit is contained in:
Ramanpreet Nara
2020-07-31 12:49:14 -07:00
committed by Facebook GitHub Bot
parent aa1d31ebca
commit 9c35b5b8c4
6 changed files with 64 additions and 10 deletions
@@ -61,7 +61,8 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
jsContext.get(),
(CallInvokerHolderImpl) jsCallInvokerHolder,
(CallInvokerHolderImpl) nativeCallInvokerHolder,
delegate);
delegate,
false);
installJSIBindings();
mEagerInitModuleNames =
@@ -278,7 +279,8 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
long jsContext,
CallInvokerHolderImpl jsCallInvokerHolder,
CallInvokerHolderImpl nativeCallInvokerHolder,
TurboModuleManagerDelegate tmmDelegate);
TurboModuleManagerDelegate tmmDelegate,
boolean enablePromiseAsyncDispatch);
private native void installJSIBindings();
@@ -39,10 +39,13 @@ jni::local_ref<TurboModuleManager::jhybriddata> TurboModuleManager::initHybrid(
jlong jsContext,
jni::alias_ref<CallInvokerHolder::javaobject> jsCallInvokerHolder,
jni::alias_ref<CallInvokerHolder::javaobject> nativeCallInvokerHolder,
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate) {
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate,
bool enablePromiseAsyncDispatch) {
auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker();
auto nativeCallInvoker = nativeCallInvokerHolder->cthis()->getCallInvoker();
JavaTurboModule::enablePromiseAsyncDispatch(enablePromiseAsyncDispatch);
return makeCxxInstance(
jThis,
(jsi::Runtime *)jsContext,
@@ -30,7 +30,8 @@ class TurboModuleManager : public jni::HybridClass<TurboModuleManager> {
jlong jsContext,
jni::alias_ref<CallInvokerHolder::javaobject> jsCallInvokerHolder,
jni::alias_ref<CallInvokerHolder::javaobject> nativeCallInvokerHolder,
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate);
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate,
bool enablePromiseAsyncDispatch);
static void registerNatives();
private: