Deprecate TurboModuleManagerDelegate.getLegacyCxxModule (#36667)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/36667

## Context
TurboModuleManagerDelegate exposes two methods that create TurboModules:
- TurboModule getModule()
- CxxModuleWrapper getLegacyCxxModule()

## Problem
TurboModuleManagerDelegate.getLegacyCxxModule() is redundant: getModule() could just return all the modules that getLegacyCxxModule() returns: getLegacyCxxModule returns modules that implement TurboModule.

## Changes
So, let's deprecate getLegacyCxxModule(). This will simplify the implementation of TurboModuleManager.

Changelog: [Android][Deprecated] - Deprecate TurboModuleManager.getLegacyCxxModule

Reviewed By: cortinico

Differential Revision: D44407802

fbshipit-source-id: 88a6cf6597db76d8a74fd777d68ccf4f43aa6811
This commit is contained in:
Ramanpreet Nara
2023-03-28 09:11:56 -07:00
committed by Facebook GitHub Bot
parent 3af66bf7fb
commit 7a08fbb088
3 changed files with 26 additions and 60 deletions
@@ -9,7 +9,6 @@ package com.facebook.react;
import androidx.annotation.Nullable;
import com.facebook.infer.annotation.Assertions;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.CxxModuleWrapper;
import com.facebook.react.bridge.ModuleSpec;
import com.facebook.react.bridge.NativeModule;
@@ -142,36 +141,6 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule
@Nullable
@Override
public TurboModule getModule(String moduleName) {
TurboModule module = resolveModule(moduleName);
if (module == null) {
return null;
}
if (module instanceof CxxModuleWrapper) {
return null;
}
return module;
}
@Nullable
@Override
@DoNotStrip
public CxxModuleWrapper getLegacyCxxModule(String moduleName) {
TurboModule module = resolveModule(moduleName);
if (module == null) {
return null;
}
if (!(module instanceof CxxModuleWrapper)) {
return null;
}
return (CxxModuleWrapper) module;
}
@Nullable
private TurboModule resolveModule(String moduleName) {
NativeModule resolvedModule = null;
for (final ModuleProvider moduleProvider : mModuleProviders) {
@@ -203,6 +172,13 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule
return null;
}
@Deprecated
@Nullable
@Override
public CxxModuleWrapper getLegacyCxxModule(String moduleName) {
return null;
}
@Override
public List<String> getEagerInitModuleNames() {
List<String> moduleNames = new ArrayList<>();
@@ -31,8 +31,7 @@ import java.util.*;
public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
private static volatile boolean sIsSoLibraryLoaded;
private final List<String> mEagerInitModuleNames;
private final ModuleProvider<TurboModule> mJavaModuleProvider;
private final ModuleProvider<TurboModule> mCxxModuleProvider;
private final ModuleProvider<TurboModule> mModuleProvider;
// Prevents the creation of new TurboModules once cleanup as been initiated.
private final Object mModuleCleanupLock = new Object();
@@ -65,7 +64,7 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
mEagerInitModuleNames =
delegate == null ? new ArrayList<String>() : delegate.getEagerInitModuleNames();
mJavaModuleProvider =
mModuleProvider =
new ModuleProvider<TurboModule>() {
@Nullable
public TurboModule getModule(String moduleName) {
@@ -73,27 +72,19 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
return null;
}
return delegate.getModule(moduleName);
}
};
TurboModule module = delegate.getModule(moduleName);
if (module == null) {
CxxModuleWrapper legacyCxxModule = delegate.getLegacyCxxModule(moduleName);
mCxxModuleProvider =
new ModuleProvider<TurboModule>() {
@Nullable
public TurboModule getModule(String moduleName) {
if (delegate == null) {
return null;
if (legacyCxxModule != null) {
// TurboModuleManagerDelegate.getLegacyCxxModule() must always return TurboModules
Assertions.assertCondition(
legacyCxxModule instanceof TurboModule,
"CxxModuleWrapper \"" + moduleName + "\" is not a TurboModule");
module = (TurboModule) legacyCxxModule;
}
}
CxxModuleWrapper nativeModule = delegate.getLegacyCxxModule(moduleName);
if (nativeModule != null) {
// TurboModuleManagerDelegate must always return TurboModules
Assertions.assertCondition(
nativeModule instanceof TurboModule,
"CxxModuleWrapper \"" + moduleName + "\" is not a TurboModule");
return (TurboModule) nativeModule;
}
return null;
return module;
}
};
}
@@ -194,11 +185,7 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
if (shouldCreateModule) {
TurboModulePerfLogger.moduleCreateConstructStart(moduleName, moduleHolder.getModuleId());
NativeModule nativeModule = (NativeModule) mJavaModuleProvider.getModule(moduleName);
if (nativeModule == null) {
nativeModule = (NativeModule) mCxxModuleProvider.getModule(moduleName);
}
NativeModule nativeModule = (NativeModule) mModuleProvider.getModule(moduleName);
TurboModulePerfLogger.moduleCreateConstructEnd(moduleName, moduleHolder.getModuleId());
TurboModulePerfLogger.moduleCreateSetUpStart(moduleName, moduleHolder.getModuleId());
@@ -39,9 +39,12 @@ public abstract class TurboModuleManagerDelegate {
public abstract TurboModule getModule(String moduleName);
/**
* Create an return a CxxModuleWrapper NativeModule with name `moduleName`. If `moduleName` isn't
* a CxxModule, return null.
* Create and return a CxxModuleWrapper NativeModule with name `moduleName`. If `moduleName` isn't
* a CxxModule, return null. CxxModuleWrapper must implement TurboModule.
*
* <p>Deprecated. Please just return your CxxModuleWrappers from getModule.
*/
@Deprecated
@Nullable
public abstract CxxModuleWrapper getLegacyCxxModule(String moduleName);