diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java index 154afe61139..c4309587064 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -48,6 +48,7 @@ import com.facebook.react.devsupport.interfaces.DevOptionHandler; import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.devsupport.interfaces.ErrorCustomizer; +import com.facebook.react.devsupport.interfaces.ErrorType; import com.facebook.react.devsupport.interfaces.PackagerStatusCallback; import com.facebook.react.devsupport.interfaces.StackFrame; import com.facebook.react.modules.core.RCTNativeAppEventEmitter; @@ -85,12 +86,6 @@ public abstract class DevSupportManagerBase "flipper://null/Hermesdebuggerrn?device=React%20Native"; private static final String FLIPPER_DEVTOOLS_URL = "flipper://null/React?device=React%20Native"; private boolean mIsSamplingProfilerEnabled = false; - - private enum ErrorType { - JS, - NATIVE - } - private static final String EXOPACKAGE_LOCATION_FORMAT = "/data/local/tmp/exopackage/%s//secondary-dex"; @@ -124,6 +119,7 @@ public abstract class DevSupportManagerBase private @Nullable RedBoxHandler mRedBoxHandler; private @Nullable String mLastErrorTitle; private @Nullable StackFrame[] mLastErrorStack; + private @Nullable ErrorType mLastErrorType; private int mLastErrorCookie = 0; private @Nullable DevBundleDownloadListener mBundleDownloadListener; private @Nullable List mErrorCustomizers; @@ -353,7 +349,7 @@ public abstract class DevSupportManagerBase updateLastErrorInfo(message, stack, errorCookie, ErrorType.JS); // JS errors are reported here after source mapping. if (mRedBoxHandler != null) { - mRedBoxHandler.handleRedbox(message, stack, RedBoxHandler.ErrorType.JS); + mRedBoxHandler.handleRedbox(message, stack, ErrorType.JS); mRedBoxDialog.resetReporting(); } mRedBoxDialog.show(); @@ -420,7 +416,7 @@ public abstract class DevSupportManagerBase // Only report native errors here. JS errors are reported // inside {@link #updateJSError} after source mapping. if (mRedBoxHandler != null && errorType == ErrorType.NATIVE) { - mRedBoxHandler.handleRedbox(message, stack, RedBoxHandler.ErrorType.NATIVE); + mRedBoxHandler.handleRedbox(message, stack, ErrorType.NATIVE); } mRedBoxDialog.resetReporting(); mRedBoxDialog.show(); @@ -1002,6 +998,11 @@ public abstract class DevSupportManagerBase return mLastErrorStack; } + @Override + public @Nullable ErrorType getLastErrorType() { + return mLastErrorType; + } + @Override public void onPackagerConnected() { // No-op @@ -1083,6 +1084,7 @@ public abstract class DevSupportManagerBase mLastErrorTitle = message; mLastErrorStack = stack; mLastErrorCookie = errorCookie; + mLastErrorType = errorType; } private void reloadJSInProxyMode() { diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java index 5f43f618cfc..be29234308c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java @@ -16,6 +16,7 @@ import com.facebook.react.devsupport.interfaces.DevOptionHandler; import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.devsupport.interfaces.ErrorCustomizer; +import com.facebook.react.devsupport.interfaces.ErrorType; import com.facebook.react.devsupport.interfaces.PackagerStatusCallback; import com.facebook.react.devsupport.interfaces.StackFrame; import com.facebook.react.modules.debug.interfaces.DeveloperSettings; @@ -154,6 +155,11 @@ public class DisabledDevSupportManager implements DevSupportManager { return null; } + @Override + public @Nullable ErrorType getLastErrorType() { + return null; + } + @Override public void registerErrorCustomizer(ErrorCustomizer errorCustomizer) {} diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java index f61b366a77a..b4fe60eec76 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java @@ -10,6 +10,7 @@ package com.facebook.react.devsupport; import android.content.Context; import android.text.SpannedString; import androidx.annotation.Nullable; +import com.facebook.react.devsupport.interfaces.ErrorType; import com.facebook.react.devsupport.interfaces.StackFrame; /** @@ -18,21 +19,6 @@ import com.facebook.react.devsupport.interfaces.StackFrame; * setRedBoxHandler in ReactInstanceManager. */ public interface RedBoxHandler { - enum ErrorType { - JS("JS"), - NATIVE("Native"); - - private final String name; - - ErrorType(String name) { - this.name = name; - } - - public String getName() { - return name; - } - } - /** Callback interface for {@link #reportRedbox}. */ interface ReportCompletedListener { void onReportSuccess(SpannedString spannedString); diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java index 92181077ab4..265f2da731e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java @@ -90,6 +90,9 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler { @Nullable StackFrame[] getLastErrorStack(); + @Nullable + ErrorType getLastErrorType(); + void registerErrorCustomizer(ErrorCustomizer errorCustomizer); /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java new file mode 100644 index 00000000000..2b5a1884b54 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/ErrorType.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) Facebook, Inc. and its 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.devsupport.interfaces; + +public enum ErrorType { + JS("JS"), + NATIVE("Native"); + + private final String name; + + ErrorType(String name) { + this.name = name; + } + + public String getName() { + return name; + } +}