Skip to content

Commit 478df15

Browse files
cpojerfacebook-github-bot
authored andcommitted
Remove "Reload on JS change" from RN Android
Summary: This feature is not necessary any longer with Fast Refresh enabled by default. Reviewed By: gaearon Differential Revision: D17156607 fbshipit-source-id: 2396a86d192c6b5d90cbed9cefbf13367dd6b699
1 parent b1c954b commit 478df15

File tree

6 files changed

+1
-149
lines changed

6 files changed

+1
-149
lines changed

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

-12
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@ public class DevInternalSettings
2727
private static final String PREFS_JS_DEV_MODE_DEBUG_KEY = "js_dev_mode_debug";
2828
private static final String PREFS_JS_MINIFY_DEBUG_KEY = "js_minify_debug";
2929
private static final String PREFS_ANIMATIONS_DEBUG_KEY = "animations_debug";
30-
// This option is no longer exposed in the dev menu UI.
31-
// It was renamed in D15958697 so it doesn't get stuck with no way to turn it off:
32-
private static final String PREFS_RELOAD_ON_JS_CHANGE_KEY = "reload_on_js_change_LEGACY";
3330
private static final String PREFS_INSPECTOR_DEBUG_KEY = "inspector_debug";
3431
private static final String PREFS_HOT_MODULE_REPLACEMENT_KEY = "hot_module_replacement";
3532
private static final String PREFS_REMOTE_JS_DEBUG_KEY = "remote_js_debug";
@@ -82,7 +79,6 @@ public boolean isJSMinifyEnabled() {
8279
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
8380
if (mListener != null) {
8481
if (PREFS_FPS_DEBUG_KEY.equals(key)
85-
|| PREFS_RELOAD_ON_JS_CHANGE_KEY.equals(key)
8682
|| PREFS_JS_DEV_MODE_DEBUG_KEY.equals(key)
8783
|| PREFS_START_SAMPLING_PROFILER_ON_INIT.equals(key)
8884
|| PREFS_JS_MINIFY_DEBUG_KEY.equals(key)) {
@@ -99,14 +95,6 @@ public void setHotModuleReplacementEnabled(boolean enabled) {
9995
mPreferences.edit().putBoolean(PREFS_HOT_MODULE_REPLACEMENT_KEY, enabled).apply();
10096
}
10197

102-
public boolean isReloadOnJSChangeEnabled() {
103-
return mPreferences.getBoolean(PREFS_RELOAD_ON_JS_CHANGE_KEY, false);
104-
}
105-
106-
public void setReloadOnJSChangeEnabled(boolean enabled) {
107-
mPreferences.edit().putBoolean(PREFS_RELOAD_ON_JS_CHANGE_KEY, enabled).apply();
108-
}
109-
11098
public boolean isElementInspectorEnabled() {
11199
return mPreferences.getBoolean(PREFS_INSPECTOR_DEBUG_KEY, false);
112100
}

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

-96
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,12 @@
88

99
import android.content.Context;
1010
import android.os.AsyncTask;
11-
import android.os.Handler;
12-
import android.os.Looper;
1311
import android.widget.Toast;
1412
import androidx.annotation.Nullable;
1513
import com.facebook.common.logging.FLog;
1614
import com.facebook.infer.annotation.Assertions;
1715
import com.facebook.react.R;
18-
import com.facebook.react.bridge.UiThreadUtil;
1916
import com.facebook.react.common.ReactConstants;
20-
import com.facebook.react.common.network.OkHttpCallUtil;
2117
import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
2218
import com.facebook.react.devsupport.interfaces.PackagerStatusCallback;
2319
import com.facebook.react.devsupport.interfaces.StackFrame;
@@ -38,7 +34,6 @@
3834
import java.util.concurrent.TimeUnit;
3935
import okhttp3.Call;
4036
import okhttp3.Callback;
41-
import okhttp3.ConnectionPool;
4237
import okhttp3.MediaType;
4338
import okhttp3.OkHttpClient;
4439
import okhttp3.Request;
@@ -68,8 +63,6 @@ public class DevServerHelper {
6863

6964
private static final String PACKAGER_OK_STATUS = "packager-status:running";
7065

71-
private static final int LONG_POLL_KEEP_ALIVE_DURATION_MS = 2 * 60 * 1000; // 2 mins
72-
private static final int LONG_POLL_FAILURE_DELAY_MS = 5000;
7366
private static final int HTTP_CONNECT_TIMEOUT_MS = 5000;
7467

7568
private static final String DEBUGGER_MSG_DISABLE = "{ \"id\":1,\"method\":\"Debugger.disable\" }";
@@ -117,15 +110,11 @@ public String typeID() {
117110

118111
private final DevInternalSettings mSettings;
119112
private final OkHttpClient mClient;
120-
private final Handler mRestartOnChangePollingHandler;
121113
private final BundleDownloader mBundleDownloader;
122114
private final String mPackageName;
123115

124-
private boolean mOnChangePollingEnabled;
125116
private @Nullable JSPackagerClient mPackagerClient;
126117
private @Nullable InspectorPackagerConnection mInspectorPackagerConnection;
127-
private @Nullable OkHttpClient mOnChangePollingClient;
128-
private @Nullable OnServerContentChangeListener mOnServerContentChangeListener;
129118
private InspectorPackagerConnection.BundleStatusProvider mBundlerStatusProvider;
130119

131120
public DevServerHelper(
@@ -142,7 +131,6 @@ public DevServerHelper(
142131
.build();
143132
mBundleDownloader = new BundleDownloader(mClient);
144133

145-
mRestartOnChangePollingHandler = new Handler(Looper.getMainLooper());
146134
mPackageName = packageName;
147135
}
148136

@@ -524,90 +512,6 @@ private static String createPackagerStatusURL(String host) {
524512
return String.format(Locale.US, "http://%s/status", host);
525513
}
526514

527-
public void stopPollingOnChangeEndpoint() {
528-
mOnChangePollingEnabled = false;
529-
mRestartOnChangePollingHandler.removeCallbacksAndMessages(null);
530-
if (mOnChangePollingClient != null) {
531-
OkHttpCallUtil.cancelTag(mOnChangePollingClient, this);
532-
mOnChangePollingClient = null;
533-
}
534-
mOnServerContentChangeListener = null;
535-
}
536-
537-
public void startPollingOnChangeEndpoint(
538-
OnServerContentChangeListener onServerContentChangeListener) {
539-
if (mOnChangePollingEnabled) {
540-
// polling already enabled
541-
return;
542-
}
543-
mOnChangePollingEnabled = true;
544-
mOnServerContentChangeListener = onServerContentChangeListener;
545-
mOnChangePollingClient =
546-
new OkHttpClient.Builder()
547-
.connectionPool(
548-
new ConnectionPool(1, LONG_POLL_KEEP_ALIVE_DURATION_MS, TimeUnit.MILLISECONDS))
549-
.connectTimeout(HTTP_CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)
550-
.build();
551-
enqueueOnChangeEndpointLongPolling();
552-
}
553-
554-
private void handleOnChangePollingResponse(boolean didServerContentChanged) {
555-
if (mOnChangePollingEnabled) {
556-
if (didServerContentChanged) {
557-
UiThreadUtil.runOnUiThread(
558-
new Runnable() {
559-
@Override
560-
public void run() {
561-
if (mOnServerContentChangeListener != null) {
562-
mOnServerContentChangeListener.onServerContentChanged();
563-
}
564-
}
565-
});
566-
}
567-
enqueueOnChangeEndpointLongPolling();
568-
}
569-
}
570-
571-
private void enqueueOnChangeEndpointLongPolling() {
572-
Request request = new Request.Builder().url(createOnChangeEndpointUrl()).tag(this).build();
573-
Assertions.assertNotNull(mOnChangePollingClient)
574-
.newCall(request)
575-
.enqueue(
576-
new Callback() {
577-
@Override
578-
public void onFailure(Call call, IOException e) {
579-
if (mOnChangePollingEnabled) {
580-
// this runnable is used by onchange endpoint poller to delay subsequent requests
581-
// in case
582-
// of a failure, so that we don't flood network queue with frequent requests in
583-
// case when
584-
// dev server is down
585-
FLog.d(ReactConstants.TAG, "Error while requesting /onchange endpoint", e);
586-
mRestartOnChangePollingHandler.postDelayed(
587-
new Runnable() {
588-
@Override
589-
public void run() {
590-
handleOnChangePollingResponse(false);
591-
}
592-
},
593-
LONG_POLL_FAILURE_DELAY_MS);
594-
}
595-
}
596-
597-
@Override
598-
public void onResponse(Call call, Response response) throws IOException {
599-
handleOnChangePollingResponse(response.code() == 205);
600-
}
601-
});
602-
}
603-
604-
private String createOnChangeEndpointUrl() {
605-
return String.format(
606-
Locale.US,
607-
"http://%s/onchange",
608-
mSettings.getPackagerConnectionSettings().getDebugServerHost());
609-
}
610-
611515
private String createLaunchJSDevtoolsCommandUrl() {
612516
return String.format(
613517
Locale.US,

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

+1-31
Original file line numberDiff line numberDiff line change
@@ -517,9 +517,7 @@ public void onOptionSelected() {
517517
mReactInstanceManagerHelper.toggleElementInspector();
518518
}
519519
});
520-
// "Live reload" which refreshes on every edit was removed in favor of "Fast Refresh".
521-
// While native code for "Live reload" is still there, please don't add the option back.
522-
// See D15958697 for more context.
520+
523521
options.put(
524522
mDevSettings.isHotModuleReplacementEnabled()
525523
? mApplicationContext.getString(R.string.catalyst_hot_reloading_stop)
@@ -1132,22 +1130,6 @@ public void run() {
11321130
});
11331131
}
11341132

1135-
@Override
1136-
public void setReloadOnJSChangeEnabled(final boolean isReloadOnJSChangeEnabled) {
1137-
if (!mIsDevSupportEnabled) {
1138-
return;
1139-
}
1140-
1141-
UiThreadUtil.runOnUiThread(
1142-
new Runnable() {
1143-
@Override
1144-
public void run() {
1145-
mDevSettings.setReloadOnJSChangeEnabled(isReloadOnJSChangeEnabled);
1146-
handleReloadJS();
1147-
}
1148-
});
1149-
}
1150-
11511133
@Override
11521134
public void setFpsDebugEnabled(final boolean isFpsDebugEnabled) {
11531135
if (!mIsDevSupportEnabled) {
@@ -1210,17 +1192,6 @@ private void reload() {
12101192
}
12111193

12121194
mDevServerHelper.openPackagerConnection(this.getClass().getSimpleName(), this);
1213-
if (mDevSettings.isReloadOnJSChangeEnabled()) {
1214-
mDevServerHelper.startPollingOnChangeEndpoint(
1215-
new DevServerHelper.OnServerContentChangeListener() {
1216-
@Override
1217-
public void onServerContentChanged() {
1218-
handleReloadJS();
1219-
}
1220-
});
1221-
} else {
1222-
mDevServerHelper.stopPollingOnChangeEndpoint();
1223-
}
12241195
} else {
12251196
// hide FPS debug overlay
12261197
if (mDebugOverlayController != null) {
@@ -1248,7 +1219,6 @@ public void onServerContentChanged() {
12481219
// hide loading view
12491220
mDevLoadingViewController.hide();
12501221
mDevServerHelper.closePackagerConnection();
1251-
mDevServerHelper.stopPollingOnChangeEndpoint();
12521222
}
12531223
}
12541224

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

-3
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,6 @@ public void setHotModuleReplacementEnabled(boolean isHotModuleReplacementEnabled
6363
@Override
6464
public void setRemoteJSDebugEnabled(boolean isRemoteJSDebugEnabled) {}
6565

66-
@Override
67-
public void setReloadOnJSChangeEnabled(boolean isReloadOnJSChangeEnabled) {}
68-
6966
@Override
7067
public void setFpsDebugEnabled(boolean isFpsDebugEnabled) {}
7168

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

-2
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler {
6868

6969
void setRemoteJSDebugEnabled(final boolean isRemoteJSDebugEnabled);
7070

71-
void setReloadOnJSChangeEnabled(final boolean isReloadOnJSChangeEnabled);
72-
7371
void setFpsDebugEnabled(final boolean isFpsDebugEnabled);
7472

7573
void toggleElementInspector();

ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java

-5
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,6 @@ public void setIsDebuggingRemotely(boolean isDebugginRemotelyEnabled) {
5454
mDevSupportManager.setRemoteJSDebugEnabled(isDebugginRemotelyEnabled);
5555
}
5656

57-
@ReactMethod
58-
public void setLiveReloadEnabled(boolean isLiveReloadEnabled) {
59-
mDevSupportManager.setReloadOnJSChangeEnabled(isLiveReloadEnabled);
60-
}
61-
6257
@ReactMethod
6358
public void setProfilingEnabled(boolean isProfilingEnabled) {
6459
mDevSupportManager.setFpsDebugEnabled(isProfilingEnabled);

0 commit comments

Comments
 (0)