mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
introduce unstable_enableSyncVoidMethods config (#39989)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39989 Changelog: [Internal] we need some configuration path to turn on the sync void method execution behavior, doing that here Reviewed By: luluwu2032 Differential Revision: D50028200 fbshipit-source-id: a2501b622685e4bafa5e2a5031275cc8bc5050b7
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b41a2f92ae
commit
2e16785424
+7
-2
@@ -71,7 +71,7 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
(CallInvokerHolderImpl) jsCallInvokerHolder,
|
||||
(NativeMethodCallInvokerHolderImpl) nativeMethodCallInvokerHolder,
|
||||
delegate);
|
||||
installJSIBindings(shouldEnableLegacyModuleInterop());
|
||||
installJSIBindings(shouldEnableLegacyModuleInterop(), enableSyncVoidMethods());
|
||||
|
||||
mEagerInitModuleNames =
|
||||
delegate == null ? new ArrayList<>() : delegate.getEagerInitModuleNames();
|
||||
@@ -116,6 +116,10 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
&& mDelegate.unstable_shouldRouteTurboModulesThroughLegacyModuleInterop();
|
||||
}
|
||||
|
||||
private boolean enableSyncVoidMethods() {
|
||||
return mDelegate != null && mDelegate.unstable_enableSyncVoidMethods();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public List<String> getEagerInitModuleNames() {
|
||||
@@ -417,7 +421,8 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
|
||||
NativeMethodCallInvokerHolderImpl nativeMethodCallInvoker,
|
||||
TurboModuleManagerDelegate tmmDelegate);
|
||||
|
||||
private native void installJSIBindings(boolean shouldCreateLegacyModules);
|
||||
private native void installJSIBindings(
|
||||
boolean shouldCreateLegacyModules, boolean enableSyncVoidMethods);
|
||||
|
||||
@Override
|
||||
public void initialize() {}
|
||||
|
||||
+4
@@ -70,5 +70,9 @@ public abstract class TurboModuleManagerDelegate {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean unstable_enableSyncVoidMethods() {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected synchronized void maybeLoadOtherSoLibraries() {}
|
||||
}
|
||||
|
||||
+14
-8
@@ -128,8 +128,8 @@ void TurboModuleManager::registerNatives() {
|
||||
});
|
||||
}
|
||||
|
||||
TurboModuleProviderFunctionType
|
||||
TurboModuleManager::createTurboModuleProvider() {
|
||||
TurboModuleProviderFunctionType TurboModuleManager::createTurboModuleProvider(
|
||||
bool enableSyncVoidMethods) {
|
||||
return [turboModuleCache_ = std::weak_ptr<ModuleCache>(turboModuleCache_),
|
||||
jsCallInvoker_ = std::weak_ptr<CallInvoker>(jsCallInvoker_),
|
||||
nativeMethodCallInvoker_ =
|
||||
@@ -209,8 +209,8 @@ TurboModuleManager::createTurboModuleProvider() {
|
||||
};
|
||||
}
|
||||
|
||||
TurboModuleProviderFunctionType
|
||||
TurboModuleManager::createLegacyModuleProvider() {
|
||||
TurboModuleProviderFunctionType TurboModuleManager::createLegacyModuleProvider(
|
||||
bool enableSyncVoidMethods) {
|
||||
return [legacyModuleCache_ = std::weak_ptr<ModuleCache>(legacyModuleCache_),
|
||||
jsCallInvoker_ = std::weak_ptr<CallInvoker>(jsCallInvoker_),
|
||||
nativeMethodCallInvoker_ =
|
||||
@@ -302,21 +302,27 @@ TurboModuleManager::createLegacyModuleProvider() {
|
||||
};
|
||||
}
|
||||
|
||||
void TurboModuleManager::installJSIBindings(bool shouldCreateLegacyModules) {
|
||||
void TurboModuleManager::installJSIBindings(
|
||||
bool shouldCreateLegacyModules,
|
||||
bool enableSyncVoidMethods) {
|
||||
if (!jsCallInvoker_) {
|
||||
return; // Runtime doesn't exist when attached to Chrome debugger.
|
||||
}
|
||||
|
||||
bool isInteropLayerDisabled = !shouldCreateLegacyModules;
|
||||
|
||||
runtimeExecutor_([this, isInteropLayerDisabled](jsi::Runtime& runtime) {
|
||||
runtimeExecutor_([this, isInteropLayerDisabled, enableSyncVoidMethods](
|
||||
jsi::Runtime& runtime) {
|
||||
if (isInteropLayerDisabled) {
|
||||
TurboModuleBinding::install(runtime, createTurboModuleProvider());
|
||||
TurboModuleBinding::install(
|
||||
runtime, createTurboModuleProvider(enableSyncVoidMethods));
|
||||
return;
|
||||
}
|
||||
|
||||
TurboModuleBinding::install(
|
||||
runtime, createTurboModuleProvider(), createLegacyModuleProvider());
|
||||
runtime,
|
||||
createTurboModuleProvider(enableSyncVoidMethods),
|
||||
createLegacyModuleProvider(enableSyncVoidMethods));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+7
-3
@@ -56,7 +56,9 @@ class TurboModuleManager : public jni::HybridClass<TurboModuleManager> {
|
||||
std::shared_ptr<ModuleCache> turboModuleCache_;
|
||||
std::shared_ptr<ModuleCache> legacyModuleCache_;
|
||||
|
||||
void installJSIBindings(bool shouldCreateLegacyModules);
|
||||
void installJSIBindings(
|
||||
bool shouldCreateLegacyModules,
|
||||
bool enableSyncVoidMethods);
|
||||
explicit TurboModuleManager(
|
||||
jni::alias_ref<TurboModuleManager::jhybridobject> jThis,
|
||||
RuntimeExecutor runtimeExecutor,
|
||||
@@ -64,8 +66,10 @@ class TurboModuleManager : public jni::HybridClass<TurboModuleManager> {
|
||||
std::shared_ptr<NativeMethodCallInvoker> nativeMethodCallInvoker,
|
||||
jni::alias_ref<TurboModuleManagerDelegate::javaobject> delegate);
|
||||
|
||||
TurboModuleProviderFunctionType createTurboModuleProvider();
|
||||
TurboModuleProviderFunctionType createLegacyModuleProvider();
|
||||
TurboModuleProviderFunctionType createTurboModuleProvider(
|
||||
bool enableSyncVoidMethods);
|
||||
TurboModuleProviderFunctionType createLegacyModuleProvider(
|
||||
bool enableSyncVoidMethods);
|
||||
};
|
||||
|
||||
} // namespace facebook::react
|
||||
|
||||
Reference in New Issue
Block a user