From 7bdba281e708398f208c6b42c33c7268d76b2bc2 Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Wed, 13 Dec 2023 03:37:32 -0800 Subject: [PATCH] Add fbjni wrapper for InspectorFlags (#41913) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/41913 Progress towards an opt-in setup for our new CDP backend. - Adds and configures an [fbjni](https://github.com/facebookincubator/fbjni) interface for reading `jsinspector_modern::InspectorFlags`, allowing access in Java contexts. Changelog: [Internal] Reviewed By: motiz88 Differential Revision: D52040150 fbshipit-source-id: 5459eda2747279633a8312a3979ba29a1e0d1bde --- .../facebook/react/bridge/InspectorFlags.java | 23 ++++++++++++++ .../main/jni/react/jni/JInspectorFlags.cpp | 27 +++++++++++++++++ .../src/main/jni/react/jni/JInspectorFlags.h | 30 +++++++++++++++++++ .../src/main/jni/react/jni/OnLoad.cpp | 2 ++ 4 files changed, 82 insertions(+) create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/InspectorFlags.java create mode 100644 packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.cpp create mode 100644 packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.h diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/InspectorFlags.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/InspectorFlags.java new file mode 100644 index 00000000000..2a76037313e --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/InspectorFlags.java @@ -0,0 +1,23 @@ +/* + * 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. + */ + +package com.facebook.react.bridge; + +import com.facebook.proguard.annotations.DoNotStrip; + +/** fbjni interface for reading `jsinspector_modern::InspectorFlags`. */ +@DoNotStrip +public class InspectorFlags { + static { + ReactBridge.staticInit(); + } + + @DoNotStrip + public static native boolean getEnableModernCDPRegistry(); + + private InspectorFlags() {} +} diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.cpp new file mode 100644 index 00000000000..bbb92abaaf6 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.cpp @@ -0,0 +1,27 @@ +/* + * 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 "JInspectorFlags.h" + +#include + +namespace facebook::react { + +bool JInspectorFlags::getEnableModernCDPRegistry(jni::alias_ref) { + auto& inspectorFlags = jsinspector_modern::InspectorFlags::getInstance(); + return inspectorFlags.getEnableModernCDPRegistry(); +} + +void JInspectorFlags::registerNatives() { + javaClassLocal()->registerNatives({ + makeNativeMethod( + "getEnableModernCDPRegistry", + JInspectorFlags::getEnableModernCDPRegistry), + }); +} + +} // namespace facebook::react diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.h b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.h new file mode 100644 index 00000000000..5e2cc2f70b2 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspectorFlags.h @@ -0,0 +1,30 @@ +/* + * 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 { + +/** + * fbjni interface for reading `jsinspector_modern::InspectorFlags`. + */ +class JInspectorFlags : public jni::JavaClass { + public: + static constexpr auto kJavaDescriptor = + "Lcom/facebook/react/bridge/InspectorFlags;"; + + static bool getEnableModernCDPRegistry(jni::alias_ref); + + static void registerNatives(); + + private: + JInspectorFlags(); +}; + +} // namespace facebook::react diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp index 6b37fefee65..19c0033c6fc 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/OnLoad.cpp @@ -24,6 +24,7 @@ #ifdef WITH_INSPECTOR #include "JInspector.h" +#include "JInspectorFlags.h" #endif #ifndef WITH_GLOGINIT @@ -89,6 +90,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { #ifdef WITH_INSPECTOR JInspector::registerNatives(); + JInspectorFlags::registerNatives(); #endif }); }