Skip to content

Commit 3714f36

Browse files
Mehdi Mulanifacebook-github-bot
Mehdi Mulani
authored andcommitted
Make package location customizable in dev mode
Summary: @public With this, you can determine the packager location at run time before we even try to load the bundle. Changelog: [Android] [Added] - Packager location can be determined at run time Reviewed By: makovkastar Differential Revision: D18940087 fbshipit-source-id: fac99f28e119a4e7a2961b5504cfe7d2d409e8f7
1 parent fa78a96 commit 3714f36

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

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

+19-2
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ private enum ErrorType {
140140
private @Nullable ErrorType mLastErrorType;
141141
private @Nullable DevBundleDownloadListener mBundleDownloadListener;
142142
private @Nullable List<ErrorCustomizer> mErrorCustomizers;
143+
private @Nullable PackagerLocationCustomizer mPackagerLocationCustomizer;
143144

144145
private InspectorPackagerConnection.BundleStatus mBundleStatus;
145146

@@ -877,8 +878,19 @@ public void handleReloadJS() {
877878
}
878879

879880
@Override
880-
public void isPackagerRunning(PackagerStatusCallback callback) {
881-
mDevServerHelper.isPackagerRunning(callback);
881+
public void isPackagerRunning(final PackagerStatusCallback callback) {
882+
Runnable checkPackagerRunning =
883+
new Runnable() {
884+
@Override
885+
public void run() {
886+
mDevServerHelper.isPackagerRunning(callback);
887+
}
888+
};
889+
if (mPackagerLocationCustomizer != null) {
890+
mPackagerLocationCustomizer.run(checkPackagerRunning);
891+
} else {
892+
checkPackagerRunning.run();
893+
}
882894
}
883895

884896
@Override
@@ -1240,4 +1252,9 @@ private void reload() {
12401252
private static String getReloadAppAction(Context context) {
12411253
return context.getPackageName() + RELOAD_APP_ACTION_SUFFIX;
12421254
}
1255+
1256+
@Override
1257+
public void setPackagerLocationCustomizer(PackagerLocationCustomizer packagerLocationCustomizer) {
1258+
mPackagerLocationCustomizer = packagerLocationCustomizer;
1259+
}
12431260
}

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public void handleReloadJS() {}
130130
public void reloadJSFromServer(String bundleURL) {}
131131

132132
@Override
133-
public void isPackagerRunning(PackagerStatusCallback callback) {}
133+
public void isPackagerRunning(final PackagerStatusCallback callback) {}
134134

135135
@Override
136136
public @Nullable File downloadBundleResourceFromUrlSync(
@@ -151,6 +151,10 @@ public void isPackagerRunning(PackagerStatusCallback callback) {}
151151
@Override
152152
public void registerErrorCustomizer(ErrorCustomizer errorCustomizer) {}
153153

154+
@Override
155+
public void setPackagerLocationCustomizer(
156+
PackagerLocationCustomizer packagerLocationCustomizer) {}
157+
154158
@Override
155159
public void handleException(Exception e) {
156160
mDefaultNativeModuleCallExceptionHandler.handleException(e);

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

+11
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,15 @@ public interface DevSupportManager extends NativeModuleCallExceptionHandler {
8989
StackFrame[] getLastErrorStack();
9090

9191
void registerErrorCustomizer(ErrorCustomizer errorCustomizer);
92+
93+
/**
94+
* The PackagerLocationCustomizer allows you to have a dynamic packager location that is
95+
* determined right before loading the packager. Your customizer must call |callback|, as loading
96+
* will be blocked waiting for it to resolve.
97+
*/
98+
public interface PackagerLocationCustomizer {
99+
void run(Runnable callback);
100+
}
101+
102+
void setPackagerLocationCustomizer(PackagerLocationCustomizer packagerLocationCustomizer);
92103
}

0 commit comments

Comments
 (0)