Make JavaScriptExecutor.Factory a configurable property of ReactInstanceManager

Reviewed By: mhorowitz

Differential Revision: D5662431

fbshipit-source-id: 17dca2744de645740cef252efbf83902acde5046
This commit is contained in:
Michał Gregorczyk
2017-08-21 13:32:46 -07:00
committed by Facebook Github Bot
parent 606a876df7
commit 73f17908e6
8 changed files with 64 additions and 32 deletions

View File

@@ -5,7 +5,9 @@ package com.facebook.react;
import android.app.Activity;
import android.app.Application;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.JavaScriptExecutorFactory;
import com.facebook.react.bridge.JSBundleLoader;
import com.facebook.react.bridge.JSCJavaScriptExecutorFactory;
import com.facebook.react.bridge.NativeModuleCallExceptionHandler;
import com.facebook.react.bridge.NotThreadSafeBridgeIdleDebugListener;
import com.facebook.react.common.LifecycleState;
@@ -40,6 +42,7 @@ public class ReactInstanceManagerBuilder {
private boolean mLazyNativeModulesEnabled;
private boolean mLazyViewManagersEnabled;
private @Nullable DevBundleDownloadListener mDevBundleDownloadListener;
private @Nullable JavaScriptExecutorFactory mJavaScriptExecutorFactory;
private boolean mUseSeparateUIBackgroundThread;
private int mMinNumShakes = 1;
private boolean mEnableSplitPackage;
@@ -59,6 +62,15 @@ public class ReactInstanceManagerBuilder {
return this;
}
/**
* Factory for desired implementation of JavaScriptExecutor.
*/
public ReactInstanceManagerBuilder setJavaScriptExecutorFactory(
@Nullable JavaScriptExecutorFactory javaScriptExecutorFactory) {
mJavaScriptExecutorFactory = javaScriptExecutorFactory;
return this;
}
/**
* Name of the JS bundle file to be loaded from application's raw assets.
* Example: {@code "index.android.js"}
@@ -249,6 +261,9 @@ public class ReactInstanceManagerBuilder {
mApplication,
mCurrentActivity,
mDefaultHardwareBackBtnHandler,
mJavaScriptExecutorFactory == null
? new JSCJavaScriptExecutorFactory()
: mJavaScriptExecutorFactory,
(mJSBundleLoader == null && mJSBundleAssetUrl != null)
? JSBundleLoader.createAssetLoader(
mApplication, mJSBundleAssetUrl, false /*Asynchronous*/)