mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Support View Manager Commands
Summary: Supporting View Manager Commands on the new UIManager in Fabric. This is needed for things like scrollTo on ScrollView. Reviewed By: JoshuaGross Differential Revision: D16175575 fbshipit-source-id: a74effdf7e47b56a150a4e3fb6c4d787659e0250
This commit is contained in:
committed by
Facebook Github Bot
parent
5ca10c7caa
commit
6f09dc03bf
@@ -248,6 +248,11 @@ inline local_ref<ReadableMap::javaobject> castReadableMap(
|
||||
return make_local(reinterpret_cast<ReadableMap::javaobject>(nativeMap.get()));
|
||||
}
|
||||
|
||||
inline local_ref<ReadableArray::javaobject> castReadableArray(
|
||||
local_ref<ReadableNativeArray::javaobject> nativeArray) {
|
||||
return make_local(reinterpret_cast<ReadableArray::javaobject>(nativeArray.get()));
|
||||
}
|
||||
|
||||
// TODO: this method will be removed when binding for components are code-gen
|
||||
local_ref<JString> getPlatformComponentName(const ShadowView &shadowView) {
|
||||
local_ref<JString> componentName;
|
||||
@@ -672,6 +677,31 @@ void Binding::schedulerDidRequestPreliminaryViewAllocation(
|
||||
isLayoutableShadowNode);
|
||||
}
|
||||
|
||||
void Binding::schedulerDidDispatchCommand(
|
||||
const ShadowView &shadowView,
|
||||
std::string const &commandName,
|
||||
folly::dynamic const args) {
|
||||
|
||||
jni::global_ref<jobject> localJavaUIManager = getJavaUIManager();
|
||||
if (!localJavaUIManager) {
|
||||
LOG(ERROR) << "Binding::schedulerDidDispatchCommand: JavaUIManager disappeared";
|
||||
return;
|
||||
}
|
||||
|
||||
static auto dispatchCommand =
|
||||
jni::findClassStatic(UIManagerJavaDescriptor)
|
||||
->getMethod<void(
|
||||
jint, jstring, ReadableArray::javaobject)>(
|
||||
"dispatchCommand");
|
||||
|
||||
local_ref<JString> command = make_jstring(commandName);
|
||||
|
||||
local_ref<ReadableArray::javaobject> argsArray = castReadableArray(
|
||||
ReadableNativeArray::newObjectCxxArgs(args));
|
||||
|
||||
dispatchCommand(localJavaUIManager, shadowView.tag, command.get(), argsArray.get());
|
||||
}
|
||||
|
||||
void Binding::registerNatives() {
|
||||
registerHybrid(
|
||||
{makeNativeMethod("initHybrid", Binding::initHybrid),
|
||||
|
||||
@@ -82,6 +82,11 @@ class Binding : public jni::HybridClass<Binding>, public SchedulerDelegate {
|
||||
const SurfaceId surfaceId,
|
||||
const ShadowView &shadowView);
|
||||
|
||||
void schedulerDidDispatchCommand(
|
||||
const ShadowView &shadowView,
|
||||
std::string const &commandName,
|
||||
folly::dynamic const args);
|
||||
|
||||
void setPixelDensity(float pointScaleFactor);
|
||||
|
||||
void uninstallFabricUIManager();
|
||||
|
||||
Reference in New Issue
Block a user