Skip to content

Commit

Permalink
Move VisibilityBoundsTransform to ComponentsConfiguration
Browse files Browse the repository at this point in the history
Summary: This is a part of the BE initiative to move things into `ComponentsConfiguration`. In this diff I'm moving the `VisibilityBoundsTransformer` into it.

Reviewed By: jettbow

Differential Revision: D58193377

fbshipit-source-id: 783fe8b4cbdf44d52440c000387c046caee7f58d
  • Loading branch information
Fabio Carballo authored and facebook-github-bot committed Jun 8, 2024
1 parent 598fb4e commit 50d0272
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import com.facebook.rendercore.LayoutCache;
import com.facebook.rendercore.ResourceCache;
import com.facebook.rendercore.ResourceResolver;
import com.facebook.rendercore.visibility.VisibilityBoundsTransformer;

/**
* A Context subclass for use within the Components framework. Contains extra bookkeeping
Expand Down Expand Up @@ -132,7 +131,7 @@ public ComponentContext(
lithoConfiguration != null
? lithoConfiguration
: buildDefaultLithoConfiguration(
mContext, ComponentsConfiguration.defaultInstance, null, null);
mContext, ComponentsConfiguration.defaultInstance, null);

if (mLithoConfiguration.componentsConfig.componentsLogger != null
&& mLithoConfiguration.componentsConfig.logTag == null) {
Expand Down Expand Up @@ -830,11 +829,6 @@ void removePendingStateUpdate(String key, boolean nestedTreeContext) {
}
}

@Nullable
public VisibilityBoundsTransformer getVisibilityBoundsTransformer() {
return mLithoConfiguration.visibilityBoundsTransformer;
}

static ComponentsConfiguration getComponentsConfig(ComponentContext c) {
return c.mLithoConfiguration.componentsConfig;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,17 @@ package com.facebook.litho

import android.content.Context
import com.facebook.litho.config.ComponentsConfiguration
import com.facebook.rendercore.visibility.VisibilityBoundsTransformer

object ComponentContextUtils {
@JvmStatic
fun buildDefaultLithoConfiguration(
context: Context,
componentsConfig: ComponentsConfiguration = ComponentsConfiguration.defaultInstance,
renderUnitIdGenerator: RenderUnitIdGenerator? = null,
transformer: VisibilityBoundsTransformer? = null,
): LithoConfiguration {
return LithoConfiguration(
componentsConfig = componentsConfig,
areTransitionsEnabled = AnimationsDebug.areTransitionsEnabled(context),
renderUnitIdGenerator = renderUnitIdGenerator,
visibilityBoundsTransformer = transformer)
renderUnitIdGenerator = renderUnitIdGenerator)
}
}
11 changes: 1 addition & 10 deletions litho-core/src/main/java/com/facebook/litho/ComponentTree.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@
import com.facebook.rendercore.debug.DebugEventAttribute;
import com.facebook.rendercore.debug.DebugEventBus;
import com.facebook.rendercore.debug.DebugEventDispatcher;
import com.facebook.rendercore.visibility.VisibilityBoundsTransformer;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collections;
Expand Down Expand Up @@ -362,8 +361,7 @@ protected ComponentTree(Builder builder) {
new LithoConfiguration(
builder.config,
AnimationsDebug.areTransitionsEnabled(androidContext),
renderUnitIdGenerator,
builder.visibilityBoundsTransformer);
renderUnitIdGenerator);

final StateUpdater stateUpdater =
(builder.mStateUpdater != null) ? builder.mStateUpdater : this;
Expand Down Expand Up @@ -3000,7 +2998,6 @@ public static class Builder {
private @Nullable MeasureListener mMeasureListener;
private @Nullable LithoVisibilityEventsController lithoVisibilityEventsController;
private @Nullable RenderUnitIdGenerator mRenderUnitIdGenerator;
private @Nullable VisibilityBoundsTransformer visibilityBoundsTransformer;

private @Nullable final TreePropContainer treePropContainer;
private @Nullable final TreePropContainer parentTreePropContainer;
Expand All @@ -3009,7 +3006,6 @@ public static class Builder {

protected Builder(ComponentContext context) {
config = context.mLithoConfiguration.componentsConfig;
visibilityBoundsTransformer = context.mLithoConfiguration.visibilityBoundsTransformer;
treePropContainer = context.getTreePropContainer();
parentTreePropContainer = context.getParentTreePropContainer();
mAndroidContext = context.getAndroidContext();
Expand Down Expand Up @@ -3122,11 +3118,6 @@ public Builder measureListener(@Nullable MeasureListener measureListener) {
return this;
}

public Builder visibilityBoundsTransformer(@Nullable VisibilityBoundsTransformer transformer) {
visibilityBoundsTransformer = transformer;
return this;
}

public Builder stateUpdater(@Nullable StateUpdater stateUpdater) {
mStateUpdater = stateUpdater;
return this;
Expand Down
2 changes: 1 addition & 1 deletion litho-core/src/main/java/com/facebook/litho/LayoutState.kt
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ internal constructor(
getMountableOutputAt(output.index)

override fun getVisibilityBoundsTransformer(): VisibilityBoundsTransformer? =
componentContext.visibilityBoundsTransformer
componentContext.lithoConfiguration.componentsConfig.visibilityBoundsTransformer

companion object {
@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,12 @@ package com.facebook.litho
import com.facebook.kotlin.compilerplugins.dataclassgenerate.annotation.DataClassGenerate
import com.facebook.kotlin.compilerplugins.dataclassgenerate.annotation.Mode
import com.facebook.litho.config.ComponentsConfiguration
import com.facebook.rendercore.visibility.VisibilityBoundsTransformer

@DataClassGenerate(toString = Mode.OMIT, equalsHashCode = Mode.OMIT)
data class LithoConfiguration(
@JvmField val componentsConfig: ComponentsConfiguration,
@JvmField val areTransitionsEnabled: Boolean,
@JvmField val renderUnitIdGenerator: RenderUnitIdGenerator?,
@JvmField val visibilityBoundsTransformer: VisibilityBoundsTransformer?,
) {

val isSpecsDuplicateStateUpdateDetectionEnabled: Boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.facebook.litho.ErrorEventHandler
import com.facebook.litho.config.ComponentsConfiguration.Builder
import com.facebook.litho.perfboost.LithoPerfBoosterFactory
import com.facebook.rendercore.incrementalmount.IncrementalMountExtensionConfigs
import com.facebook.rendercore.visibility.VisibilityBoundsTransformer

/**
* These values are safe defaults and should not require manual changes.
Expand Down Expand Up @@ -166,7 +167,8 @@ internal constructor(
* @see [com.facebok.litho.widget.RecyclerSpec]
* @see [com.facebook.litho.widget.RecyclerLayoutBehavior]
*/
@JvmField val measureRecyclerWithPadding: Boolean = false
@JvmField val measureRecyclerWithPadding: Boolean = false,
@JvmField val visibilityBoundsTransformer: VisibilityBoundsTransformer? = null
) {

val shouldAddRootHostViewOrDisableBgFgOutputs: Boolean =
Expand Down Expand Up @@ -350,6 +352,7 @@ internal constructor(
private var enableFixForIM = baseConfig.enableFixForIM
private var enableLifecycleOwnerWrapper = baseConfig.enableLifecycleOwnerWrapper
private var measureRecyclerWithPadding = baseConfig.measureRecyclerWithPadding
private var visibilityBoundsTransformer = baseConfig.visibilityBoundsTransformer

fun shouldNotifyVisibleBoundsChangeWhenNestedLithoViewBecomesInvisible(
enabled: Boolean
Expand Down Expand Up @@ -462,6 +465,10 @@ internal constructor(
measureRecyclerWithPadding = enabled
}

fun visibilityBoundsTransformer(transformer: VisibilityBoundsTransformer?): Builder = also {
visibilityBoundsTransformer = transformer
}

fun build(): ComponentsConfiguration {
return baseConfig.copy(
specsApiStateUpdateDuplicateDetectionEnabled =
Expand Down Expand Up @@ -499,7 +506,8 @@ internal constructor(
useDefaultItemAnimatorInLazyCollections = useDefaultItemAnimatorInLazyCollections,
enableFixForIM = enableFixForIM,
enableLifecycleOwnerWrapper = enableLifecycleOwnerWrapper,
measureRecyclerWithPadding = measureRecyclerWithPadding)
measureRecyclerWithPadding = measureRecyclerWithPadding,
visibilityBoundsTransformer = visibilityBoundsTransformer)
}
}
}

0 comments on commit 50d0272

Please sign in to comment.