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:
Родитель
5115ac0bef
Коммит
8724a24bf5
|
@ -7,12 +7,15 @@
|
||||||
|
|
||||||
package com.facebook.react.uiapp;
|
package com.facebook.react.uiapp;
|
||||||
|
|
||||||
|
import static com.facebook.react.uiapp.RNTesterApplication.IS_FABRIC_ENABLED;
|
||||||
|
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import com.facebook.react.ReactActivity;
|
import com.facebook.react.ReactActivity;
|
||||||
import com.facebook.react.ReactActivityDelegate;
|
import com.facebook.react.ReactActivityDelegate;
|
||||||
import com.facebook.react.ReactInstanceManager;
|
import com.facebook.react.ReactInstanceManager;
|
||||||
|
import com.facebook.react.ReactRootView;
|
||||||
|
|
||||||
public class RNTesterActivity extends ReactActivity {
|
public class RNTesterActivity extends ReactActivity {
|
||||||
public static class RNTesterActivityDelegate extends ReactActivityDelegate {
|
public static class RNTesterActivityDelegate extends ReactActivityDelegate {
|
||||||
|
@ -25,6 +28,13 @@ public class RNTesterActivity extends ReactActivity {
|
||||||
this.mActivity = activity;
|
this.mActivity = activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ReactRootView createRootView() {
|
||||||
|
ReactRootView reactRootView = new ReactRootView(getContext());
|
||||||
|
reactRootView.setIsFabric(IS_FABRIC_ENABLED);
|
||||||
|
return reactRootView;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
// Get remote param before calling super which uses it
|
// Get remote param before calling super which uses it
|
||||||
|
|
|
@ -7,21 +7,39 @@
|
||||||
|
|
||||||
package com.facebook.react.uiapp;
|
package com.facebook.react.uiapp;
|
||||||
|
|
||||||
|
import static com.facebook.react.uiapp.BuildConfig.FLAVOR;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import com.facebook.react.BuildConfig;
|
import com.facebook.react.BuildConfig;
|
||||||
import com.facebook.react.ReactApplication;
|
import com.facebook.react.ReactApplication;
|
||||||
import com.facebook.react.ReactInstanceManager;
|
import com.facebook.react.ReactInstanceManager;
|
||||||
import com.facebook.react.ReactNativeHost;
|
import com.facebook.react.ReactNativeHost;
|
||||||
import com.facebook.react.ReactPackage;
|
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.shell.MainReactPackage;
|
||||||
import com.facebook.react.views.text.ReactFontManager;
|
import com.facebook.react.views.text.ReactFontManager;
|
||||||
import com.facebook.soloader.SoLoader;
|
import com.facebook.soloader.SoLoader;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class RNTesterApplication extends Application implements ReactApplication {
|
public class RNTesterApplication extends Application implements ReactApplication {
|
||||||
|
|
||||||
|
static final boolean IS_FABRIC_ENABLED = FLAVOR.contains("fabric");
|
||||||
|
|
||||||
private final ReactNativeHost mReactNativeHost =
|
private final ReactNativeHost mReactNativeHost =
|
||||||
new ReactNativeHost(this) {
|
new ReactNativeHost(this) {
|
||||||
@Override
|
@Override
|
||||||
|
@ -43,6 +61,63 @@ public class RNTesterApplication extends Application implements ReactApplication
|
||||||
public List<ReactPackage> getPackages() {
|
public List<ReactPackage> getPackages() {
|
||||||
return Arrays.<ReactPackage>asList(new MainReactPackage());
|
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
|
@Override
|
||||||
|
|
Загрузка…
Ссылка в новой задаче