Integrate Fabric into RN tester

Summary:
This diff integrates Fabric into RN Tester

changelog: [internal] internal

Reviewed By: JoshuaGross

Differential Revision: D23012446

fbshipit-source-id: 7a8410b0d73c26c347db17f6ec43663bb22524e3
This commit is contained in:
David Vacca 2020-08-10 15:06:01 -07:00 коммит произвёл Facebook GitHub Bot
Родитель 5115ac0bef
Коммит 8724a24bf5
2 изменённых файлов: 85 добавлений и 0 удалений

Просмотреть файл

@ -7,12 +7,15 @@
package com.facebook.react.uiapp;
import static com.facebook.react.uiapp.RNTesterApplication.IS_FABRIC_ENABLED;
import android.content.res.Configuration;
import android.os.Bundle;
import androidx.annotation.Nullable;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactRootView;
public class RNTesterActivity extends ReactActivity {
public static class RNTesterActivityDelegate extends ReactActivityDelegate {
@ -25,6 +28,13 @@ public class RNTesterActivity extends ReactActivity {
this.mActivity = activity;
}
@Override
protected ReactRootView createRootView() {
ReactRootView reactRootView = new ReactRootView(getContext());
reactRootView.setIsFabric(IS_FABRIC_ENABLED);
return reactRootView;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// Get remote param before calling super which uses it

Просмотреть файл

@ -7,21 +7,39 @@
package com.facebook.react.uiapp;
import static com.facebook.react.uiapp.BuildConfig.FLAVOR;
import android.app.Application;
import android.content.Context;
import androidx.annotation.Nullable;
import com.facebook.react.BuildConfig;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JSIModulePackage;
import com.facebook.react.bridge.JSIModuleProvider;
import com.facebook.react.bridge.JSIModuleSpec;
import com.facebook.react.bridge.JSIModuleType;
import com.facebook.react.bridge.JavaScriptContextHolder;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.UIManager;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.react.fabric.CoreComponentsRegistry;
import com.facebook.react.fabric.FabricJSIModuleProvider;
import com.facebook.react.fabric.ReactNativeConfig;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.react.views.text.ReactFontManager;
import com.facebook.soloader.SoLoader;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class RNTesterApplication extends Application implements ReactApplication {
static final boolean IS_FABRIC_ENABLED = FLAVOR.contains("fabric");
private final ReactNativeHost mReactNativeHost =
new ReactNativeHost(this) {
@Override
@ -43,6 +61,63 @@ public class RNTesterApplication extends Application implements ReactApplication
public List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(new MainReactPackage());
}
@Nullable
@Override
protected JSIModulePackage getJSIModulePackage() {
if (!IS_FABRIC_ENABLED) {
return null;
}
return new JSIModulePackage() {
@Override
public List<JSIModuleSpec> getJSIModules(
final ReactApplicationContext reactApplicationContext,
final JavaScriptContextHolder jsContext) {
List<JSIModuleSpec> specs = new ArrayList<>();
specs.add(
new JSIModuleSpec() {
@Override
public JSIModuleType getJSIModuleType() {
return JSIModuleType.UIManager;
}
@Override
public JSIModuleProvider<UIManager> getJSIModuleProvider() {
ComponentFactory ComponentFactory = new ComponentFactory();
CoreComponentsRegistry.register(ComponentFactory);
return new FabricJSIModuleProvider(
reactApplicationContext,
ComponentFactory,
// TODO: T71362667 add ReactNativeConfig's support in RNTester
new ReactNativeConfig() {
@Override
public boolean getBool(String s) {
return true;
}
@Override
public int getInt64(String s) {
return 0;
}
@Override
public String getString(String s) {
return "";
}
@Override
public double getDouble(String s) {
return 0;
}
});
}
});
return specs;
}
};
}
};
@Override