mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Provide easy registration of C++ TurboModules in rn-tester Android (#35225)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/35225 Changelog: [Android] [Changed] - Provide easy registration of C++ TurboModules in rn-tester Android Reviewed By: javache Differential Revision: D41069277 fbshipit-source-id: 450de9302df2916acf324d4c316996b185b2833f
This commit is contained in:
committed by
Lorenzo Sciandra
parent
7ef7d99f1c
commit
775d5cd00c
@@ -48,7 +48,14 @@ void registerComponents(
|
||||
rncli_registerProviders(registry);
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule> provideModules(
|
||||
std::shared_ptr<TurboModule> cxxModuleProvider(
|
||||
const std::string &name,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
||||
// Not implemented yet: provide pure-C++ NativeModules here.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule> javaModuleProvider(
|
||||
const std::string &name,
|
||||
const JavaTurboModule::InitParams ¶ms) {
|
||||
// Here you can provide your own module provider for TurboModules coming from
|
||||
@@ -70,8 +77,10 @@ std::shared_ptr<TurboModule> provideModules(
|
||||
|
||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
||||
return facebook::jni::initialize(vm, [] {
|
||||
facebook::react::DefaultTurboModuleManagerDelegate::
|
||||
moduleProvidersFromEntryPoint = &facebook::react::provideModules;
|
||||
facebook::react::DefaultTurboModuleManagerDelegate::cxxModuleProvider =
|
||||
&facebook::react::cxxModuleProvider;
|
||||
facebook::react::DefaultTurboModuleManagerDelegate::javaModuleProvider =
|
||||
&facebook::react::javaModuleProvider;
|
||||
facebook::react::DefaultComponentsRegistry::
|
||||
registerComponentDescriptorsFromEntryPoint =
|
||||
&facebook::react::registerComponents;
|
||||
|
||||
+15
-6
@@ -12,10 +12,15 @@
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
std::function<std::shared_ptr<TurboModule>(
|
||||
const std::string &,
|
||||
const std::shared_ptr<CallInvoker> &)>
|
||||
DefaultTurboModuleManagerDelegate::cxxModuleProvider{nullptr};
|
||||
|
||||
std::function<std::shared_ptr<TurboModule>(
|
||||
const std::string &,
|
||||
const JavaTurboModule::InitParams &)>
|
||||
DefaultTurboModuleManagerDelegate::moduleProvidersFromEntryPoint{nullptr};
|
||||
DefaultTurboModuleManagerDelegate::javaModuleProvider{nullptr};
|
||||
|
||||
jni::local_ref<DefaultTurboModuleManagerDelegate::jhybriddata>
|
||||
DefaultTurboModuleManagerDelegate::initHybrid(jni::alias_ref<jhybridobject>) {
|
||||
@@ -32,17 +37,21 @@ void DefaultTurboModuleManagerDelegate::registerNatives() {
|
||||
std::shared_ptr<TurboModule> DefaultTurboModuleManagerDelegate::getTurboModule(
|
||||
const std::string &name,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
||||
// Not implemented yet: provide pure-C++ NativeModules here.
|
||||
auto moduleProvider = DefaultTurboModuleManagerDelegate::cxxModuleProvider;
|
||||
if (moduleProvider) {
|
||||
return moduleProvider(name, jsInvoker);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule> DefaultTurboModuleManagerDelegate::getTurboModule(
|
||||
const std::string &name,
|
||||
const JavaTurboModule::InitParams ¶ms) {
|
||||
auto resolvedModule = (DefaultTurboModuleManagerDelegate::
|
||||
moduleProvidersFromEntryPoint)(name, params);
|
||||
if (resolvedModule != nullptr) {
|
||||
return resolvedModule;
|
||||
auto moduleProvider = DefaultTurboModuleManagerDelegate::javaModuleProvider;
|
||||
if (moduleProvider) {
|
||||
if (auto resolvedModule = moduleProvider(name, params)) {
|
||||
return resolvedModule;
|
||||
}
|
||||
}
|
||||
return rncore_ModuleProvider(name, params);
|
||||
}
|
||||
|
||||
@@ -27,10 +27,15 @@ class DefaultTurboModuleManagerDelegate : public jni::HybridClass<
|
||||
|
||||
static void registerNatives();
|
||||
|
||||
static std::function<std::shared_ptr<TurboModule>(
|
||||
const std::string &,
|
||||
const std::shared_ptr<CallInvoker> &)>
|
||||
cxxModuleProvider;
|
||||
|
||||
static std::function<std::shared_ptr<TurboModule>(
|
||||
const std::string &,
|
||||
const JavaTurboModule::InitParams &)>
|
||||
moduleProvidersFromEntryPoint;
|
||||
javaModuleProvider;
|
||||
|
||||
std::shared_ptr<TurboModule> getTurboModule(
|
||||
const std::string &name,
|
||||
|
||||
@@ -23,7 +23,13 @@ void registerComponents(
|
||||
RNTMyNativeViewComponentDescriptor>());
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule> provideModules(
|
||||
std::shared_ptr<TurboModule> cxxModuleProvider(
|
||||
const std::string &name,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule> javaModuleProvider(
|
||||
const std::string &name,
|
||||
const JavaTurboModule::InitParams ¶ms) {
|
||||
auto module = AppSpecs_ModuleProvider(name, params);
|
||||
@@ -42,8 +48,10 @@ std::shared_ptr<TurboModule> provideModules(
|
||||
|
||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
||||
return facebook::jni::initialize(vm, [] {
|
||||
facebook::react::DefaultTurboModuleManagerDelegate::
|
||||
moduleProvidersFromEntryPoint = &facebook::react::provideModules;
|
||||
facebook::react::DefaultTurboModuleManagerDelegate::cxxModuleProvider =
|
||||
&facebook::react::cxxModuleProvider;
|
||||
facebook::react::DefaultTurboModuleManagerDelegate::javaModuleProvider =
|
||||
&facebook::react::javaModuleProvider;
|
||||
facebook::react::DefaultComponentsRegistry::
|
||||
registerComponentDescriptorsFromEntryPoint =
|
||||
&facebook::react::registerComponents;
|
||||
|
||||
Reference in New Issue
Block a user