diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java index fdb3e9a7f0d..f105dea178b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java @@ -50,6 +50,8 @@ import com.facebook.react.common.build.ReactBuildConfig; import com.facebook.react.devsupport.DevSupportManagerBase; import com.facebook.react.devsupport.InspectorFlags; import com.facebook.react.devsupport.ReleaseDevSupportManager; +import com.facebook.react.devsupport.inspector.InspectorNetworkHelper; +import com.facebook.react.devsupport.inspector.InspectorNetworkRequestListener; import com.facebook.react.devsupport.interfaces.BundleLoadCallback; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevSupportManager.PausedInDebuggerOverlayCommandListener; @@ -508,6 +510,11 @@ public class ReactHostImpl implements ReactHost { return AndroidInfoHelpers.getInspectorHostMetadata(mContext); } + @DoNotStrip + private void loadNetworkResource(String url, InspectorNetworkRequestListener listener) { + InspectorNetworkHelper.loadNetworkResource(url, listener); + } + /** * Entrypoint to destroy the ReactInstance. If the ReactInstance is reloading, will wait until * reload is finished, before destroying. diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp index c48165866dc..2204017b3ec 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.cpp @@ -6,6 +6,7 @@ */ #include "JReactHostInspectorTarget.h" + #include #include #include @@ -126,6 +127,19 @@ void JReactHostInspectorTarget::onSetPausedInDebuggerMessage( } } +void JReactHostInspectorTarget::loadNetworkResource( + const jsinspector_modern::LoadNetworkResourceRequest& params, + jsinspector_modern::ScopedExecutor< + jsinspector_modern::NetworkRequestListener> executor) { + // Construct InspectorNetworkRequestListener (hybrid class) from the C++ side + // (holding the ScopedExecutor), pass to the delegate. + auto listener = InspectorNetworkRequestListener::newObjectCxxArgs(executor); + + if (auto javaReactHostImplStrong = javaReactHostImpl_->get()) { + javaReactHostImplStrong->loadNetworkResource(params.url, listener); + } +} + HostTarget* JReactHostInspectorTarget::getInspectorTarget() { return inspectorTarget_ ? inspectorTarget_.get() : nullptr; } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h index 6aa4bbea829..1f6cf1e80c8 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/JReactHostInspectorTarget.h @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -44,6 +45,19 @@ struct JReactHostImpl : public jni::JavaClass { "getHostMetadata"); return method(self()); } + + void loadNetworkResource( + const std::string& url, + jni::local_ref listener) + const { + auto method = + javaClassStatic() + ->getMethod, + jni::local_ref)>( + "loadNetworkResource"); + return method(self(), jni::make_jstring(url), listener); + } }; class JReactHostInspectorTarget @@ -70,6 +84,10 @@ class JReactHostInspectorTarget void onReload(const PageReloadRequest& request) override; void onSetPausedInDebuggerMessage( const OverlaySetPausedInDebuggerMessageRequest&) override; + void loadNetworkResource( + const jsinspector_modern::LoadNetworkResourceRequest& params, + jsinspector_modern::ScopedExecutor< + jsinspector_modern::NetworkRequestListener> executor) override; private: JReactHostInspectorTarget(