mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Migrate PreAllocateViewMountItem to Kotlin (#47258)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/47258 Migrate PreAllocateViewMountItem to Kotlin changeLog: [internal] internal Reviewed By: shwanton Differential Revision: D65070220 fbshipit-source-id: 3785f36747ea54304e45234daf377d20381f3c6c
This commit is contained in:
committed by
Facebook GitHub Bot
parent
0705eb8b91
commit
b5696e6172
-90
@@ -1,90 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.fabric.mounting.mountitems;
|
||||
|
||||
import static com.facebook.react.fabric.FabricUIManager.IS_DEVELOPMENT_ENVIRONMENT;
|
||||
import static com.facebook.react.fabric.FabricUIManager.TAG;
|
||||
import static com.facebook.react.fabric.mounting.mountitems.FabricNameComponentMapping.getFabricComponentName;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.common.logging.FLog;
|
||||
import com.facebook.infer.annotation.Nullsafe;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
import com.facebook.react.fabric.mounting.MountingManager;
|
||||
import com.facebook.react.fabric.mounting.SurfaceMountingManager;
|
||||
import com.facebook.react.uimanager.StateWrapper;
|
||||
|
||||
/** {@link MountItem} that is used to pre-allocate views for JS components. */
|
||||
@Nullsafe(Nullsafe.Mode.LOCAL)
|
||||
final class PreAllocateViewMountItem implements MountItem {
|
||||
|
||||
private final @NonNull String mComponent;
|
||||
private final int mSurfaceId;
|
||||
private final int mReactTag;
|
||||
private final @Nullable ReadableMap mProps;
|
||||
private final @Nullable StateWrapper mStateWrapper;
|
||||
private final boolean mIsLayoutable;
|
||||
|
||||
PreAllocateViewMountItem(
|
||||
int surfaceId,
|
||||
int reactTag,
|
||||
@NonNull String component,
|
||||
@Nullable ReadableMap props,
|
||||
@Nullable StateWrapper stateWrapper,
|
||||
boolean isLayoutable) {
|
||||
mComponent = getFabricComponentName(component);
|
||||
mSurfaceId = surfaceId;
|
||||
mProps = props;
|
||||
mStateWrapper = stateWrapper;
|
||||
mReactTag = reactTag;
|
||||
mIsLayoutable = isLayoutable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSurfaceId() {
|
||||
return mSurfaceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(@NonNull MountingManager mountingManager) {
|
||||
SurfaceMountingManager surfaceMountingManager = mountingManager.getSurfaceManager(mSurfaceId);
|
||||
if (surfaceMountingManager == null) {
|
||||
FLog.e(
|
||||
TAG,
|
||||
"Skipping View PreAllocation; no SurfaceMountingManager found for [" + mSurfaceId + "]");
|
||||
return;
|
||||
}
|
||||
surfaceMountingManager.preallocateView(
|
||||
mComponent, mReactTag, mProps, mStateWrapper, mIsLayoutable);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public String toString() {
|
||||
StringBuilder result =
|
||||
new StringBuilder("PreAllocateViewMountItem [")
|
||||
.append(mReactTag)
|
||||
.append("] - component: ")
|
||||
.append(mComponent)
|
||||
.append(" surfaceId: ")
|
||||
.append(mSurfaceId)
|
||||
.append(" isLayoutable: ")
|
||||
.append(mIsLayoutable);
|
||||
|
||||
if (IS_DEVELOPMENT_ENVIRONMENT) {
|
||||
result
|
||||
.append(" props: ")
|
||||
.append(mProps != null ? mProps.toString() : "<null>")
|
||||
.append(" state: ")
|
||||
.append(mStateWrapper != null ? mStateWrapper.toString() : "<null>");
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.fabric.mounting.mountitems
|
||||
|
||||
import com.facebook.common.logging.FLog
|
||||
import com.facebook.react.bridge.ReadableMap
|
||||
import com.facebook.react.fabric.FabricUIManager
|
||||
import com.facebook.react.fabric.mounting.MountingManager
|
||||
import com.facebook.react.fabric.mounting.mountitems.FabricNameComponentMapping.getFabricComponentName
|
||||
import com.facebook.react.uimanager.StateWrapper
|
||||
|
||||
/** [MountItem] that is used to pre-allocate views for JS components. */
|
||||
internal class PreAllocateViewMountItem(
|
||||
private val surfaceId: Int,
|
||||
private val reactTag: Int,
|
||||
component: String,
|
||||
private val props: ReadableMap?,
|
||||
private val stateWrapper: StateWrapper?,
|
||||
private val isLayoutable: Boolean
|
||||
) : MountItem {
|
||||
private val fabricComponentName = getFabricComponentName(component)
|
||||
|
||||
override fun getSurfaceId(): Int = surfaceId
|
||||
|
||||
override fun execute(mountingManager: MountingManager) {
|
||||
val surfaceMountingManager = mountingManager.getSurfaceManager(surfaceId)
|
||||
if (surfaceMountingManager == null) {
|
||||
FLog.e(
|
||||
FabricUIManager.TAG,
|
||||
"Skipping View PreAllocation; no SurfaceMountingManager found for [$surfaceId]")
|
||||
return
|
||||
}
|
||||
surfaceMountingManager.preallocateView(
|
||||
fabricComponentName, reactTag, props, stateWrapper, isLayoutable)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
val result =
|
||||
StringBuilder("PreAllocateViewMountItem [")
|
||||
.append(reactTag)
|
||||
.append("] - component: ")
|
||||
.append(fabricComponentName)
|
||||
.append(" surfaceId: ")
|
||||
.append(surfaceId)
|
||||
.append(" isLayoutable: ")
|
||||
.append(isLayoutable)
|
||||
|
||||
if (FabricUIManager.IS_DEVELOPMENT_ENVIRONMENT) {
|
||||
result
|
||||
.append(" props: ")
|
||||
.append(props?.toString() ?: "<null>")
|
||||
.append(" state: ")
|
||||
.append(stateWrapper?.toString() ?: "<null>")
|
||||
}
|
||||
|
||||
return result.toString()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user