summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Matt Pietal <mpietal@google.com> 2023-11-30 23:04:22 +0000
committer Matt Pietal <mpietal@google.com> 2023-12-04 12:34:15 +0000
commit30c11d69bb8defd8538af3c2c4daa3fb3c1884c5 (patch)
tree4ef3e048f146fd06a0f5cbd0bb101a781951332c
parent69fa8eb54413e847f2916d15feb96b55a2776c56 (diff)
Migrate OCCLUDED<->LOCKSCREEN alpha/translation
It is currently in NotificationPanelViewController and needs to be migrated to use the new keyguard root view. Move that logic to the corresponding transition view models. Also add ConfigurationInteractor and refactor code to use this instead of ConfigurationRepository. Also remove unused KeyguardVisibility data class and methods. Test: atest OccludedToLockscreenTransitionViewModelTest LockscreenToOccludedTransitionViewModelTest ConfigurationInteractorTest Bug: 288081969 Flag: ACONFIG com.android.systemui.keyguard_shade_migration_nssl DEVELOPMENT Change-Id: I87f02c4ba823ce366573ea5ba7fdf6114b14a53f
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt4
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt2
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt21
-rw-r--r--packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt46
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt34
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt52
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardRootViewVisibilityState.kt31
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt23
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt42
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt28
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java19
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt82
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt18
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt25
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt3
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt6
28 files changed, 304 insertions, 206 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
index 706f94e412ac..11939c1120d9 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
@@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.repository.FakeCommandQueue
import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel
@@ -53,7 +54,6 @@ class KeyguardInteractorTest : SysuiTestCase() {
private val sceneInteractor = testUtils.sceneInteractor()
private val commandQueue = FakeCommandQueue()
private val bouncerRepository = FakeKeyguardBouncerRepository()
- private val configurationRepository = FakeConfigurationRepository()
private val shadeRepository = FakeShadeRepository()
private val transitionState: MutableStateFlow<ObservableTransitionState> =
MutableStateFlow(ObservableTransitionState.Idle(SceneKey.Gone))
@@ -65,7 +65,7 @@ class KeyguardInteractorTest : SysuiTestCase() {
powerInteractor = PowerInteractorFactory.create().powerInteractor,
sceneContainerFlags = testUtils.sceneContainerFlags,
bouncerRepository = bouncerRepository,
- configurationRepository = configurationRepository,
+ configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()),
shadeRepository = shadeRepository,
sceneInteractorProvider = { sceneInteractor },
)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
index 3536d5c77c93..fafe74e88583 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt
@@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.coroutines.collectValues
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.flags.Flags
import com.android.systemui.flags.featureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
@@ -46,7 +47,6 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidJUnit4::class)
class LockscreenToOccludedTransitionViewModelTest : SysuiTestCase() {
-
private val kosmos =
testKosmos().apply {
featureFlagsClassic.apply { set(Flags.FULL_SCREEN_USER_SWITCHER, false) }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt
index d0772270ed5e..02f01bf8015b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt
@@ -20,6 +20,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
@@ -28,9 +29,11 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInterac
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
+import com.android.systemui.util.mockito.whenever
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.test.TestScope
@@ -39,6 +42,9 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.anyInt
+import org.mockito.MockitoAnnotations
@ExperimentalCoroutinesApi
@SmallTest
@@ -48,12 +54,16 @@ class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
private lateinit var repository: FakeKeyguardTransitionRepository
private lateinit var fingerprintPropertyRepository: FakeFingerprintPropertyRepository
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
+ @Mock private lateinit var configurationInteractor: ConfigurationInteractor
+ private val dimenFlow = MutableStateFlow(0)
@Before
fun setUp() {
+ MockitoAnnotations.initMocks(this)
repository = FakeKeyguardTransitionRepository()
fingerprintPropertyRepository = FakeFingerprintPropertyRepository()
biometricSettingsRepository = FakeBiometricSettingsRepository()
+ whenever(configurationInteractor.dimensionPixelSize(anyInt())).thenReturn(dimenFlow)
underTest =
OccludedToLockscreenTransitionViewModel(
interactor =
@@ -68,6 +78,7 @@ class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
fingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository(),
biometricSettingsRepository = biometricSettingsRepository,
),
+ configurationInteractor,
)
}
@@ -98,11 +109,10 @@ class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
@Test
fun lockscreenTranslationY() =
runTest(UnconfinedTestDispatcher()) {
+ dimenFlow.value = 100
val values = mutableListOf<Float>()
- val pixels = 100
- val job =
- underTest.lockscreenTranslationY(pixels).onEach { values.add(it) }.launchIn(this)
+ val job = underTest.lockscreenTranslationY.onEach { values.add(it) }.launchIn(this)
repository.sendTransitionStep(step(0f, TransitionState.STARTED))
repository.sendTransitionStep(step(0f))
@@ -119,11 +129,10 @@ class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
@Test
fun lockscreenTranslationYResettedAfterJobCancelled() =
runTest(UnconfinedTestDispatcher()) {
+ dimenFlow.value = 100
val values = mutableListOf<Float>()
- val pixels = 100
- val job =
- underTest.lockscreenTranslationY(pixels).onEach { values.add(it) }.launchIn(this)
+ val job = underTest.lockscreenTranslationY.onEach { values.add(it) }.launchIn(this)
repository.sendTransitionStep(step(0.5f, TransitionState.CANCELED))
assertThat(values.last()).isEqualTo(0f)
diff --git a/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt b/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt
new file mode 100644
index 000000000000..3648f3b2c3b9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractor.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.common.ui.domain.interactor
+
+import com.android.systemui.common.ui.data.repository.ConfigurationRepository
+import com.android.systemui.dagger.SysUISingleton
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.mapLatest
+import kotlinx.coroutines.flow.onStart
+
+/** Business logic related to configuration changes. */
+@SysUISingleton
+class ConfigurationInteractor @Inject constructor(private val repository: ConfigurationRepository) {
+ /** Given [resourceId], emit the dimension pixel size on config change */
+ fun dimensionPixelSize(resourceId: Int): Flow<Int> {
+ return onAnyConfigurationChange.mapLatest { repository.getDimensionPixelSize(resourceId) }
+ }
+
+ /** Given a set of [resourceId]s, emit Map<ResourceId, DimensionPixelSize> on config change */
+ fun dimensionPixelSize(resourceIds: Set<Int>): Flow<Map<Int, Int>> {
+ return onAnyConfigurationChange.mapLatest {
+ resourceIds.associateWith { repository.getDimensionPixelSize(it) }
+ }
+ }
+
+ /** Emit an event on any config change */
+ val onAnyConfigurationChange: Flow<Unit> =
+ repository.onAnyConfigurationChange.onStart { emit(Unit) }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
index 791ac07db5cf..2d6c0e1c13b2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepository.kt
@@ -37,7 +37,6 @@ import com.android.systemui.keyguard.shared.model.DismissAction
import com.android.systemui.keyguard.shared.model.DozeStateModel
import com.android.systemui.keyguard.shared.model.DozeTransitionModel
import com.android.systemui.keyguard.shared.model.KeyguardDone
-import com.android.systemui.keyguard.shared.model.KeyguardRootViewVisibilityState
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -178,9 +177,6 @@ interface KeyguardRepository {
/** Whether quick settings or quick-quick settings is visible. */
val isQuickSettingsVisible: Flow<Boolean>
- /** Represents the current state of the KeyguardRootView visibility */
- val keyguardRootViewVisibility: Flow<KeyguardRootViewVisibilityState>
-
/** Receive an event for doze time tick */
val dozeTimeTick: Flow<Long>
@@ -211,12 +207,6 @@ interface KeyguardRepository {
/** Sets the current amount of alpha that should be used for rendering the keyguard. */
fun setKeyguardAlpha(alpha: Float)
- fun setKeyguardVisibility(
- statusBarState: Int,
- goingToFullShade: Boolean,
- occlusionTransitionRunning: Boolean
- )
-
/**
* Sets the relative offset of the lock-screen clock from its natural position on the screen.
*/
@@ -621,17 +611,6 @@ constructor(
private val _isActiveDreamLockscreenHosted = MutableStateFlow(false)
override val isActiveDreamLockscreenHosted = _isActiveDreamLockscreenHosted.asStateFlow()
- private val _keyguardRootViewVisibility =
- MutableStateFlow(
- KeyguardRootViewVisibilityState(
- com.android.systemui.statusbar.StatusBarState.SHADE,
- goingToFullShade = false,
- occlusionTransitionRunning = false,
- )
- )
- override val keyguardRootViewVisibility: Flow<KeyguardRootViewVisibilityState> =
- _keyguardRootViewVisibility.asStateFlow()
-
override fun setAnimateDozingTransitions(animate: Boolean) {
_animateBottomAreaDozingTransitions.value = animate
}
@@ -644,19 +623,6 @@ constructor(
_keyguardAlpha.value = alpha
}
- override fun setKeyguardVisibility(
- statusBarState: Int,
- goingToFullShade: Boolean,
- occlusionTransitionRunning: Boolean
- ) {
- _keyguardRootViewVisibility.value =
- KeyguardRootViewVisibilityState(
- statusBarState,
- goingToFullShade,
- occlusionTransitionRunning
- )
- }
-
override fun setClockPosition(x: Int, y: Int) {
_clockPosition.value = Position(x, y)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index c0e8e2b60f33..b8c392591494 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -28,7 +28,7 @@ import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLoggin
import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
import com.android.systemui.common.shared.model.NotificationContainerBounds
import com.android.systemui.common.shared.model.Position
-import com.android.systemui.common.ui.data.repository.ConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.data.repository.KeyguardRepository
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
@@ -76,7 +76,7 @@ constructor(
powerInteractor: PowerInteractor,
sceneContainerFlags: SceneContainerFlags,
bouncerRepository: KeyguardBouncerRepository,
- configurationRepository: ConfigurationRepository,
+ configurationInteractor: ConfigurationInteractor,
shadeRepository: ShadeRepository,
sceneInteractorProvider: Provider<SceneInteractor>,
) {
@@ -212,35 +212,29 @@ constructor(
/** The approximate location on the screen of the face unlock sensor, if one is available. */
val faceSensorLocation: Flow<Point?> = repository.faceSensorLocation
- /** Notifies when a new configuration is set */
- val configurationChange: Flow<Unit> =
- configurationRepository.onAnyConfigurationChange.onStart { emit(Unit) }
-
/** The position of the keyguard clock. */
val clockPosition: Flow<Position> = repository.clockPosition
val keyguardAlpha: Flow<Float> = repository.keyguardAlpha
val keyguardTranslationY: Flow<Float> =
- configurationChange.flatMapLatest {
- val translationDistance =
- configurationRepository.getDimensionPixelSize(
- R.dimen.keyguard_translate_distance_on_swipe_up
- )
- shadeRepository.shadeModel.map {
- if (it.expansionAmount == 0f) {
- // Reset the translation value
- 0f
- } else {
- // On swipe up, translate the keyguard to reveal the bouncer
- MathUtils.lerp(
- translationDistance,
- 0,
- Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(it.expansionAmount)
- )
+ configurationInteractor
+ .dimensionPixelSize(R.dimen.keyguard_translate_distance_on_swipe_up)
+ .flatMapLatest { translationDistance ->
+ shadeRepository.shadeModel.map {
+ if (it.expansionAmount == 0f) {
+ // Reset the translation value
+ 0f
+ } else {
+ // On swipe up, translate the keyguard to reveal the bouncer
+ MathUtils.lerp(
+ translationDistance,
+ 0,
+ Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(it.expansionAmount)
+ )
+ }
}
}
- }
val clockShouldBeCentered: Flow<Boolean> = repository.clockShouldBeCentered
@@ -294,18 +288,6 @@ constructor(
repository.setQuickSettingsVisible(isVisible)
}
- fun setKeyguardRootVisibility(
- statusBarState: Int,
- goingToFullShade: Boolean,
- isOcclusionTransitionRunning: Boolean
- ) {
- repository.setKeyguardVisibility(
- statusBarState,
- goingToFullShade,
- isOcclusionTransitionRunning
- )
- }
-
fun setClockPosition(x: Int, y: Int) {
repository.setClockPosition(x, y)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardRootViewVisibilityState.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardRootViewVisibilityState.kt
deleted file mode 100644
index 9a57aefba329..000000000000
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/KeyguardRootViewVisibilityState.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.android.systemui.keyguard.shared.model
-
-/**
- * Provides a stateful representation of the visibility of the KeyguardRootView
- *
- * @param statusBarState State of the status bar represented by [StatusBarState]
- * @param goingToFullShade Whether status bar is going to full shade
- * @param occlusionTransitionRunning Whether the occlusion transition is running in this instant
- */
-data class KeyguardRootViewVisibilityState(
- val statusBarState: Int,
- val goingToFullShade: Boolean,
- val occlusionTransitionRunning: Boolean,
-)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
index 51e1f60acd64..0addbd8e18b2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
@@ -89,7 +89,7 @@ object KeyguardRootViewBinder {
vibratorHelper: VibratorHelper?,
): DisposableHandle {
var onLayoutChangeListener: OnLayoutChange? = null
- val childViews = mutableMapOf<Int, View?>()
+ val childViews = mutableMapOf<Int, View>()
val statusViewId = R.id.keyguard_status_view
val burnInLayerId = R.id.burn_in_layer
val aodNotificationIconContainerId = R.id.aod_notification_icon_container
@@ -114,7 +114,12 @@ object KeyguardRootViewBinder {
}
if (keyguardBottomAreaRefactor()) {
- launch { viewModel.alpha.collect { alpha -> view.alpha = alpha } }
+ launch {
+ viewModel.alpha.collect { alpha ->
+ view.alpha = alpha
+ childViews[statusViewId]?.alpha = alpha
+ }
+ }
}
if (KeyguardShadeMigrationNssl.isEnabled) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt
index 2327c028970b..6458edaecd9e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModel.kt
@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.ui.viewmodel
import com.android.systemui.Flags.keyguardBottomAreaRefactor
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.doze.util.BurnInHelperWrapper
import com.android.systemui.keyguard.domain.interactor.KeyguardBottomAreaInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
@@ -35,10 +36,11 @@ constructor(
keyguardBottomAreaViewModel: KeyguardBottomAreaViewModel,
private val burnInHelperWrapper: BurnInHelperWrapper,
private val shortcutsCombinedViewModel: KeyguardQuickAffordancesCombinedViewModel,
+ configurationInteractor: ConfigurationInteractor,
) {
/** Notifies when a new configuration is set */
- val configurationChange: Flow<Unit> = keyguardInteractor.configurationChange
+ val configurationChange: Flow<Unit> = configurationInteractor.onAnyConfigurationChange
/** An observable for the alpha level for the entire bottom area. */
val alpha: Flow<Float> = keyguardBottomAreaViewModel.alpha
@@ -47,17 +49,18 @@ constructor(
val isIndicationAreaPadded: Flow<Boolean> =
if (keyguardBottomAreaRefactor()) {
combine(shortcutsCombinedViewModel.startButton, shortcutsCombinedViewModel.endButton) {
- startButtonModel,
- endButtonModel ->
- startButtonModel.isVisible || endButtonModel.isVisible
- }
+ startButtonModel,
+ endButtonModel ->
+ startButtonModel.isVisible || endButtonModel.isVisible
+ }
.distinctUntilChanged()
} else {
- combine(keyguardBottomAreaViewModel.startButton, keyguardBottomAreaViewModel.endButton) {
- startButtonModel,
- endButtonModel ->
- startButtonModel.isVisible || endButtonModel.isVisible
- }
+ combine(
+ keyguardBottomAreaViewModel.startButton,
+ keyguardBottomAreaViewModel.endButton
+ ) { startButtonModel, endButtonModel ->
+ startButtonModel.isVisible || endButtonModel.isVisible
+ }
.distinctUntilChanged()
}
/** An observable for the x-offset by which the indication area should be translated. */
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index af1705369dbb..4c3fc03cc48e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -17,13 +17,13 @@
package com.android.systemui.keyguard.ui.viewmodel
-import android.content.Context
import android.util.MathUtils
import android.view.View.VISIBLE
import com.android.app.animation.Interpolators
import com.android.keyguard.KeyguardClockSwitch.LARGE
import com.android.systemui.Flags.newAodTransition
import com.android.systemui.common.shared.model.NotificationContainerBounds
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
import com.android.systemui.flags.FeatureFlagsClassic
@@ -34,6 +34,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInterac
import com.android.systemui.keyguard.shared.model.BurnInModel
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
+import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
import com.android.systemui.plugins.ClockController
import com.android.systemui.res.R
@@ -64,7 +65,7 @@ import kotlinx.coroutines.flow.onStart
class KeyguardRootViewModel
@Inject
constructor(
- private val context: Context,
+ configurationInteractor: ConfigurationInteractor,
private val deviceEntryInteractor: DeviceEntryInteractor,
private val dozeParameters: DozeParameters,
private val keyguardInteractor: KeyguardInteractor,
@@ -74,6 +75,7 @@ constructor(
private val keyguardClockViewModel: KeyguardClockViewModel,
private val goneToAodTransitionViewModel: GoneToAodTransitionViewModel,
private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
+ private val occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
screenOffAnimationController: ScreenOffAnimationController,
// TODO(b/310989341): remove after changing migrate_clocks_to_blueprint to aconfig
private val featureFlags: FeatureFlagsClassic,
@@ -97,14 +99,18 @@ constructor(
.filter { it == AOD || it == LOCKSCREEN }
.map { VISIBLE }
- val goneToAodTransition = keyguardTransitionInteractor.goneToAodTransition
+ val goneToAodTransition = keyguardTransitionInteractor.transition(from = GONE, to = AOD)
/** the shared notification container bounds *on the lockscreen* */
val notificationBounds: StateFlow<NotificationContainerBounds> =
keyguardInteractor.notificationContainerBounds
/** An observable for the alpha level for the entire keyguard root view. */
- val alpha: Flow<Float> = keyguardInteractor.keyguardAlpha.distinctUntilChanged()
+ val alpha: Flow<Float> =
+ merge(
+ keyguardInteractor.keyguardAlpha.distinctUntilChanged(),
+ occludedToLockscreenTransitionViewModel.lockscreenAlpha,
+ )
private fun burnIn(): Flow<BurnInModel> {
val dozingAmount: Flow<Float> =
@@ -150,20 +156,26 @@ constructor(
val burnInLayerAlpha: Flow<Float> = goneToAodTransitionViewModel.enterFromTopAnimationAlpha
val translationY: Flow<Float> =
- keyguardInteractor.configurationChange.flatMapLatest { _ ->
- val enterFromTopAmount =
- context.resources.getDimensionPixelSize(
- R.dimen.keyguard_enter_from_top_translation_y
- )
+ configurationInteractor
+ .dimensionPixelSize(R.dimen.keyguard_enter_from_top_translation_y)
+ .flatMapLatest { enterFromTopAmount ->
combine(
keyguardInteractor.keyguardTranslationY.onStart { emit(0f) },
burnIn().map { it.translationY.toFloat() }.onStart { emit(0f) },
- goneToAodTransitionViewModel.enterFromTopTranslationY(enterFromTopAmount).onStart {
- emit(0f)
- },
- ) { keyguardTransitionY, burnInTranslationY, goneToAodTransitionTranslationY ->
- // All 3 values need to be combined for a smooth translation
- keyguardTransitionY + burnInTranslationY + goneToAodTransitionTranslationY
+ goneToAodTransitionViewModel
+ .enterFromTopTranslationY(enterFromTopAmount)
+ .onStart { emit(0f) },
+ occludedToLockscreenTransitionViewModel.lockscreenTranslationY,
+ ) {
+ keyguardTransitionY,
+ burnInTranslationY,
+ goneToAodTransitionTranslationY,
+ occludedToLockscreenTransitionTranslationY ->
+ // All values need to be combined for a smooth translation
+ keyguardTransitionY +
+ burnInTranslationY +
+ goneToAodTransitionTranslationY +
+ occludedToLockscreenTransitionTranslationY
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt
index a6136f95d0f6..e1b0102b0d32 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModel.kt
@@ -17,14 +17,17 @@
package com.android.systemui.keyguard.ui.viewmodel
import com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.FromLockscreenTransitionInteractor.Companion.TO_OCCLUDED_DURATION
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
+import com.android.systemui.res.R
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flatMapLatest
/**
* Breaks down LOCKSCREEN->OCCLUDED transition into discrete steps for corresponding views to
@@ -36,7 +39,9 @@ class LockscreenToOccludedTransitionViewModel
constructor(
interactor: KeyguardTransitionInteractor,
shadeDependentFlows: ShadeDependentFlows,
+ configurationInteractor: ConfigurationInteractor,
) : DeviceEntryIconTransition {
+
private val transitionAnimation =
KeyguardTransitionAnimationFlow(
transitionDuration = TO_OCCLUDED_DURATION,
@@ -59,16 +64,19 @@ constructor(
)
/** Lockscreen views y-translation */
- fun lockscreenTranslationY(translatePx: Int): Flow<Float> {
- return transitionAnimation.createFlow(
- duration = TO_OCCLUDED_DURATION,
- onStep = { value -> value * translatePx },
- // Reset on cancel or finish
- onFinish = { 0f },
- onCancel = { 0f },
- interpolator = EMPHASIZED_ACCELERATE,
- )
- }
+ val lockscreenTranslationY: Flow<Float> =
+ configurationInteractor
+ .dimensionPixelSize(R.dimen.lockscreen_to_occluded_transition_lockscreen_translation_y)
+ .flatMapLatest { translatePx ->
+ transitionAnimation.createFlow(
+ duration = TO_OCCLUDED_DURATION,
+ onStep = { value -> value * translatePx },
+ // Reset on cancel or finish
+ onFinish = { 0f },
+ onCancel = { 0f },
+ interpolator = EMPHASIZED_ACCELERATE,
+ )
+ }
override val deviceEntryParentViewAlpha: Flow<Float> =
shadeDependentFlows.transitionFlow(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt
index 58be0934beca..9b2eaef92e9d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt
@@ -17,12 +17,14 @@
package com.android.systemui.keyguard.ui.viewmodel
import com.android.app.animation.Interpolators.EMPHASIZED_DECELERATE
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor
import com.android.systemui.keyguard.domain.interactor.FromOccludedTransitionInteractor.Companion.TO_LOCKSCREEN_DURATION
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
+import com.android.systemui.res.R
import javax.inject.Inject
import kotlin.time.Duration.Companion.milliseconds
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -40,8 +42,10 @@ class OccludedToLockscreenTransitionViewModel
@Inject
constructor(
interactor: KeyguardTransitionInteractor,
- deviceEntryUdfpsInteractor: DeviceEntryUdfpsInteractor
+ deviceEntryUdfpsInteractor: DeviceEntryUdfpsInteractor,
+ configurationInteractor: ConfigurationInteractor,
) : DeviceEntryIconTransition {
+
private val transitionAnimation =
KeyguardTransitionAnimationFlow(
transitionDuration = TO_LOCKSCREEN_DURATION,
@@ -49,14 +53,17 @@ constructor(
)
/** Lockscreen views y-translation */
- fun lockscreenTranslationY(translatePx: Int): Flow<Float> {
- return transitionAnimation.createFlow(
- duration = TO_LOCKSCREEN_DURATION,
- onStep = { value -> -translatePx + value * translatePx },
- interpolator = EMPHASIZED_DECELERATE,
- onCancel = { 0f },
- )
- }
+ val lockscreenTranslationY: Flow<Float> =
+ configurationInteractor
+ .dimensionPixelSize(R.dimen.occluded_to_lockscreen_transition_lockscreen_translation_y)
+ .flatMapLatest { translatePx ->
+ transitionAnimation.createFlow(
+ duration = TO_LOCKSCREEN_DURATION,
+ onStep = { value -> -translatePx + value * translatePx },
+ interpolator = EMPHASIZED_DECELERATE,
+ onCancel = { 0f },
+ )
+ }
val shortcutsAlpha: Flow<Float> =
transitionAnimation.createFlow(
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 66d70e6ee2a2..8e98d89207f9 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -617,10 +617,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
private boolean mIsOcclusionTransitionRunning = false;
private boolean mIsGoneToDreamingLockscreenHostedTransitionRunning;
private int mDreamingToLockscreenTransitionTranslationY;
- private int mOccludedToLockscreenTransitionTranslationY;
private int mLockscreenToDreamingTransitionTranslationY;
private int mGoneToDreamingTransitionTranslationY;
- private int mLockscreenToOccludedTransitionTranslationY;
private SplitShadeStateController mSplitShadeStateController;
private final Runnable mFlingCollapseRunnable = () -> fling(0, false /* expand */,
mNextCollapseSpeedUpFactor, false /* expandBecauseOfFalsing */);
@@ -1161,11 +1159,13 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
// Occluded->Lockscreen
collectFlow(mView, mKeyguardTransitionInteractor.getOccludedToLockscreenTransition(),
mOccludedToLockscreenTransition, mMainDispatcher);
- collectFlow(mView, mOccludedToLockscreenTransitionViewModel.getLockscreenAlpha(),
+ if (!KeyguardShadeMigrationNssl.isEnabled()) {
+ collectFlow(mView, mOccludedToLockscreenTransitionViewModel.getLockscreenAlpha(),
setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
- collectFlow(mView, mOccludedToLockscreenTransitionViewModel.lockscreenTranslationY(
- mOccludedToLockscreenTransitionTranslationY),
- setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
+ collectFlow(mView,
+ mOccludedToLockscreenTransitionViewModel.getLockscreenTranslationY(),
+ setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
+ }
// Lockscreen->Dreaming
collectFlow(mView, mKeyguardTransitionInteractor.getLockscreenToDreamingTransition(),
@@ -1191,8 +1191,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
mLockscreenToOccludedTransition, mMainDispatcher);
collectFlow(mView, mLockscreenToOccludedTransitionViewModel.getLockscreenAlpha(),
setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
- collectFlow(mView, mLockscreenToOccludedTransitionViewModel.lockscreenTranslationY(
- mLockscreenToOccludedTransitionTranslationY),
+ collectFlow(mView, mLockscreenToOccludedTransitionViewModel.getLockscreenTranslationY(),
setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
// Primary bouncer->Gone (ensures lockscreen content is not visible on successful auth)
@@ -1224,14 +1223,10 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
R.dimen.split_shade_scrim_transition_distance);
mDreamingToLockscreenTransitionTranslationY = mResources.getDimensionPixelSize(
R.dimen.dreaming_to_lockscreen_transition_lockscreen_translation_y);
- mOccludedToLockscreenTransitionTranslationY = mResources.getDimensionPixelSize(
- R.dimen.occluded_to_lockscreen_transition_lockscreen_translation_y);
mLockscreenToDreamingTransitionTranslationY = mResources.getDimensionPixelSize(
R.dimen.lockscreen_to_dreaming_transition_lockscreen_translation_y);
mGoneToDreamingTransitionTranslationY = mResources.getDimensionPixelSize(
R.dimen.gone_to_dreaming_transition_lockscreen_translation_y);
- mLockscreenToOccludedTransitionTranslationY = mResources.getDimensionPixelSize(
- R.dimen.lockscreen_to_occluded_transition_lockscreen_translation_y);
// TODO (b/265193930): remove this and make QsController listen to NotificationPanelViews
mQsController.loadDimens();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
index 5e60b5f4c707..7b2caea3fd9c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/SharedNotificationContainerBinder.kt
@@ -82,6 +82,8 @@ object SharedNotificationContainerBinder {
}
launch { viewModel.translationY.collect { controller.setTranslationY(it) } }
+
+ launch { viewModel.alpha.collect { controller.setMaxAlphaForExpansion(it) } }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index 1febaf99b7b2..da847c020600 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -24,6 +24,7 @@ import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.ui.viewmodel.OccludedToLockscreenTransitionViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor
import com.android.systemui.util.kotlin.sample
@@ -38,6 +39,7 @@ import kotlinx.coroutines.flow.combineTransform
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.stateIn
@@ -50,6 +52,7 @@ constructor(
keyguardInteractor: KeyguardInteractor,
keyguardTransitionInteractor: KeyguardTransitionInteractor,
private val shadeInteractor: ShadeInteractor,
+ occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
) {
private val statesForConstrainedNotifications =
setOf(
@@ -144,14 +147,20 @@ constructor(
initialValue = NotificationContainerBounds(0f, 0f),
)
+ val alpha: Flow<Float> = occludedToLockscreenTransitionViewModel.lockscreenAlpha
+
/**
* Under certain scenarios, such as swiping up on the lockscreen, the container will need to be
* translated as the keyguard fades out.
*/
val translationY: Flow<Float> =
- combine(isOnLockscreen, keyguardInteractor.keyguardTranslationY) {
+ combine(
isOnLockscreen,
- translationY ->
+ merge(
+ keyguardInteractor.keyguardTranslationY,
+ occludedToLockscreenTransitionViewModel.lockscreenTranslationY,
+ )
+ ) { isOnLockscreen, translationY ->
if (isOnLockscreen) {
translationY
} else {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
new file mode 100644
index 000000000000..c5c02080fb80
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/common/ui/domain/interactor/ConfigurationInteractorTest.kt
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui.common.ui.domain.interactor
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.coroutines.collectLastValue
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.MockitoAnnotations
+
+@ExperimentalCoroutinesApi
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ConfigurationInteractorTest : SysuiTestCase() {
+ private lateinit var testScope: TestScope
+ private lateinit var underTest: ConfigurationInteractor
+ private lateinit var configurationRepository: FakeConfigurationRepository
+
+ @Before
+ fun setUp() {
+ MockitoAnnotations.initMocks(this)
+
+ configurationRepository = FakeConfigurationRepository()
+ testScope = TestScope()
+ underTest = ConfigurationInteractor(configurationRepository)
+ }
+
+ @Test
+ fun dimensionPixelSize() =
+ testScope.runTest {
+ val resourceId = 1001
+ val pixelSize = 501
+ configurationRepository.setDimensionPixelSize(resourceId, pixelSize)
+
+ val dimensionPixelSize by collectLastValue(underTest.dimensionPixelSize(resourceId))
+
+ configurationRepository.onAnyConfigurationChange()
+
+ assertThat(dimensionPixelSize).isEqualTo(pixelSize)
+ }
+
+ @Test
+ fun dimensionPixelSizes() =
+ testScope.runTest {
+ val resourceId1 = 1001
+ val pixelSize1 = 501
+ val resourceId2 = 1002
+ val pixelSize2 = 502
+ configurationRepository.setDimensionPixelSize(resourceId1, pixelSize1)
+ configurationRepository.setDimensionPixelSize(resourceId2, pixelSize2)
+
+ val dimensionPixelSizes by
+ collectLastValue(underTest.dimensionPixelSize(setOf(resourceId1, resourceId2)))
+
+ configurationRepository.onAnyConfigurationChange()
+
+ assertThat(dimensionPixelSizes!![resourceId1]).isEqualTo(pixelSize1)
+ assertThat(dimensionPixelSizes!![resourceId2]).isEqualTo(pixelSize2)
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
index 88a4aa509c37..6735e1a6207b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardIndicationAreaViewModelTest.kt
@@ -18,6 +18,8 @@ package com.android.systemui.keyguard.ui.viewmodel
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.doze.util.BurnInHelperWrapper
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
@@ -83,6 +85,7 @@ class KeyguardIndicationAreaViewModelTest : SysuiTestCase() {
keyguardBottomAreaViewModel = bottomAreaViewModel,
burnInHelperWrapper = burnInHelperWrapper,
shortcutsCombinedViewModel = shortcutsCombinedViewModel,
+ configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()),
)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
index bc60364f27cb..ad3e02d96528 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
@@ -30,6 +30,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.TestMocksModule
import com.android.systemui.collectLastValue
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.deviceentry.data.repository.FakeDeviceEntryRepository
@@ -93,11 +94,16 @@ class KeyguardRootViewModelTest : SysuiTestCase() {
@Mock private lateinit var goneToAodTransitionViewModel: GoneToAodTransitionViewModel
@Mock
private lateinit var aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel
+ @Mock
+ private lateinit var occludedToLockscreenTransitionViewModel:
+ OccludedToLockscreenTransitionViewModel
@Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var clockController: ClockController
private val burnInFlow = MutableStateFlow(BurnInModel())
private val goneToAodTransitionViewModelVisibility = MutableStateFlow(0)
private val enterFromTopAnimationAlpha = MutableStateFlow(0f)
+ private val occludedToLockscreenTranslationY = MutableStateFlow(0f)
+ private val occludedToLockscreenAlpha = MutableStateFlow(0f)
private val goneToAodTransitionStep = MutableSharedFlow<TransitionStep>(replay = 1)
private val dozeAmountTransitionStep = MutableSharedFlow<TransitionStep>(replay = 1)
private val clockSize = MutableStateFlow(LARGE)
@@ -133,9 +139,14 @@ class KeyguardRootViewModelTest : SysuiTestCase() {
whenever(keyguardTransitionInteractor.startedKeyguardState).thenReturn(startedKeyguardState)
whenever(keyguardClockViewModel.clockSize).thenReturn(clockSize)
+ whenever(occludedToLockscreenTransitionViewModel.lockscreenTranslationY)
+ .thenReturn(occludedToLockscreenTranslationY)
+ whenever(occludedToLockscreenTransitionViewModel.lockscreenAlpha)
+ .thenReturn(occludedToLockscreenAlpha)
+
underTest =
KeyguardRootViewModel(
- context,
+ ConfigurationInteractor(configurationRepository),
deviceEntryInteractor =
mock { whenever(isBypassEnabled).thenReturn(MutableStateFlow(false)) },
dozeParameters = mock(),
@@ -150,6 +161,7 @@ class KeyguardRootViewModelTest : SysuiTestCase() {
keyguardClockViewModel,
goneToAodTransitionViewModel,
aodToLockscreenTransitionViewModel,
+ occludedToLockscreenTransitionViewModel,
screenOffAnimationController = mock(),
// TODO(b/310989341): remove after change to aconfig
featureFlags
@@ -161,8 +173,8 @@ class KeyguardRootViewModelTest : SysuiTestCase() {
fun alpha() =
testScope.runTest {
val value = collectLastValue(underTest.alpha)
+ assertThat(value()).isEqualTo(0f)
- assertThat(value()).isEqualTo(1f)
repository.setKeyguardAlpha(0.1f)
assertThat(value()).isEqualTo(0.1f)
repository.setKeyguardAlpha(0.5f)
@@ -171,6 +183,8 @@ class KeyguardRootViewModelTest : SysuiTestCase() {
assertThat(value()).isEqualTo(0.2f)
repository.setKeyguardAlpha(0f)
assertThat(value()).isEqualTo(0f)
+ occludedToLockscreenAlpha.value = 0.8f
+ assertThat(value()).isEqualTo(0.8f)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index 97378c3cc5a9..b0b29e500fe4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -529,7 +529,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
.thenReturn(emptyFlow());
when(mOccludedToLockscreenTransitionViewModel.getLockscreenAlpha())
.thenReturn(emptyFlow());
- when(mOccludedToLockscreenTransitionViewModel.lockscreenTranslationY(anyInt()))
+ when(mOccludedToLockscreenTransitionViewModel.getLockscreenTranslationY())
.thenReturn(emptyFlow());
// Lockscreen->Dreaming
@@ -567,7 +567,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
.thenReturn(emptyFlow());
when(mLockscreenToOccludedTransitionViewModel.getLockscreenAlpha())
.thenReturn(emptyFlow());
- when(mLockscreenToOccludedTransitionViewModel.lockscreenTranslationY(anyInt()))
+ when(mLockscreenToOccludedTransitionViewModel.getLockscreenTranslationY())
.thenReturn(emptyFlow());
// Primary Bouncer->Gone
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java
index 39b306b781f9..39739e7bb93d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java
@@ -53,6 +53,7 @@ import com.android.systemui.biometrics.AuthController;
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository;
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FakeFeatureFlagsClassic;
import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -190,7 +191,7 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase {
powerInteractor,
sceneContainerFlags,
new FakeKeyguardBouncerRepository(),
- configurationRepository,
+ new ConfigurationInteractor(configurationRepository),
shadeRepository,
() -> sceneInteractor);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
index 62c0ebeb8c07..e723d7d0367b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
@@ -40,6 +40,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository;
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository;
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FakeFeatureFlagsClassic;
import com.android.systemui.flags.FeatureFlags;
@@ -228,7 +229,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase {
powerInteractor,
sceneContainerFlags,
new FakeKeyguardBouncerRepository(),
- configurationRepository,
+ new ConfigurationInteractor(configurationRepository),
mShadeRepository,
() -> sceneInteractor);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
index 7546dfa1cbf9..dff91ddf559f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
@@ -26,6 +26,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
import com.android.systemui.classifier.FalsingCollectorFake
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.flags.FakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.FakeCommandQueue
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
@@ -121,7 +122,7 @@ class StatusBarStateControllerImplTest : SysuiTestCase() {
powerInteractor,
sceneContainerFlags,
FakeKeyguardBouncerRepository(),
- configurationRepository,
+ ConfigurationInteractor(configurationRepository),
shadeRepository,
utils::sceneInteractor
)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
index 62a2bc54af20..5102b4f7a817 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
@@ -55,6 +55,7 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.battery.BatteryMeterViewController;
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository;
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository;
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor;
import com.android.systemui.flags.FakeFeatureFlagsClassic;
import com.android.systemui.flags.Flags;
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository;
@@ -167,7 +168,7 @@ public class KeyguardStatusBarViewControllerTest extends SysuiTestCase {
PowerInteractorFactory.create().getPowerInteractor(),
mSceneTestUtils.getSceneContainerFlags(),
new FakeKeyguardBouncerRepository(),
- new FakeConfigurationRepository(),
+ new ConfigurationInteractor(new FakeConfigurationRepository()),
new FakeShadeRepository(),
() -> mSceneTestUtils.sceneInteractor());
mViewModel =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
index 59bf9f30a828..9419d638b1c7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
@@ -20,6 +20,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
@@ -56,7 +57,7 @@ class KeyguardStatusBarViewModelTest : SysuiTestCase() {
PowerInteractorFactory.create().powerInteractor,
sceneTestUtils.sceneContainerFlags,
FakeKeyguardBouncerRepository(),
- FakeConfigurationRepository(),
+ ConfigurationInteractor(FakeConfigurationRepository()),
FakeShadeRepository(),
) {
sceneTestUtils.sceneInteractor()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index 52c25f7b2b71..8585d46fa8a5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -96,6 +96,7 @@ import com.android.systemui.biometrics.AuthController;
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository;
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.FakeFeatureFlagsClassic;
@@ -415,7 +416,7 @@ public class BubblesTest extends SysuiTestCase {
powerInteractor,
sceneContainerFlags,
new FakeKeyguardBouncerRepository(),
- configurationRepository,
+ new ConfigurationInteractor(configurationRepository),
shadeRepository,
() -> sceneInteractor);
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
index 75fe37eddd70..81a7bec52bb5 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeKeyguardRepository.kt
@@ -25,7 +25,6 @@ import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
import com.android.systemui.keyguard.shared.model.DismissAction
import com.android.systemui.keyguard.shared.model.DozeTransitionModel
import com.android.systemui.keyguard.shared.model.KeyguardDone
-import com.android.systemui.keyguard.shared.model.KeyguardRootViewVisibilityState
import com.android.systemui.keyguard.shared.model.StatusBarState
import dagger.Binds
import dagger.Module
@@ -120,17 +119,6 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
private val _keyguardAlpha = MutableStateFlow(1f)
override val keyguardAlpha: StateFlow<Float> = _keyguardAlpha
- private val _keyguardRootViewVisibility =
- MutableStateFlow(
- KeyguardRootViewVisibilityState(
- 0,
- goingToFullShade = false,
- occlusionTransitionRunning = false
- )
- )
- override val keyguardRootViewVisibility: Flow<KeyguardRootViewVisibilityState> =
- _keyguardRootViewVisibility.asStateFlow()
-
override fun setQuickSettingsVisible(isVisible: Boolean) {
_isQuickSettingsVisible.value = isVisible
}
@@ -247,19 +235,6 @@ class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
override fun setKeyguardAlpha(alpha: Float) {
_keyguardAlpha.value = alpha
}
-
- override fun setKeyguardVisibility(
- statusBarState: Int,
- goingToFullShade: Boolean,
- occlusionTransitionRunning: Boolean
- ) {
- _keyguardRootViewVisibility.value =
- KeyguardRootViewVisibilityState(
- statusBarState,
- goingToFullShade,
- occlusionTransitionRunning
- )
- }
}
@Module
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
index c575bb3fe25d..0bba36b172c0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard.domain.interactor
import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.keyguard.data.repository.FakeCommandQueue
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
@@ -63,7 +64,7 @@ object KeyguardInteractorFactory {
commandQueue = commandQueue,
sceneContainerFlags = sceneContainerFlags,
bouncerRepository = bouncerRepository,
- configurationRepository = configurationRepository,
+ configurationInteractor = ConfigurationInteractor(configurationRepository),
shadeRepository = shadeRepository,
sceneInteractorProvider = { sceneInteractor },
powerInteractor = powerInteractor,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt
index 3c96051a718f..d78bcb93b256 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/SceneTestUtils.kt
@@ -47,6 +47,7 @@ import com.android.systemui.classifier.FalsingCollectorFake
import com.android.systemui.classifier.domain.interactor.FalsingInteractor
import com.android.systemui.common.shared.model.Text
import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
+import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.communal.data.repository.FakeCommunalRepository
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.domain.interactor.CommunalInteractorFactory
@@ -133,6 +134,9 @@ class SceneTestUtils(
val configurationRepository: FakeConfigurationRepository by lazy {
FakeConfigurationRepository()
}
+ val configurationInteractor: ConfigurationInteractor by lazy {
+ ConfigurationInteractor(configurationRepository)
+ }
private val emergencyServicesRepository: EmergencyServicesRepository by lazy {
EmergencyServicesRepository(
applicationScope = applicationScope(),
@@ -246,7 +250,7 @@ class SceneTestUtils(
commandQueue = FakeCommandQueue(),
sceneContainerFlags = sceneContainerFlags,
bouncerRepository = FakeKeyguardBouncerRepository(),
- configurationRepository = configurationRepository,
+ configurationInteractor = configurationInteractor,
shadeRepository = FakeShadeRepository(),
sceneInteractorProvider = { sceneInteractor() },
powerInteractor = PowerInteractorFactory.create().powerInteractor,