Skip to content

Commit 423453e

Browse files
luluwu2032facebook-github-bot
authored andcommitted
Record latest error type in dev support
Summary: In DevSupportManagerBase.java->updateLastErrorInfo(), errorType was not recorded like errorMessage and errorStack, we could either remove errorType as a parameter or recorded it for future use. This diff recorded it since it would make the error info complete. Changelog: [Android][Changed] - Record latest error type in dev support Reviewed By: PeteTheHeat Differential Revision: D26884647 fbshipit-source-id: 712d82667bdc4b3410f4c83a3df9a456af6d9061
1 parent ba61267 commit 423453e

File tree

5 files changed

+43
-23
lines changed

5 files changed

+43
-23
lines changed

ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback;
4949
import com.facebook.react.devsupport.interfaces.DevSupportManager;
5050
import com.facebook.react.devsupport.interfaces.ErrorCustomizer;
51+
import com.facebook.react.devsupport.interfaces.ErrorType;
5152
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
5253
import com.facebook.react.devsupport.interfaces.StackFrame;
5354
import com.facebook.react.modules.core.RCTNativeAppEventEmitter;
@@ -85,12 +86,6 @@ public interface CallbackWithBundleLoader {
8586
"flipper://null/Hermesdebuggerrn?device=React%20Native";
8687
private static final String FLIPPER_DEVTOOLS_URL = "flipper://null/React?device=React%20Native";
8788
private boolean mIsSamplingProfilerEnabled = false;
88-
89-
private enum ErrorType {
90-
JS,
91-
NATIVE
92-
}
93-
9489
private static final String EXOPACKAGE_LOCATION_FORMAT =
9590
"/data/local/tmp/exopackage/%s//secondary-dex";
9691

@@ -124,6 +119,7 @@ private enum ErrorType {
124119
private @Nullable RedBoxHandler mRedBoxHandler;
125120
private @Nullable String mLastErrorTitle;
126121
private @Nullable StackFrame[] mLastErrorStack;
122+
private @Nullable ErrorType mLastErrorType;
127123
private int mLastErrorCookie = 0;
128124
private @Nullable DevBundleDownloadListener mBundleDownloadListener;
129125
private @Nullable List<ErrorCustomizer> mErrorCustomizers;
@@ -353,7 +349,7 @@ public void run() {
353349
updateLastErrorInfo(message, stack, errorCookie, ErrorType.JS);
354350
// JS errors are reported here after source mapping.
355351
if (mRedBoxHandler != null) {
356-
mRedBoxHandler.handleRedbox(message, stack, RedBoxHandler.ErrorType.JS);
352+
mRedBoxHandler.handleRedbox(message, stack, ErrorType.JS);
357353
mRedBoxDialog.resetReporting();
358354
}
359355
mRedBoxDialog.show();
@@ -420,7 +416,7 @@ public void run() {
420416
// Only report native errors here. JS errors are reported
421417
// inside {@link #updateJSError} after source mapping.
422418
if (mRedBoxHandler != null && errorType == ErrorType.NATIVE) {
423-
mRedBoxHandler.handleRedbox(message, stack, RedBoxHandler.ErrorType.NATIVE);
419+
mRedBoxHandler.handleRedbox(message, stack, ErrorType.NATIVE);
424420
}
425421
mRedBoxDialog.resetReporting();
426422
mRedBoxDialog.show();
@@ -1002,6 +998,11 @@ public void run() {
1002998
return mLastErrorStack;
1003999
}
10041000

1001+
@Override
1002+
public @Nullable ErrorType getLastErrorType() {
1003+
return mLastErrorType;
1004+
}
1005+
10051006
@Override
10061007
public void onPackagerConnected() {
10071008
// No-op
@@ -1083,6 +1084,7 @@ private void updateLastErrorInfo(
10831084
mLastErrorTitle = message;
10841085
mLastErrorStack = stack;
10851086
mLastErrorCookie = errorCookie;
1087+
mLastErrorType = errorType;
10861088
}
10871089

10881090
private void reloadJSInProxyMode() {

ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java

+6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback;
1717
import com.facebook.react.devsupport.interfaces.DevSupportManager;
1818
import com.facebook.react.devsupport.interfaces.ErrorCustomizer;
19+
import com.facebook.react.devsupport.interfaces.ErrorType;
1920
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
2021
import com.facebook.react.devsupport.interfaces.StackFrame;
2122
import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
@@ -154,6 +155,11 @@ public void isPackagerRunning(final PackagerStatusCallback callback) {
154155
return null;
155156
}
156157

158+
@Override
159+
public @Nullable ErrorType getLastErrorType() {
160+
return null;
161+
}
162+
157163
@Override
158164
public void registerErrorCustomizer(ErrorCustomizer errorCustomizer) {}
159165

ReactAndroid/src/main/java/com/facebook/react/devsupport/RedBoxHandler.java

+1-15
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import android.content.Context;
1111
import android.text.SpannedString;
1212
import androidx.annotation.Nullable;
13+
import com.facebook.react.devsupport.interfaces.ErrorType;
1314
import com.facebook.react.devsupport.interfaces.StackFrame;
1415

1516
/**
@@ -18,21 +19,6 @@
1819
* setRedBoxHandler in ReactInstanceManager.
1920
*/
2021
public interface RedBoxHandler {
21-
enum ErrorType {
22-
JS("JS"),
23-
NATIVE("Native");
24-
25-
private final String name;
26-
27-
ErrorType(String name) {
28-
this.name = name;
29-
}
30-
31-
public String getName() {
32-
return name;
33-
}
34-
}
35-
3622
/** Callback interface for {@link #reportRedbox}. */
3723
interface ReportCompletedListener {
3824
void onReportSuccess(SpannedString spannedString);

ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java

+3
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler {
9090
@Nullable
9191
StackFrame[] getLastErrorStack();
9292

93+
@Nullable
94+
ErrorType getLastErrorType();
95+
9396
void registerErrorCustomizer(ErrorCustomizer errorCustomizer);
9497

9598
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright (c) Facebook, Inc. and its affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
package com.facebook.react.devsupport.interfaces;
9+
10+
public enum ErrorType {
11+
JS("JS"),
12+
NATIVE("Native");
13+
14+
private final String name;
15+
16+
ErrorType(String name) {
17+
this.name = name;
18+
}
19+
20+
public String getName() {
21+
return name;
22+
}
23+
}

0 commit comments

Comments
 (0)