From ef2951ea0c04ce8a9a838765a12bad24e2a8053c Mon Sep 17 00:00:00 2001 From: Christoph Purrer Date: Wed, 19 Apr 2023 10:49:08 -0700 Subject: [PATCH] Merge JSCallInvoker and BridgelessJSCallInvoker (#36965) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36965 Changelog: [Internal] These implementations are identical and can be merged Reviewed By: javache Differential Revision: D45101259 fbshipit-source-id: af7b2e0288f0cae44ae183a639a9d10e58887fc2 --- .../bridgeless/jni/BridgelessJSCallInvoker.h | 25 ------------------- .../react/bridgeless/jni/JReactInstance.cpp | 9 +++++-- .../bridgeless}/BridgelessJSCallInvoker.cpp | 18 +++++++------ ...allInvoker.h => BridgelessJSCallInvoker.h} | 10 ++++---- .../react/bridgeless/JSCallInvoker.cpp | 23 ----------------- 5 files changed, 22 insertions(+), 63 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.h rename packages/react-native/{ReactAndroid/src/main/jni/react/bridgeless/jni => ReactCommon/react/bridgeless}/BridgelessJSCallInvoker.cpp (59%) rename packages/react-native/ReactCommon/react/bridgeless/{JSCallInvoker.h => BridgelessJSCallInvoker.h} (64%) delete mode 100644 packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.cpp diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.h b/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.h deleted file mode 100644 index 6c2edef10d1..00000000000 --- a/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.h +++ /dev/null @@ -1,25 +0,0 @@ -// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. - -#include -#include - -#include -#include -#include -#include - -namespace facebook { -namespace react { - -class BridgelessJSCallInvoker : public CallInvoker { - public: - explicit BridgelessJSCallInvoker(RuntimeExecutor runtimeExecutor); - void invokeAsync(std::function &&func) override; - void invokeSync(std::function &&func) override; - - private: - RuntimeExecutor runtimeExecutor_; -}; - -} // namespace react -} // namespace facebook diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/JReactInstance.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/JReactInstance.cpp index dde2e3ed80b..6490f3f02a0 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/JReactInstance.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/JReactInstance.cpp @@ -1,4 +1,9 @@ -// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. +/* + * 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 "JReactInstance.h" @@ -14,11 +19,11 @@ #include #include #include +#include #include #include #include #include -#include "BridgelessJSCallInvoker.h" #include "BridgelessNativeCallInvoker.h" #include "JavaTimerRegistry.h" diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.cpp b/packages/react-native/ReactCommon/react/bridgeless/BridgelessJSCallInvoker.cpp similarity index 59% rename from packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.cpp rename to packages/react-native/ReactCommon/react/bridgeless/BridgelessJSCallInvoker.cpp index ab153845db3..9b721f39563 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/bridgeless/jni/BridgelessJSCallInvoker.cpp +++ b/packages/react-native/ReactCommon/react/bridgeless/BridgelessJSCallInvoker.cpp @@ -1,12 +1,15 @@ -// (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary. +/* + * 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 "BridgelessJSCallInvoker.h" -#include -#include +#include -namespace facebook { -namespace react { +namespace facebook::react { BridgelessJSCallInvoker::BridgelessJSCallInvoker( RuntimeExecutor runtimeExecutor) @@ -17,10 +20,9 @@ void BridgelessJSCallInvoker::invokeAsync(std::function &&func) { } void BridgelessJSCallInvoker::invokeSync(std::function &&func) { - // TODO: Replace JS Callinvoker with RuntimeExecutor. + // TODO: Implement this method. The TurboModule infra doesn't call invokeSync. throw std::runtime_error( "Synchronous native -> JS calls are currently not supported."); } -} // namespace react -} // namespace facebook +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.h b/packages/react-native/ReactCommon/react/bridgeless/BridgelessJSCallInvoker.h similarity index 64% rename from packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.h rename to packages/react-native/ReactCommon/react/bridgeless/BridgelessJSCallInvoker.h index 8be33cb5449..a061b245a3d 100644 --- a/packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.h +++ b/packages/react-native/ReactCommon/react/bridgeless/BridgelessJSCallInvoker.h @@ -7,17 +7,17 @@ #include #include +#include namespace facebook::react { /** - * A native-to-JS call invoker that uses the RuntimeExecutor. Inspired by - * BridgeJSCallInvoker. It guarantees that any calls from any thread are queued - * on the right JS thread. + * A native-to-JS call invoker that uses the RuntimeExecutor. It guarantees that + * any calls from any thread are queued on the right JS thread. */ -class JSCallInvoker : public CallInvoker { +class BridgelessJSCallInvoker : public CallInvoker { public: - JSCallInvoker(RuntimeExecutor runtimeExecutor); + explicit BridgelessJSCallInvoker(RuntimeExecutor runtimeExecutor); void invokeAsync(std::function &&func) override; void invokeSync(std::function &&func) override; diff --git a/packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.cpp b/packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.cpp deleted file mode 100644 index b261a8c983d..00000000000 --- a/packages/react-native/ReactCommon/react/bridgeless/JSCallInvoker.cpp +++ /dev/null @@ -1,23 +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. - */ - -#include "JSCallInvoker.h" - -namespace facebook ::react { - -JSCallInvoker::JSCallInvoker(RuntimeExecutor runtimeExecutor) - : runtimeExecutor_(runtimeExecutor) {} - -void JSCallInvoker::invokeAsync(std::function &&func) { - runtimeExecutor_([func = std::move(func)](jsi::Runtime &runtime) { func(); }); -} - -void JSCallInvoker::invokeSync(std::function &&func) { - // TODO: Implement this method. The TurboModule infra doesn't call invokeSync. -} - -} // namespace facebook::react