mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 17:45:59 +00:00
5aa0e098b4
Summary: Implement a handler to allow intercepting all RN redboxes in Android, including exceptions in both JS and Java. The handler is not open sourced, so there is only an open-source interface called **RedBoxHandler** in //fbandroid/java/com/facebook/catalyst/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/devsupport//, meantime there is an internal class called **FBRedBoxHandler**, which implements **RedBoxHandler** and is located in //fbandroid/java/com/facebook/fbreact/redboxhandler//, actually handles the exception information. The code structure is as follows: - **AdsManagerActivity** has a member variable of **FBRedBoxHandler**. - **AdsManagerActivity** passes this handler all the way down to the **DevSupportManagerImpl**, through** ReactInstanceManager**, **ReactInstanceManagerImpl**, **DevSupportManagerFactory**. - **DevSupportManagerImpl** intercepts the exceptions just before showing the redboxes, like this: mRedBoxDialog.setExceptionDetails(message, stack); mRedBoxDialog.setErrorCookie(errorCookie); if (mRedBoxHandler != null) { mRedBoxHandler.handleRedbox(message, stack); } mRedBoxDialog.show(); By now, the internal class just prints information for each redbox to logcat, including exception message and stack trace. Reviewed By: mkonicek Differential Revision: D3369064 fbshipit-source-id: 199012c4b6ecf4b3d3aff51a26c9c9901847b6fc