From b046d54b89817dcb9e681492a1f6b15ce446da8a Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Thu, 21 Aug 2025 11:18:50 -0700 Subject: [PATCH] Remove dead Inspector.kt/JInspector.h/.cpp code (#53403) Summary: This code is Legacy and totally unused. It should be safe to remove it altogether. This class is public but no one is using it in OSS + no one should be using it, so I don't think we'll need the full deprecation cycle for it. Changelog: [Android] [Removed] - Removed unused `Inspector` public class from React Android Reviewed By: cipolleschi Differential Revision: D80711515 --- .../ReactAndroid/api/ReactAndroid.api | 28 ----- .../com/facebook/react/bridge/Inspector.kt | 78 ------------ .../src/main/jni/react/jni/CMakeLists.txt | 1 - .../src/main/jni/react/jni/JInspector.cpp | 112 ------------------ .../src/main/jni/react/jni/JInspector.h | 77 ------------ .../src/main/jni/react/jni/OnLoad.cpp | 2 - 6 files changed, 298 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.kt delete mode 100644 packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp delete mode 100644 packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.h diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 53c415d96532..137871012284 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -744,34 +744,6 @@ public abstract class com/facebook/react/bridge/GuardedRunnable : java/lang/Runn public abstract fun runGuarded ()V } -public final class com/facebook/react/bridge/Inspector { - public static final field Companion Lcom/facebook/react/bridge/Inspector$Companion; - public static final fun connect (ILcom/facebook/react/bridge/Inspector$RemoteConnection;)Lcom/facebook/react/bridge/Inspector$LocalConnection; - public static final fun getPages ()Ljava/util/List; -} - -public final class com/facebook/react/bridge/Inspector$Companion { - public final fun connect (ILcom/facebook/react/bridge/Inspector$RemoteConnection;)Lcom/facebook/react/bridge/Inspector$LocalConnection; - public final fun getPages ()Ljava/util/List; -} - -public final class com/facebook/react/bridge/Inspector$LocalConnection { - public final fun disconnect ()V - public final fun sendMessage (Ljava/lang/String;)V -} - -public final class com/facebook/react/bridge/Inspector$Page { - public final fun getId ()I - public final fun getTitle ()Ljava/lang/String; - public final fun getVM ()Ljava/lang/String; - public fun toString ()Ljava/lang/String; -} - -public abstract interface class com/facebook/react/bridge/Inspector$RemoteConnection { - public abstract fun onDisconnect ()V - public abstract fun onMessage (Ljava/lang/String;)V -} - public class com/facebook/react/bridge/JSApplicationCausedNativeException : java/lang/RuntimeException { public fun (Ljava/lang/String;)V public fun (Ljava/lang/String;Ljava/lang/Throwable;)V diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.kt deleted file mode 100644 index ee52dbcfa1c5..000000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/Inspector.kt +++ /dev/null @@ -1,78 +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. - */ - -package com.facebook.react.bridge - -import com.facebook.common.logging.FLog -import com.facebook.jni.HybridData -import com.facebook.proguard.annotations.DoNotStrip -import com.facebook.react.common.ReactConstants - -@DoNotStrip -public class Inspector -private constructor(@Suppress("NoHungarianNotation") private val mHybridData: HybridData) { - - private external fun getPagesNative(): Array - - private external fun connectNative(pageId: Int, remote: RemoteConnection): LocalConnection? - - @DoNotStrip - public class Page - private constructor(private val id: Int, private val title: String, private val vm: String) { - public fun getId(): Int = id - - public fun getTitle(): String = title - - public fun getVM(): String = vm - - override fun toString(): String = "Page{id=$id, title='$title'}" - } - - @DoNotStrip - public interface RemoteConnection { - @DoNotStrip public fun onMessage(message: String) - - @DoNotStrip public fun onDisconnect() - } - - @DoNotStrip - public class LocalConnection - private constructor(@Suppress("NoHungarianNotation") private val mHybridData: HybridData) { - public external fun sendMessage(message: String) - - public external fun disconnect() - } - - public companion object { - init { - ReactNativeJNISoLoader.staticInit() - } - - @JvmStatic - public fun getPages(): List { - return try { - instance().getPagesNative().toList() - } catch (e: UnsatisfiedLinkError) { - FLog.e(ReactConstants.TAG, "Inspector doesn't work in open source yet", e) - emptyList() - } - } - - @JvmStatic - public fun connect(pageId: Int, remote: RemoteConnection): LocalConnection { - return try { - instance().connectNative(pageId, remote) - ?: throw IllegalStateException("Can't open failed connection") - } catch (e: UnsatisfiedLinkError) { - FLog.e(ReactConstants.TAG, "Inspector doesn't work in open source yet", e) - throw RuntimeException(e) - } - } - - @JvmStatic private external fun instance(): Inspector - } -} diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt index ca99c896ea9d..b9c939dc9cdf 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/CMakeLists.txt @@ -54,7 +54,6 @@ add_library( CatalystInstanceImpl.cpp InspectorNetworkRequestListener.cpp JExecutor.cpp - JInspector.cpp JMessageQueueThread.cpp JReactCxxErrorHandler.cpp JReactSoftExceptionLogger.cpp diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp deleted file mode 100644 index d469cb88d2d4..000000000000 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.cpp +++ /dev/null @@ -1,112 +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. - */ - -#include "JInspector.h" - -#include - -namespace facebook::react { - -namespace { - -class RemoteConnection : public jsinspector_modern::IRemoteConnection { - public: - RemoteConnection(jni::alias_ref connection) - : connection_(jni::make_global(connection)) {} - - void onMessage(std::string message) override { - connection_->onMessage(message); - } - - void onDisconnect() override { - connection_->onDisconnect(); - } - - private: - jni::global_ref connection_; -}; - -} // namespace - -jni::local_ref -JPage::create(int id, const std::string& title, const std::string& vm) { - static auto constructor = javaClassStatic() - ->getConstructor, - jni::local_ref)>(); - return javaClassStatic()->newObject( - constructor, id, jni::make_jstring(title), jni::make_jstring(vm)); -} - -void JRemoteConnection::onMessage(const std::string& message) const { - static auto method = - javaClassStatic()->getMethod)>("onMessage"); - method(self(), jni::make_jstring(message)); -} - -void JRemoteConnection::onDisconnect() const { - static auto method = javaClassStatic()->getMethod("onDisconnect"); - method(self()); -} - -JLocalConnection::JLocalConnection( - std::unique_ptr connection) - : connection_(std::move(connection)) {} - -void JLocalConnection::sendMessage(std::string message) { - connection_->sendMessage(std::move(message)); -} - -void JLocalConnection::disconnect() { - connection_->disconnect(); -} - -void JLocalConnection::registerNatives() { - javaClassStatic()->registerNatives({ - makeNativeMethod("sendMessage", JLocalConnection::sendMessage), - makeNativeMethod("disconnect", JLocalConnection::disconnect), - }); -} - -jni::global_ref JInspector::instance( - jni::alias_ref /*unused*/) { - static auto instance = jni::make_global( - newObjectCxxArgs(&jsinspector_modern::getInspectorInstance())); - return instance; -} - -jni::local_ref> JInspector::getPages() { - std::vector pages = - inspector_->getPages(); - auto array = jni::JArrayClass::newArray(pages.size()); - for (size_t i = 0; i < pages.size(); i++) { - (*array)[i] = JPage::create(pages[i].id, pages[i].description, pages[i].vm); - } - return array; -} - -jni::local_ref JInspector::connect( - int pageId, - jni::alias_ref remote) { - auto localConnection = inspector_->connect( - pageId, std::make_unique(std::move(remote))); - return localConnection - ? JLocalConnection::newObjectCxxArgs(std::move(localConnection)) - : nullptr; -} - -void JInspector::registerNatives() { - JLocalConnection::registerNatives(); - javaClassStatic()->registerNatives({ - makeNativeMethod("instance", JInspector::instance), - makeNativeMethod("getPagesNative", JInspector::getPages), - makeNativeMethod("connectNative", JInspector::connect), - }); -} - -} // namespace facebook::react diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.h b/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.h deleted file mode 100644 index 897976e0ce7f..000000000000 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/JInspector.h +++ /dev/null @@ -1,77 +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 - -#include - -#include - -namespace facebook::react { - -class JPage : public jni::JavaClass { - public: - static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/bridge/Inspector$Page;"; - - static jni::local_ref - create(int id, const std::string& title, const std::string& vm); -}; - -class JRemoteConnection : public jni::JavaClass { - public: - static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/bridge/Inspector$RemoteConnection;"; - - void onMessage(const std::string& message) const; - void onDisconnect() const; -}; - -class JLocalConnection : public jni::HybridClass { - public: - static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/bridge/Inspector$LocalConnection;"; - - JLocalConnection( - std::unique_ptr connection); - - void sendMessage(std::string message); - void disconnect(); - - static void registerNatives(); - - private: - std::unique_ptr connection_; -}; - -class JInspector : public jni::HybridClass { - public: - static constexpr auto kJavaDescriptor = - "Lcom/facebook/react/bridge/Inspector;"; - - static jni::global_ref instance( - jni::alias_ref); - - jni::local_ref> getPages(); - jni::local_ref connect( - int pageId, - jni::alias_ref remote); - - static void registerNatives(); - - private: - friend HybridBase; - - JInspector(jsinspector_modern::IInspector* inspector) - : inspector_(inspector) {} - - jsinspector_modern::IInspector* inspector_; -}; - -} // 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 90918a4a3bc9..dae7749e2577 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 @@ -13,7 +13,6 @@ #include "CatalystInstanceImpl.h" #include "CxxModuleWrapperBase.h" #include "InspectorNetworkRequestListener.h" -#include "JInspector.h" #include "JavaScriptExecutorHolder.h" #include "ReactInstanceManagerInspectorTarget.h" @@ -41,7 +40,6 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { CatalystInstanceImpl::registerNatives(); #endif CxxModuleWrapperBase::registerNatives(); - JInspector::registerNatives(); ReactInstanceManagerInspectorTarget::registerNatives(); InspectorNetworkRequestListener::registerNatives(); });