Implement JNI code to invoke Android JSResponder methods from C++

Summary: This diff implements the JNI code required for Android to receive JSResponderHandler calls

Reviewed By: JoshuaGross, makovkastar

Differential Revision: D16543431

fbshipit-source-id: 38cff16a05633fccefa201b189d761d503a9b839
This commit is contained in:
David Vacca
2019-08-02 16:34:58 -07:00
committed by Facebook Github Bot
parent 0e067fd23b
commit e2f82b122e
@@ -728,9 +728,36 @@ void Binding::schedulerDidSetJSResponder(
SurfaceId surfaceId,
const ShadowView &shadowView,
const ShadowView &initialShadowView,
bool blockNativeResponder) { }
bool blockNativeResponder) {
void Binding::schedulerDidClearJSResponder() { }
jni::global_ref<jobject> localJavaUIManager = getJavaUIManager();
if (!localJavaUIManager) {
LOG(ERROR) << "Binding::schedulerSetJSResponder: JavaUIManager disappeared";
return;
}
static auto setJSResponder =
jni::findClassStatic(UIManagerJavaDescriptor)
->getMethod<void(
jint, jint, jboolean)>(
"setJSResponder");
setJSResponder(localJavaUIManager, shadowView.tag, initialShadowView.tag, (jboolean) blockNativeResponder);
}
void Binding::schedulerDidClearJSResponder() {
jni::global_ref<jobject> localJavaUIManager = getJavaUIManager();
if (!localJavaUIManager) {
LOG(ERROR) << "Binding::schedulerClearJSResponder: JavaUIManager disappeared";
return;
}
static auto clearJSResponder =
jni::findClassStatic(UIManagerJavaDescriptor)
->getMethod<void()>("clearJSResponder");
clearJSResponder(localJavaUIManager);
}
void Binding::registerNatives() {
registerHybrid(