Clean up Fabric startSurface API used in Venice

Summary:
Update FabricUIManager methods for `SurfaceHandler` to start usual rendering or prerendering based on presence of the view instead of using two methods with same logic.

Changelog: [Internal]

Reviewed By: sshic

Differential Revision: D30346502

fbshipit-source-id: 297f2b4a16dc7af7c36379252bd73e6dc953ff59
This commit is contained in:
Andrei Shikov 2021-08-18 12:43:18 -07:00 коммит произвёл Facebook GitHub Bot
Родитель 06e31c748f
Коммит 22f81b203f
1 изменённых файлов: 19 добавлений и 26 удалений

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

@ -294,14 +294,28 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
return rootTag; return rootTag;
} }
public void startSurface(final SurfaceHandler surfaceHandler) { public void startSurface(final SurfaceHandler surfaceHandler, final @Nullable View rootView) {
int rootTag = ReactRootViewTagGenerator.getNextRootViewTag(); final int rootTag = ReactRootViewTagGenerator.getNextRootViewTag();
mMountingManager.startSurface(rootTag);
startSurfaceWithId(surfaceHandler, rootTag, false); if (rootView == null) {
mMountingManager.startSurface(rootTag);
} else {
Context context = rootView.getContext();
ThemedReactContext reactContext =
new ThemedReactContext(
mReactApplicationContext, context, surfaceHandler.getModuleName(), rootTag);
mMountingManager.startSurface(rootTag, rootView, reactContext);
} }
public void attachRootView(final View rootView, final SurfaceHandler surfaceHandler) { surfaceHandler.setSurfaceId(rootTag);
if (surfaceHandler instanceof SurfaceHandlerBinding) {
mBinding.registerSurface((SurfaceHandlerBinding) surfaceHandler);
}
surfaceHandler.setMountable(rootView != null);
surfaceHandler.start();
}
public void attachRootView(final SurfaceHandler surfaceHandler, final View rootView) {
ThemedReactContext reactContext = ThemedReactContext reactContext =
new ThemedReactContext( new ThemedReactContext(
mReactApplicationContext, mReactApplicationContext,
@ -313,27 +327,6 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
surfaceHandler.setMountable(true); surfaceHandler.setMountable(true);
} }
public void startSurfaceWithView(final View rootView, final SurfaceHandler surfaceHandler) {
final int rootTag = ReactRootViewTagGenerator.getNextRootViewTag();
Context context = rootView.getContext();
ThemedReactContext reactContext =
new ThemedReactContext(
mReactApplicationContext, context, surfaceHandler.getModuleName(), rootTag);
mMountingManager.startSurface(rootTag, rootView, reactContext);
startSurfaceWithId(surfaceHandler, rootTag, true);
}
private void startSurfaceWithId(SurfaceHandler surfaceHandler, int rootTag, boolean isMountable) {
surfaceHandler.setSurfaceId(rootTag);
if (surfaceHandler instanceof SurfaceHandlerBinding) {
mBinding.registerSurface((SurfaceHandlerBinding) surfaceHandler);
}
surfaceHandler.setMountable(isMountable);
surfaceHandler.start();
}
public void stopSurface(final SurfaceHandler surfaceHandler) { public void stopSurface(final SurfaceHandler surfaceHandler) {
if (!surfaceHandler.isRunning()) { if (!surfaceHandler.isRunning()) {
ReactSoftExceptionLogger.logSoftException( ReactSoftExceptionLogger.logSoftException(