mirror of
https://github.com/status-im/react-native.git
synced 2025-02-28 09:00:55 +00:00
Backed out changeset 31811805dd97
Reviewed By: hallucinogen Differential Revision: D3847504 fbshipit-source-id: a84eae70568f3a4a50cb6fcaf5c6f5772270d4f2
This commit is contained in:
parent
2e4ab9ff70
commit
027a2706d2
@ -79,7 +79,7 @@ public class DevServerHelper {
|
||||
}
|
||||
|
||||
public interface PackagerCommandListener {
|
||||
void onPackagerReloadCommand();
|
||||
void onReload();
|
||||
}
|
||||
|
||||
public interface PackagerStatusCallback {
|
||||
@ -88,15 +88,15 @@ public class DevServerHelper {
|
||||
|
||||
private final DevInternalSettings mSettings;
|
||||
private final OkHttpClient mClient;
|
||||
private final JSPackagerWebSocketClient mPackagerConnection;
|
||||
private final Handler mRestartOnChangePollingHandler;
|
||||
|
||||
private boolean mOnChangePollingEnabled;
|
||||
private @Nullable JSPackagerWebSocketClient mPackagerConnection;
|
||||
private @Nullable OkHttpClient mOnChangePollingClient;
|
||||
private @Nullable OnServerContentChangeListener mOnServerContentChangeListener;
|
||||
private @Nullable Call mDownloadBundleFromURLCall;
|
||||
|
||||
public DevServerHelper(DevInternalSettings settings) {
|
||||
public DevServerHelper(DevInternalSettings settings, final PackagerCommandListener commandListener) {
|
||||
mSettings = settings;
|
||||
mClient = new OkHttpClient.Builder()
|
||||
.connectTimeout(HTTP_CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
|
||||
@ -105,32 +105,18 @@ public class DevServerHelper {
|
||||
.build();
|
||||
|
||||
mRestartOnChangePollingHandler = new Handler();
|
||||
}
|
||||
|
||||
public void openPackagerConnection(final PackagerCommandListener commandListener) {
|
||||
if (mPackagerConnection != null) {
|
||||
FLog.w(ReactConstants.TAG, "Packager connection already open, nooping.");
|
||||
return;
|
||||
}
|
||||
mPackagerConnection = new JSPackagerWebSocketClient(getPackagerConnectionURL(),
|
||||
new JSPackagerWebSocketClient.JSPackagerCallback() {
|
||||
@Override
|
||||
public void onMessage(String target, String action) {
|
||||
if (commandListener != null && "bridge".equals(target) && "reload".equals(action)) {
|
||||
commandListener.onPackagerReloadCommand();
|
||||
commandListener.onReload();
|
||||
}
|
||||
}
|
||||
});
|
||||
mPackagerConnection.connect();
|
||||
}
|
||||
|
||||
public void closePackagerConnection() {
|
||||
if (mPackagerConnection != null) {
|
||||
mPackagerConnection.closeQuietly();
|
||||
mPackagerConnection = null;
|
||||
}
|
||||
}
|
||||
|
||||
/** Intent action for reloading the JS */
|
||||
public static String getReloadAppAction(Context context) {
|
||||
return context.getPackageName() + RELOAD_APP_ACTION_SUFFIX;
|
||||
|
@ -48,7 +48,6 @@ import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.common.ReactConstants;
|
||||
import com.facebook.react.common.ShakeDetector;
|
||||
import com.facebook.react.common.futures.SimpleSettableFuture;
|
||||
import com.facebook.react.devsupport.DevServerHelper.PackagerCommandListener;
|
||||
import com.facebook.react.devsupport.StackTraceHelper.StackFrame;
|
||||
import com.facebook.react.modules.debug.DeveloperSettings;
|
||||
|
||||
@ -83,7 +82,7 @@ import okhttp3.RequestBody;
|
||||
* {@code <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>}
|
||||
* {@code <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>}
|
||||
*/
|
||||
public class DevSupportManagerImpl implements DevSupportManager, PackagerCommandListener {
|
||||
public class DevSupportManagerImpl implements DevSupportManager {
|
||||
|
||||
private static final int JAVA_ERROR_COOKIE = -1;
|
||||
private static final int JSEXCEPTION_ERROR_COOKIE = -1;
|
||||
@ -121,6 +120,7 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
private int mLastErrorCookie = 0;
|
||||
private @Nullable ErrorType mLastErrorType;
|
||||
|
||||
|
||||
private static class JscProfileTask extends AsyncTask<String, Void, Void> {
|
||||
private static final MediaType JSON =
|
||||
MediaType.parse("application/json; charset=utf-8");
|
||||
@ -178,7 +178,19 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
mApplicationContext = applicationContext;
|
||||
mJSAppBundleName = packagerPathForJSBundleName;
|
||||
mDevSettings = new DevInternalSettings(applicationContext, this);
|
||||
mDevServerHelper = new DevServerHelper(mDevSettings);
|
||||
mDevServerHelper = new DevServerHelper(
|
||||
mDevSettings,
|
||||
new DevServerHelper.PackagerCommandListener() {
|
||||
@Override
|
||||
public void onReload() {
|
||||
UiThreadUtil.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleReloadJS();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Prepare shake gesture detector (will be started/stopped from #reload)
|
||||
mShakeDetector = new ShakeDetector(new ShakeDetector.ShakeListener() {
|
||||
@ -225,11 +237,8 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
if (e instanceof JSException) {
|
||||
FLog.e(ReactConstants.TAG, "Exception in native call from JS", e);
|
||||
// TODO #11638796: convert the stack into something useful
|
||||
showNewError(
|
||||
e.getMessage() + "\n\n" + ((JSException) e).getStack(),
|
||||
new StackFrame[] {},
|
||||
JSEXCEPTION_ERROR_COOKIE,
|
||||
ErrorType.JS);
|
||||
showNewError(e.getMessage() + "\n\n" + ((JSException) e).getStack(), new StackFrame[] {},
|
||||
JSEXCEPTION_ERROR_COOKIE, ErrorType.JS);
|
||||
} else {
|
||||
showNewJavaError(e.getMessage(), e);
|
||||
}
|
||||
@ -379,7 +388,7 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
}
|
||||
});
|
||||
options.put(
|
||||
mApplicationContext.getString(R.string.catalyst_element_inspector),
|
||||
mApplicationContext.getString(R.string.catalyst_element_inspector),
|
||||
new DevOptionHandler() {
|
||||
@Override
|
||||
public void onOptionSelected() {
|
||||
@ -665,16 +674,6 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
return mLastErrorStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPackagerReloadCommand() {
|
||||
UiThreadUtil.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
handleReloadJS();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void updateLastErrorInfo(
|
||||
final String message,
|
||||
final StackFrame[] stack,
|
||||
@ -803,7 +802,6 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
mIsReceiverRegistered = true;
|
||||
}
|
||||
|
||||
mDevServerHelper.openPackagerConnection(this);
|
||||
if (mDevSettings.isReloadOnJSChangeEnabled()) {
|
||||
mDevServerHelper.startPollingOnChangeEndpoint(
|
||||
new DevServerHelper.OnServerContentChangeListener() {
|
||||
@ -843,7 +841,6 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand
|
||||
mDevOptionsDialog.dismiss();
|
||||
}
|
||||
|
||||
mDevServerHelper.closePackagerConnection();
|
||||
mDevServerHelper.stopPollingOnChangeEndpoint();
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,6 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
|
||||
private final String mUrl;
|
||||
private final Handler mHandler;
|
||||
private boolean mClosed = false;
|
||||
private boolean mSuppressConnectionErrors;
|
||||
|
||||
public interface JSPackagerCallback {
|
||||
@ -58,9 +57,6 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
}
|
||||
|
||||
public void connect() {
|
||||
if (mClosed) {
|
||||
throw new IllegalStateException("Can't connect closed client");
|
||||
}
|
||||
OkHttpClient httpClient = new OkHttpClient.Builder()
|
||||
.connectTimeout(10, TimeUnit.SECONDS)
|
||||
.writeTimeout(10, TimeUnit.SECONDS)
|
||||
@ -73,9 +69,6 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
}
|
||||
|
||||
private void reconnect() {
|
||||
if (mClosed) {
|
||||
throw new IllegalStateException("Can't reconnect closed client");
|
||||
}
|
||||
if (!mSuppressConnectionErrors) {
|
||||
FLog.w(TAG, "Couldn't connect to packager, will silently retry");
|
||||
mSuppressConnectionErrors = true;
|
||||
@ -84,21 +77,12 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// check that we haven't been closed in the meantime
|
||||
if (!mClosed) {
|
||||
connect();
|
||||
}
|
||||
connect();
|
||||
}
|
||||
},
|
||||
RECONNECT_DELAY_MS);
|
||||
}, RECONNECT_DELAY_MS);
|
||||
}
|
||||
|
||||
public void closeQuietly() {
|
||||
mClosed = true;
|
||||
closeWebSocketQuietly();
|
||||
}
|
||||
|
||||
private void closeWebSocketQuietly() {
|
||||
if (mWebSocket != null) {
|
||||
try {
|
||||
mWebSocket.close(1000, "End of session");
|
||||
@ -167,9 +151,7 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
if (mWebSocket != null) {
|
||||
abort("Websocket exception", e);
|
||||
}
|
||||
if (!mClosed) {
|
||||
reconnect();
|
||||
}
|
||||
reconnect();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -181,9 +163,7 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
@Override
|
||||
public void onClose(int code, String reason) {
|
||||
mWebSocket = null;
|
||||
if (!mClosed) {
|
||||
reconnect();
|
||||
}
|
||||
reconnect();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -193,6 +173,6 @@ public class JSPackagerWebSocketClient implements WebSocketListener {
|
||||
|
||||
private void abort(String message, Throwable cause) {
|
||||
FLog.e(TAG, "Error occurred, shutting down websocket connection: " + message, cause);
|
||||
closeWebSocketQuietly();
|
||||
closeQuietly();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user