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
This commit is contained in:
Родитель
f308f0273c
Коммит
50522cfbbf
|
@ -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 <memory>
|
|
||||||
|
|
||||||
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<const EventHandler>;
|
|
||||||
|
|
||||||
} // namespace facebook::react
|
|
|
@ -155,15 +155,14 @@ void UIManagerBinding::dispatchEventToJS(
|
||||||
LOG(WARNING) << "instanceHandle is null, event will be dropped";
|
LOG(WARNING) << "instanceHandle is null, event will be dropped";
|
||||||
}
|
}
|
||||||
|
|
||||||
auto& eventHandlerWrapper =
|
|
||||||
static_cast<const EventHandlerWrapper&>(*eventHandler_);
|
|
||||||
|
|
||||||
currentEventPriority_ = priority;
|
currentEventPriority_ = priority;
|
||||||
eventHandlerWrapper.callback.call(
|
if (eventHandler_) {
|
||||||
runtime,
|
eventHandler_->call(
|
||||||
{std::move(instanceHandle),
|
runtime,
|
||||||
jsi::String::createFromUtf8(runtime, type),
|
std::move(instanceHandle),
|
||||||
std::move(payload)});
|
jsi::String::createFromUtf8(runtime, type),
|
||||||
|
std::move(payload));
|
||||||
|
}
|
||||||
currentEventPriority_ = ReactEventPriority::Default;
|
currentEventPriority_ = ReactEventPriority::Default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -545,7 +544,7 @@ jsi::Value UIManagerBinding::get(
|
||||||
auto eventHandler =
|
auto eventHandler =
|
||||||
arguments[0].getObject(runtime).getFunction(runtime);
|
arguments[0].getObject(runtime).getFunction(runtime);
|
||||||
eventHandler_ =
|
eventHandler_ =
|
||||||
std::make_unique<EventHandlerWrapper>(std::move(eventHandler));
|
std::make_unique<jsi::Function>(std::move(eventHandler));
|
||||||
return jsi::Value::undefined();
|
return jsi::Value::undefined();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ class UIManagerBinding : public jsi::HostObject {
|
||||||
const EventPayload& payload) const;
|
const EventPayload& payload) const;
|
||||||
|
|
||||||
std::shared_ptr<UIManager> uiManager_;
|
std::shared_ptr<UIManager> uiManager_;
|
||||||
std::unique_ptr<const EventHandler> eventHandler_;
|
std::unique_ptr<jsi::Function> eventHandler_;
|
||||||
mutable PointerEventsProcessor pointerEventsProcessor_;
|
mutable PointerEventsProcessor pointerEventsProcessor_;
|
||||||
mutable ReactEventPriority currentEventPriority_;
|
mutable ReactEventPriority currentEventPriority_;
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include <jsi/jsi.h>
|
#include <jsi/jsi.h>
|
||||||
#include <react/debug/react_native_assert.h>
|
#include <react/debug/react_native_assert.h>
|
||||||
#include <react/renderer/components/text/RawTextShadowNode.h>
|
#include <react/renderer/components/text/RawTextShadowNode.h>
|
||||||
#include <react/renderer/core/EventHandler.h>
|
|
||||||
#include <react/renderer/core/LayoutMetrics.h>
|
#include <react/renderer/core/LayoutMetrics.h>
|
||||||
#include <react/renderer/core/ShadowNode.h>
|
#include <react/renderer/core/ShadowNode.h>
|
||||||
#include <react/renderer/core/TraitCast.h>
|
#include <react/renderer/core/TraitCast.h>
|
||||||
|
@ -23,13 +22,6 @@ namespace facebook::react {
|
||||||
using BackgroundExecutor =
|
using BackgroundExecutor =
|
||||||
std::function<void(std::function<void()>&& callback)>;
|
std::function<void(std::function<void()>&& callback)>;
|
||||||
|
|
||||||
struct EventHandlerWrapper : public EventHandler {
|
|
||||||
EventHandlerWrapper(jsi::Function eventHandler)
|
|
||||||
: callback(std::move(eventHandler)) {}
|
|
||||||
|
|
||||||
jsi::Function callback;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ShadowNodeListWrapper : public jsi::NativeState {
|
struct ShadowNodeListWrapper : public jsi::NativeState {
|
||||||
ShadowNodeListWrapper(ShadowNode::UnsharedListOfShared shadowNodeList)
|
ShadowNodeListWrapper(ShadowNode::UnsharedListOfShared shadowNodeList)
|
||||||
: shadowNodeList(std::move(shadowNodeList)) {}
|
: shadowNodeList(std::move(shadowNodeList)) {}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче