Setup TurboModuleManager inside Fb4a

Summary: This diff introduces `TurboModuleManagerDelegate` in Fb4a and Workplace. `Fb4aTurboModuleManagerDelegate` is responsible for creating TurboModules for Fb4a. `WorkTurboModuleManagerDelegate` is responsible for creating TurboModules for Workplace.

Reviewed By: mdvacca

Differential Revision: D15268563

fbshipit-source-id: c254c31856c59b3551bfe54b25c715c848646c5a
This commit is contained in:
Ramanpreet Nara
2019-06-05 19:05:41 -07:00
committed by Facebook Github Bot
parent 664646055a
commit 764fd955db
@@ -2,6 +2,7 @@
package com.facebook.react.turbomodule.core;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.ReactPackage;
import com.facebook.react.TurboReactPackage;
import com.facebook.react.bridge.CxxModuleWrapper;
@@ -19,7 +20,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule
private final Map<String, TurboModule> mModules = new HashMap<>();
private final ReactApplicationContext mReactApplicationContext;
public ReactPackageTurboModuleManagerDelegate(ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
protected ReactPackageTurboModuleManagerDelegate(ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
super();
mReactApplicationContext = reactApplicationContext;
for (ReactPackage reactPackage : packages) {
@@ -101,4 +102,27 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule
return mModules.get(moduleName);
}
public static abstract class Builder {
private @Nullable List<ReactPackage> mPackages;
private @Nullable ReactApplicationContext mContext;
public Builder setPackages(List<ReactPackage> packages) {
mPackages = new ArrayList<>(packages);
return this;
}
public Builder setReactApplicationContext(ReactApplicationContext context) {
mContext = context;
return this;
}
protected abstract ReactPackageTurboModuleManagerDelegate build(ReactApplicationContext context, List<ReactPackage> packages);
public ReactPackageTurboModuleManagerDelegate build() {
Assertions.assertNotNull(mContext, "The ReactApplicationContext must be provided to create ReactPackageTurboModuleManagerDelegate");
Assertions.assertNotNull(mPackages, "A set of ReactPackages must be provided to create ReactPackageTurboModuleManagerDelegate");
return build(mContext, mPackages);
}
}
}