Moved view utils from div-core to div

commit_hash:00440035bc08e5112ff805cb5772454a36e67537
This commit is contained in:
pkurchatov
2026-03-11 16:23:11 +03:00
parent 043e927d82
commit 056e1a8104
14 changed files with 34 additions and 55 deletions
+3 -3
View File
@@ -638,9 +638,6 @@
"client/android/div-core/src/main/java/com/yandex/div/core/images/DivImagePriority.kt":"divkit/public/client/android/div-core/src/main/java/com/yandex/div/core/images/DivImagePriority.kt",
"client/android/div-core/src/main/java/com/yandex/div/core/images/LoadReference.java":"divkit/public/client/android/div-core/src/main/java/com/yandex/div/core/images/LoadReference.java",
"client/android/div-core/src/main/java/com/yandex/div/core/uri/UriHandler.java":"divkit/public/client/android/div-core/src/main/java/com/yandex/div/core/uri/UriHandler.java",
"client/android/div-core/src/main/java/com/yandex/div/core/view/DrawingPassOverrideStrategy.kt":"divkit/public/client/android/div-core/src/main/java/com/yandex/div/core/view/DrawingPassOverrideStrategy.kt",
"client/android/div-core/src/main/java/com/yandex/div/core/view/OnPreDrawListeners.kt":"divkit/public/client/android/div-core/src/main/java/com/yandex/div/core/view/OnPreDrawListeners.kt",
"client/android/div-core/src/main/java/com/yandex/div/core/view/SafeDrawingPassOverrideStrategy.kt":"divkit/public/client/android/div-core/src/main/java/com/yandex/div/core/view/SafeDrawingPassOverrideStrategy.kt",
"client/android/div-data/build.gradle":"divkit/public/client/android/div-data/build.gradle",
"client/android/div-data/div2-generator-config.json":"divkit/public/client/android/div-data/div2-generator-config.json",
"client/android/div-data/div2-shared-data-generator-config.json":"divkit/public/client/android/div-data/div2-shared-data-generator-config.json",
@@ -1479,6 +1476,9 @@
"client/android/div/src/main/java/com/yandex/div/internal/util/Utils.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/util/Utils.kt",
"client/android/div/src/main/java/com/yandex/div/internal/util/ViewGroups.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/util/ViewGroups.kt",
"client/android/div/src/main/java/com/yandex/div/internal/util/Views.java":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/util/Views.java",
"client/android/div/src/main/java/com/yandex/div/internal/view/DrawingPassOverrideStrategy.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/view/DrawingPassOverrideStrategy.kt",
"client/android/div/src/main/java/com/yandex/div/internal/view/OnPreDrawListeners.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/view/OnPreDrawListeners.kt",
"client/android/div/src/main/java/com/yandex/div/internal/view/SafeDrawingPassOverrideStrategy.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/view/SafeDrawingPassOverrideStrategy.kt",
"client/android/div/src/main/java/com/yandex/div/internal/viewpool/AdvanceViewPool.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/viewpool/AdvanceViewPool.kt",
"client/android/div/src/main/java/com/yandex/div/internal/viewpool/BatchBlockingQueue.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/viewpool/BatchBlockingQueue.kt",
"client/android/div/src/main/java/com/yandex/div/internal/viewpool/ProfilingSession.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/internal/viewpool/ProfilingSession.kt",
@@ -1,18 +0,0 @@
package com.yandex.div.core.view
import android.view.ViewTreeObserver.OnPreDrawListener
import com.yandex.div.core.annotations.InternalApi
@InternalApi
public fun interface DrawingPassOverrideStrategy {
public fun overrideDrawingPass(listener: OnPreDrawListener, proceed: Boolean): Boolean
@InternalApi
public object NoOp : DrawingPassOverrideStrategy {
override fun overrideDrawingPass(listener: OnPreDrawListener, proceed: Boolean): Boolean = proceed
}
@InternalApi
public object Safe : SafeDrawingPassOverrideStrategy()
}
@@ -3,9 +3,9 @@ package com.yandex.div.sizeprovider
import android.util.DisplayMetrics
import android.view.View
import com.yandex.div.core.extension.DivExtensionHandler
import com.yandex.div.core.view.onPreDrawListener
import com.yandex.div.core.view2.Div2View
import com.yandex.div.core.view2.divs.pxToDp
import com.yandex.div.internal.view.onPreDrawListener
import com.yandex.div.json.expressions.ExpressionResolver
import com.yandex.div2.DivBase
import com.yandex.div2.DivData
@@ -4,7 +4,6 @@ import com.yandex.div.core.expression.local.DivRuntimeVisitor
import com.yandex.div.core.tooltip.DivTooltipController
import com.yandex.div.core.util.binding.BindingCriticalSection
import com.yandex.div.core.util.binding.BindingDispatcher
import com.yandex.div.core.view.DrawingPassOverrideStrategy
import com.yandex.div.core.view2.Div2View
import com.yandex.div.core.view2.DivTransitionBuilder
import com.yandex.div.core.view2.DivViewIdProvider
@@ -19,6 +18,7 @@ import com.yandex.div.core.view2.errors.ErrorVisualMonitor
import com.yandex.div.core.view2.reuse.InputFocusTracker
import com.yandex.div.core.view2.state.DivStateSwitcher
import com.yandex.div.core.view2.state.DivStateTransitionHolder
import com.yandex.div.internal.view.DrawingPassOverrideStrategy
import com.yandex.yatagan.BindsInstance
import com.yandex.yatagan.Component
@@ -2,10 +2,10 @@ package com.yandex.div.core.dagger
import com.yandex.div.core.experiments.Experiment.MULTIPLE_STATE_CHANGE_ENABLED
import com.yandex.div.core.util.ReportingSafeDrawingPassOverrideStrategy
import com.yandex.div.core.view.DrawingPassOverrideStrategy
import com.yandex.div.core.view2.state.DivJoinedStateSwitcher
import com.yandex.div.core.view2.state.DivMultipleStateSwitcher
import com.yandex.div.core.view2.state.DivStateSwitcher
import com.yandex.div.internal.view.DrawingPassOverrideStrategy
import com.yandex.yatagan.Binds
import com.yandex.yatagan.Module
import com.yandex.yatagan.Provides
@@ -3,8 +3,8 @@ package com.yandex.div.core.util
import android.view.ViewTreeObserver.OnPreDrawListener
import com.yandex.div.core.Div2Logger
import com.yandex.div.core.dagger.DivViewScope
import com.yandex.div.core.view.SafeDrawingPassOverrideStrategy
import com.yandex.div.core.view2.Div2View
import com.yandex.div.internal.view.SafeDrawingPassOverrideStrategy
import javax.inject.Inject
@DivViewScope
@@ -5,11 +5,11 @@ import android.view.View
import android.view.ViewTreeObserver
import com.yandex.div.R
import com.yandex.div.core.dagger.DivViewScope
import com.yandex.div.core.view.onPreDrawListener
import com.yandex.div.core.view2.Div2View
import com.yandex.div.core.view2.errors.ErrorCollector
import com.yandex.div.core.view2.errors.ErrorCollectors
import com.yandex.div.internal.core.VariableMutationHandler
import com.yandex.div.internal.view.onPreDrawListener
import com.yandex.div.json.expressions.ExpressionResolver
import com.yandex.div2.DivData
import com.yandex.div2.DivLayoutProvider
@@ -5,9 +5,8 @@ import android.view.View
import android.view.ViewTreeObserver
import android.widget.TextView
import androidx.core.view.ViewCompat
import com.yandex.div.core.view.DrawingPassOverrideStrategy
import com.yandex.div.core.view.onPreDrawListener
import com.yandex.div.core.widget.AdaptiveMaxLines.Params
import com.yandex.div.internal.view.DrawingPassOverrideStrategy
import com.yandex.div.internal.view.onPreDrawListener
/**
* Adjust [TextView] max lines based on [Params].
@@ -0,0 +1,14 @@
package com.yandex.div.internal.view
import android.view.ViewTreeObserver.OnPreDrawListener
fun interface DrawingPassOverrideStrategy {
fun overrideDrawingPass(listener: OnPreDrawListener, proceed: Boolean): Boolean
object NoOp : DrawingPassOverrideStrategy {
override fun overrideDrawingPass(listener: OnPreDrawListener, proceed: Boolean): Boolean = proceed
}
object Safe : SafeDrawingPassOverrideStrategy()
}
@@ -1,13 +1,11 @@
@file:JvmName("OnPreDrawListeners")
package com.yandex.div.core.view
package com.yandex.div.internal.view
import android.annotation.SuppressLint
import android.view.ViewTreeObserver
import com.yandex.div.core.annotations.InternalApi
@InternalApi
public fun onPreDrawListener(
fun onPreDrawListener(
overrideStrategy: DrawingPassOverrideStrategy = DrawingPassOverrideStrategy.Safe,
action: () -> Boolean
): ViewTreeObserver.OnPreDrawListener {
@@ -17,20 +15,8 @@ public fun onPreDrawListener(
)
}
@InternalApi
public fun onPreDrawListener(
overrideStrategy: DrawingPassOverrideStrategy = DrawingPassOverrideStrategy.Safe,
delegate: ViewTreeObserver.OnPreDrawListener
): ViewTreeObserver.OnPreDrawListener {
return OverridableOnPreDrawListener(
delegate = delegate,
overrideStrategy
)
}
@InternalApi
@SuppressLint("OnPreDrawListenerIssue")
public class OverridableOnPreDrawListener @JvmOverloads constructor(
internal class OverridableOnPreDrawListener @JvmOverloads constructor(
private val delegate: ViewTreeObserver.OnPreDrawListener,
private val overrideStrategy: DrawingPassOverrideStrategy = DrawingPassOverrideStrategy.Safe
) : ViewTreeObserver.OnPreDrawListener {
@@ -1,12 +1,10 @@
package com.yandex.div.core.view
package com.yandex.div.internal.view
import android.view.ViewTreeObserver.OnPreDrawListener
import com.yandex.div.core.annotations.InternalApi
@InternalApi
public open class SafeDrawingPassOverrideStrategy : DrawingPassOverrideStrategy {
open class SafeDrawingPassOverrideStrategy : DrawingPassOverrideStrategy {
public var frameCancelLimit: Int = DEFAULT_FRAME_CANCEL_LIMIT
var frameCancelLimit: Int = DEFAULT_FRAME_CANCEL_LIMIT
set(value) {
if (field != value) {
field = value
@@ -1,8 +1,8 @@
package com.yandex.div.internal.widget
import android.view.ViewTreeObserver
import com.yandex.div.core.view.DrawingPassOverrideStrategy
import com.yandex.div.core.view.onPreDrawListener
import com.yandex.div.internal.view.DrawingPassOverrideStrategy
import com.yandex.div.internal.view.onPreDrawListener
import com.yandex.div.internal.KLog
/**
@@ -10,7 +10,7 @@ import android.util.AttributeSet
import androidx.annotation.RequiresApi
import androidx.annotation.VisibleForTesting
import com.yandex.div.R
import com.yandex.div.core.view.DrawingPassOverrideStrategy
import com.yandex.div.internal.view.DrawingPassOverrideStrategy
open class EllipsizedTextView @JvmOverloads constructor(
context: Context,
@@ -3,7 +3,7 @@ package com.yandex.div.core.widget
import android.view.View
import android.view.ViewTreeObserver
import android.widget.TextView
import com.yandex.div.core.view.DrawingPassOverrideStrategy
import com.yandex.div.internal.view.DrawingPassOverrideStrategy
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith