From 027a2706d2e1523508404f13ebb6f9b0403d86e2 Mon Sep 17 00:00:00 2001 From: William Liu Date: Sun, 11 Sep 2016 01:27:22 -0700 Subject: [PATCH] Backed out changeset 31811805dd97 Reviewed By: hallucinogen Differential Revision: D3847504 fbshipit-source-id: a84eae70568f3a4a50cb6fcaf5c6f5772270d4f2 --- .../react/devsupport/DevServerHelper.java | 22 ++--------- .../devsupport/DevSupportManagerImpl.java | 39 +++++++++---------- .../devsupport/JSPackagerWebSocketClient.java | 30 +++----------- 3 files changed, 27 insertions(+), 64 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java index 38ee1bca2..707b93303 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -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; diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index f126b9516..68eeec8bd 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -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 } * {@code } */ -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 { 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(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSPackagerWebSocketClient.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSPackagerWebSocketClient.java index 0a3f96951..fd5f93bc0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSPackagerWebSocketClient.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/JSPackagerWebSocketClient.java @@ -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(); } }