mirror of
https://github.com/divkit/divkit.git
synced 2026-05-07 20:02:32 +00:00
fix ANR at RuntimeStoreImpl initialization
commit_hash:223019df6e9b843f2c803e6e8a7c7f5d4a034d13
This commit is contained in:
+1
-3
@@ -5,7 +5,6 @@ import com.yandex.div.core.annotations.Mockable
|
||||
import com.yandex.div.core.dagger.DivScope
|
||||
import com.yandex.div.core.expression.local.ExpressionsRuntimeProvider
|
||||
import com.yandex.div.core.expression.local.RuntimeStore
|
||||
import com.yandex.div.core.expression.local.RuntimeStoreFiller
|
||||
import com.yandex.div.core.expression.local.RuntimeStoreImpl
|
||||
import com.yandex.div.core.expression.variables.declare
|
||||
import com.yandex.div.core.view2.Div2View
|
||||
@@ -45,8 +44,7 @@ internal class RuntimeStoreProvider @Inject constructor(
|
||||
return store
|
||||
}
|
||||
|
||||
val filler = RuntimeStoreFiller(runtimeProvider, errorCollector)
|
||||
return RuntimeStoreImpl(data, filler, runtimeProvider, errorCollector).also { store ->
|
||||
return RuntimeStoreImpl(data, runtimeProvider, errorCollector).also { store ->
|
||||
runtimeStores[tag.id] = store
|
||||
div2View?.let { store.attachView(it) }
|
||||
}
|
||||
|
||||
+3
-2
@@ -21,7 +21,6 @@ private const val WARNING_LOCAL_USING_LOCAL_VARIABLES =
|
||||
|
||||
internal class RuntimeStoreImpl(
|
||||
data: DivData,
|
||||
filler: RuntimeStoreFiller,
|
||||
private val runtimeProvider: ExpressionsRuntimeProvider,
|
||||
private val errorCollector: ErrorCollector,
|
||||
) : RuntimeStore {
|
||||
@@ -37,7 +36,9 @@ internal class RuntimeStoreImpl(
|
||||
|
||||
override val viewProvider = Provider { viewRef?.get() }
|
||||
|
||||
override val rootRuntime = filler.fillStore(this, data)
|
||||
override val rootRuntime = runtimeProvider.createRootRuntime(data, errorCollector, this).also {
|
||||
putRuntime(it, "", null)
|
||||
}
|
||||
|
||||
fun attachView(view: Div2View) {
|
||||
viewRef = WeakReference(view)
|
||||
|
||||
+3
-4
@@ -24,13 +24,12 @@ class RuntimeStoreImplTest {
|
||||
on { variableController } doReturn mock()
|
||||
}
|
||||
private val childRuntime = ExpressionsRuntime(resolver)
|
||||
private val filler = mock< RuntimeStoreFiller> {
|
||||
on { fillStore(any(), any()) } doReturn rootRuntime
|
||||
}
|
||||
|
||||
private val runtimeProvider = mock<ExpressionsRuntimeProvider> {
|
||||
on { createRootRuntime(any(), any(), any()) } doReturn rootRuntime
|
||||
on { createChildRuntime(any(), any(), any(), any()) } doReturn childRuntime
|
||||
}
|
||||
private val underTest = RuntimeStoreImpl(mock(), filler, runtimeProvider, mock()).apply {
|
||||
private val underTest = RuntimeStoreImpl(mock(), runtimeProvider, mock()).apply {
|
||||
putRuntime(rootRuntime, "", null)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user