From cc1c69799e284b368e3eaaac0ccd8e238384857f Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 15 Apr 2024 12:46:50 -0700 Subject: [PATCH] Support more stubbed methods in BridgelessCatalystInstance (#44091) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/44091 These can be stubbed easily using existing ReactHostImpl/ReactInstance API's Changelog: [Internal] Reviewed By: cortinico Differential Revision: D56139806 fbshipit-source-id: cefabe3aa0fb6556f8e296243ff233df07ddffee --- .../runtime/BridgelessCatalystInstance.kt | 29 +++++++------------ .../facebook/react/runtime/ReactHostImpl.java | 10 +++++++ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt index 434c8ead80c..03a18c6c8da 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessCatalystInstance.kt @@ -92,25 +92,20 @@ public class BridgelessCatalystInstance(private val reactHost: ReactHostImpl) : throw UnsupportedOperationException("Unimplemented method 'initialize'") } - override fun getReactQueueConfiguration(): ReactQueueConfiguration { - throw UnsupportedOperationException("Unimplemented method 'getReactQueueConfiguration'") - } + override fun getReactQueueConfiguration(): ReactQueueConfiguration = + reactHost.reactQueueConfiguration!! - override fun getJSModule(jsInterface: Class): T { - throw UnsupportedOperationException("Unimplemented method 'getJSModule'") - } + override fun getJSModule(jsInterface: Class): T = + reactHost.currentReactContext?.getJSModule(jsInterface)!! - override fun hasNativeModule(nativeModuleInterface: Class): Boolean { - throw UnsupportedOperationException("Unimplemented method 'hasNativeModule'") - } + override fun hasNativeModule(nativeModuleInterface: Class): Boolean = + reactHost.hasNativeModule(nativeModuleInterface) - override fun getNativeModule(nativeModuleInterface: Class): T? { - throw UnsupportedOperationException("Unimplemented method 'getNativeModule'") - } + override fun getNativeModule(nativeModuleInterface: Class): T? = + reactHost.getNativeModule(nativeModuleInterface) - override fun getNativeModule(moduleName: String): NativeModule? { - throw UnsupportedOperationException("Unimplemented method 'getNativeModule'") - } + override fun getNativeModule(moduleName: String): NativeModule? = + reactHost.getNativeModule(moduleName) @Deprecated( message = @@ -119,9 +114,7 @@ public class BridgelessCatalystInstance(private val reactHost: ReactHostImpl) : throw UnsupportedOperationException("Unimplemented method 'getJSIModule'") } - override fun getNativeModules(): Collection { - throw UnsupportedOperationException("Unimplemented method 'getNativeModules'") - } + override fun getNativeModules(): Collection = reactHost.getNativeModules() override fun extendNativeModules(modules: NativeModuleRegistry) { throw UnsupportedOperationException("Unimplemented method 'extendNativeModules'") diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java index 56fbafaccf7..b3ad48e6afc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java @@ -592,6 +592,16 @@ public class ReactHostImpl implements ReactHost { return null; } + /* package */ + @Nullable + NativeModule getNativeModule(String nativeModuleName) { + final ReactInstance reactInstance = mReactInstanceTaskRef.get().getResult(); + if (reactInstance != null) { + return reactInstance.getNativeModule(nativeModuleName); + } + return null; + } + /* package */ @Nullable RuntimeExecutor getRuntimeExecutor() {