From 50522cfbbf67254a1f221ecedd58fda13b1f72dd Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Mon, 16 Oct 2023 10:28:20 -0700 Subject: [PATCH] Remove EventHandler type (#40866) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/40866 This type doesn't do anything, and we can replace it with a `jsi::Function` inside `UIManagerBinding`. Changelog: [Internal] Reviewed By: rubennorte Differential Revision: D50176084 fbshipit-source-id: 1c782f3e4d212f1d956451fd650d3ed5ed8f0d71 --- .../react/renderer/core/EventHandler.h | 28 ------------------- .../renderer/uimanager/UIManagerBinding.cpp | 17 ++++++----- .../renderer/uimanager/UIManagerBinding.h | 2 +- .../react/renderer/uimanager/primitives.h | 8 ------ 4 files changed, 9 insertions(+), 46 deletions(-) delete mode 100644 packages/react-native/ReactCommon/react/renderer/core/EventHandler.h diff --git a/packages/react-native/ReactCommon/react/renderer/core/EventHandler.h b/packages/react-native/ReactCommon/react/renderer/core/EventHandler.h deleted file mode 100644 index b650d8f161..0000000000 --- a/packages/react-native/ReactCommon/react/renderer/core/EventHandler.h +++ /dev/null @@ -1,28 +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. - */ - -#pragma once - -#include - -namespace facebook::react { - -/* - * We need this types only to ensure type-safety when we deal with them. - * Conceptually, they are opaque pointers to some types that derived from those - * classes. - * - * `EventHandler` is managed as a `unique_ptr`, so it must have a *virtual* - * destructor to allow proper deallocation having only a pointer - * to the base (`EventHandler`) class. - */ -struct EventHandler { - virtual ~EventHandler() = default; -}; -using UniqueEventHandler = std::unique_ptr; - -} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp index db79e7f47f..0baf44b8e3 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.cpp @@ -155,15 +155,14 @@ void UIManagerBinding::dispatchEventToJS( LOG(WARNING) << "instanceHandle is null, event will be dropped"; } - auto& eventHandlerWrapper = - static_cast(*eventHandler_); - currentEventPriority_ = priority; - eventHandlerWrapper.callback.call( - runtime, - {std::move(instanceHandle), - jsi::String::createFromUtf8(runtime, type), - std::move(payload)}); + if (eventHandler_) { + eventHandler_->call( + runtime, + std::move(instanceHandle), + jsi::String::createFromUtf8(runtime, type), + std::move(payload)); + } currentEventPriority_ = ReactEventPriority::Default; } @@ -545,7 +544,7 @@ jsi::Value UIManagerBinding::get( auto eventHandler = arguments[0].getObject(runtime).getFunction(runtime); eventHandler_ = - std::make_unique(std::move(eventHandler)); + std::make_unique(std::move(eventHandler)); return jsi::Value::undefined(); }); } diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.h b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.h index b5c98b3a0f..3ade1a02e4 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManagerBinding.h @@ -84,7 +84,7 @@ class UIManagerBinding : public jsi::HostObject { const EventPayload& payload) const; std::shared_ptr uiManager_; - std::unique_ptr eventHandler_; + std::unique_ptr eventHandler_; mutable PointerEventsProcessor pointerEventsProcessor_; mutable ReactEventPriority currentEventPriority_; }; diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/primitives.h b/packages/react-native/ReactCommon/react/renderer/uimanager/primitives.h index b8e0f9fc2f..62f0858028 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/primitives.h @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -23,13 +22,6 @@ namespace facebook::react { using BackgroundExecutor = std::function&& callback)>; -struct EventHandlerWrapper : public EventHandler { - EventHandlerWrapper(jsi::Function eventHandler) - : callback(std::move(eventHandler)) {} - - jsi::Function callback; -}; - struct ShadowNodeListWrapper : public jsi::NativeState { ShadowNodeListWrapper(ShadowNode::UnsharedListOfShared shadowNodeList) : shadowNodeList(std::move(shadowNodeList)) {}