diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 3004783bfb3..99b24343aab 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -1979,13 +1979,8 @@ public class com/facebook/react/config/ReactFeatureFlags { } public final class com/facebook/react/defaults/DefaultComponentsRegistry { - public static final field Companion Lcom/facebook/react/defaults/DefaultComponentsRegistry$Companion; - public synthetic fun (Lcom/facebook/react/fabric/ComponentFactory;Lkotlin/jvm/internal/DefaultConstructorMarker;)V - public static final fun register (Lcom/facebook/react/fabric/ComponentFactory;)Lcom/facebook/react/defaults/DefaultComponentsRegistry; -} - -public final class com/facebook/react/defaults/DefaultComponentsRegistry$Companion { - public final fun register (Lcom/facebook/react/fabric/ComponentFactory;)Lcom/facebook/react/defaults/DefaultComponentsRegistry; + public static final field INSTANCE Lcom/facebook/react/defaults/DefaultComponentsRegistry; + public static final fun register (Lcom/facebook/react/fabric/ComponentFactory;)V } public final class com/facebook/react/defaults/DefaultNewArchitectureEntryPoint { @@ -2532,16 +2527,6 @@ public final class com/facebook/react/fabric/ComponentFactory { public fun ()V } -public final class com/facebook/react/fabric/CoreComponentsRegistry { - public static final field Companion Lcom/facebook/react/fabric/CoreComponentsRegistry$Companion; - public synthetic fun (Lcom/facebook/react/fabric/ComponentFactory;Lkotlin/jvm/internal/DefaultConstructorMarker;)V - public static final fun register (Lcom/facebook/react/fabric/ComponentFactory;)Lcom/facebook/react/fabric/CoreComponentsRegistry; -} - -public final class com/facebook/react/fabric/CoreComponentsRegistry$Companion { - public final fun register (Lcom/facebook/react/fabric/ComponentFactory;)Lcom/facebook/react/fabric/CoreComponentsRegistry; -} - public class com/facebook/react/fabric/DevToolsReactPerfLogger : com/facebook/react/bridge/ReactMarker$FabricMarkerListener { public static final field mStreamingBatchExecutionStats Lcom/facebook/react/fabric/LongStreamingStats; public static final field mStreamingCommitStats Lcom/facebook/react/fabric/LongStreamingStats; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultComponentsRegistry.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultComponentsRegistry.kt index 14d33e57605..c289de9a66c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultComponentsRegistry.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultComponentsRegistry.kt @@ -7,7 +7,6 @@ package com.facebook.react.defaults -import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip import com.facebook.react.fabric.ComponentFactory @@ -21,24 +20,10 @@ import com.facebook.react.fabric.ComponentFactory * TODO(T186951312): Should this be @UnstableReactNativeAPI? */ @DoNotStrip -public class DefaultComponentsRegistry -@DoNotStrip -private constructor(componentFactory: ComponentFactory) { - - @DoNotStrip - @Suppress("NoHungarianNotation") - private val mHybridData: HybridData = initHybrid(componentFactory) - - @DoNotStrip private external fun initHybrid(componentFactory: ComponentFactory): HybridData - - public companion object { - init { - DefaultSoLoader.maybeLoadSoLibrary() - } - - @JvmStatic - @DoNotStrip - public fun register(componentFactory: ComponentFactory): DefaultComponentsRegistry = - DefaultComponentsRegistry(componentFactory) +public object DefaultComponentsRegistry { + init { + DefaultSoLoader.maybeLoadSoLibrary() } + + @JvmStatic @DoNotStrip public external fun register(componentFactory: ComponentFactory): Unit } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/CoreComponentsRegistry.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/CoreComponentsRegistry.kt deleted file mode 100644 index 7072418ddcb..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/CoreComponentsRegistry.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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. - */ - -package com.facebook.react.fabric - -import com.facebook.jni.HybridData -import com.facebook.proguard.annotations.DoNotStripAny - -@DoNotStripAny -public class CoreComponentsRegistry private constructor(componentFactory: ComponentFactory) { - - @Suppress("NoHungarianNotation") - private val mHybridData: HybridData = initHybrid(componentFactory) - - private external fun initHybrid(componentFactory: ComponentFactory): HybridData - - public companion object { - init { - FabricSoLoader.staticInit() - } - - @JvmStatic - public fun register(componentFactory: ComponentFactory): CoreComponentsRegistry = - CoreComponentsRegistry(componentFactory) - } -} diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp index fd8e579865f..b4a1117673d 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.cpp @@ -9,8 +9,6 @@ #include -#include - #include #include #include @@ -24,13 +22,10 @@ #include #include -namespace facebook::react { - -CoreComponentsRegistry::CoreComponentsRegistry(ComponentFactory* delegate) - : delegate_(delegate) {} +namespace facebook::react::CoreComponentsRegistry { std::shared_ptr -CoreComponentsRegistry::sharedProviderRegistry() { +sharedProviderRegistry() { static auto providerRegistry = []() -> std::shared_ptr { auto providerRegistry = @@ -74,39 +69,4 @@ CoreComponentsRegistry::sharedProviderRegistry() { return providerRegistry; } -jni::local_ref -CoreComponentsRegistry::initHybrid( - jni::alias_ref, - ComponentFactory* delegate) { - auto instance = makeCxxInstance(delegate); - - // TODO T69453179: Codegen this file - auto buildRegistryFunction = - [](const EventDispatcher::Weak& eventDispatcher, - const ContextContainer::Shared& contextContainer) - -> ComponentDescriptorRegistry::Shared { - ComponentDescriptorParameters params{ - .eventDispatcher = eventDispatcher, - .contextContainer = contextContainer, - .flavor = nullptr}; - - auto registry = CoreComponentsRegistry::sharedProviderRegistry() - ->createComponentDescriptorRegistry(params); - auto& mutableRegistry = const_cast(*registry); - mutableRegistry.setFallbackComponentDescriptor( - std::make_shared(params)); - - return registry; - }; - - delegate->buildRegistryFunction = buildRegistryFunction; - return instance; -} - -void CoreComponentsRegistry::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", CoreComponentsRegistry::initHybrid), - }); -} - -} // namespace facebook::react +} // namespace facebook::react::CoreComponentsRegistry diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h index 1f6b1475df0..c515238c71a 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/CoreComponentsRegistry.h @@ -7,34 +7,11 @@ #pragma once -#include #include -#include -#include "ComponentFactory.h" -namespace facebook::react { +namespace facebook::react::CoreComponentsRegistry { -class CoreComponentsRegistry - : public facebook::jni::HybridClass { - public: - constexpr static auto kJavaDescriptor = - "Lcom/facebook/react/fabric/CoreComponentsRegistry;"; +std::shared_ptr +sharedProviderRegistry(); - static void registerNatives(); - - explicit CoreComponentsRegistry(ComponentFactory* delegate); - - static std::shared_ptr - sharedProviderRegistry(); - - private: - friend HybridBase; - - const ComponentFactory* delegate_; - - static jni::local_ref initHybrid( - jni::alias_ref, - ComponentFactory* delegate); -}; - -} // namespace facebook::react +} // namespace facebook::react::CoreComponentsRegistry diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp index 1e4ab75b826..bcdf164ffab 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/OnLoad.cpp @@ -9,7 +9,6 @@ #include "Binding.h" #include "ComponentFactory.h" -#include "CoreComponentsRegistry.h" #include "EventBeatManager.h" #include "EventEmitterWrapper.h" #include "JEmptyReactNativeConfig.h" @@ -23,7 +22,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { facebook::react::EventEmitterWrapper::registerNatives(); facebook::react::StateWrapperImpl::registerNatives(); facebook::react::ComponentFactory::registerNatives(); - facebook::react::CoreComponentsRegistry::registerNatives(); facebook::react::SurfaceHandlerBinding::registerNatives(); facebook::react::JEmptyReactNativeConfig::registerNatives(); }); diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp index 386d2ff1d83..543b387b217 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.cpp @@ -18,56 +18,39 @@ namespace facebook::react { std::function)> DefaultComponentsRegistry::registerComponentDescriptorsFromEntryPoint{}; -DefaultComponentsRegistry::DefaultComponentsRegistry(ComponentFactory* delegate) - : delegate_(delegate) {} - -std::shared_ptr -DefaultComponentsRegistry::sharedProviderRegistry() { - auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); - - if (DefaultComponentsRegistry::registerComponentDescriptorsFromEntryPoint) { - (DefaultComponentsRegistry::registerComponentDescriptorsFromEntryPoint)( - providerRegistry); - } else { - LOG(WARNING) - << "Custom component descriptors were not configured from JNI_OnLoad"; - } - - return providerRegistry; -} - -jni::local_ref -DefaultComponentsRegistry::initHybrid( +void DefaultComponentsRegistry::setRegistryRunction( jni::alias_ref, ComponentFactory* delegate) { - auto instance = makeCxxInstance(delegate); - - auto buildRegistryFunction = - [](const EventDispatcher::Weak& eventDispatcher, - const ContextContainer::Shared& contextContainer) - -> ComponentDescriptorRegistry::Shared { + delegate + ->buildRegistryFunction = [](const EventDispatcher::Weak& eventDispatcher, + const ContextContainer::Shared& + contextContainer) { ComponentDescriptorParameters params{ .eventDispatcher = eventDispatcher, .contextContainer = contextContainer, .flavor = nullptr}; - auto registry = DefaultComponentsRegistry::sharedProviderRegistry() - ->createComponentDescriptorRegistry(params); + auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); + 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; }; - - delegate->buildRegistryFunction = buildRegistryFunction; - return instance; } void DefaultComponentsRegistry::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", DefaultComponentsRegistry::initHybrid), + javaClassLocal()->registerNatives({ + makeNativeMethod( + "register", DefaultComponentsRegistry::setRegistryRunction), }); } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h b/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h index d1950e8c746..cf95b8709cf 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/DefaultComponentsRegistry.h @@ -16,7 +16,7 @@ namespace facebook::react { class DefaultComponentsRegistry - : public facebook::jni::HybridClass { + : public facebook::jni::JavaClass { public: constexpr static auto kJavaDescriptor = "Lcom/facebook/react/defaults/DefaultComponentsRegistry;"; @@ -27,17 +27,8 @@ class DefaultComponentsRegistry std::shared_ptr)> registerComponentDescriptorsFromEntryPoint; - DefaultComponentsRegistry(ComponentFactory* delegate); - private: - friend HybridBase; - - static std::shared_ptr - sharedProviderRegistry(); - - const ComponentFactory* delegate_; - - static jni::local_ref initHybrid( + static void setRegistryRunction( jni::alias_ref, ComponentFactory* delegate); };