Loading packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/modifier/BurnInModifiers.kt +0 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ fun Modifier.burnInAware( ): Modifier { val translationX by viewModel.translationX(params).collectAsState(initial = 0f) val translationY by viewModel.translationY(params).collectAsState(initial = 0f) val alpha by viewModel.alpha.collectAsState(initial = 1f) val scaleViewModel by viewModel.scale(params).collectAsState(initial = BurnInScaleViewModel()) return this.graphicsLayer { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +49 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,10 @@ 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.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractorFactory import com.android.systemui.scene.domain.interactor.sceneInteractor Loading Loading @@ -56,11 +59,10 @@ class KeyguardInteractorTest : SysuiTestCase() { private val testScope = kosmos.testScope private val repository by lazy { kosmos.fakeKeyguardRepository } private val sceneInteractor by lazy { kosmos.sceneInteractor } private val commandQueue by lazy { FakeCommandQueue() } private val commandQueue by lazy { FakeCommandQueue() } private val bouncerRepository = FakeKeyguardBouncerRepository() private val shadeRepository = FakeShadeRepository() private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private val transitionState: MutableStateFlow<ObservableTransitionState> = MutableStateFlow(ObservableTransitionState.Idle(SceneKey.Gone)) Loading @@ -73,6 +75,7 @@ class KeyguardInteractorTest : SysuiTestCase() { bouncerRepository = bouncerRepository, configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()), shadeRepository = shadeRepository, keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor, sceneInteractorProvider = { sceneInteractor }, ) } Loading Loading @@ -187,6 +190,49 @@ class KeyguardInteractorTest : SysuiTestCase() { assertThat(secureCameraActive()).isFalse() } @Test fun dismissAlpha() = testScope.runTest { val dismissAlpha by collectLastValue(underTest.dismissAlpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, testScope, ) repository.setStatusBarState(StatusBarState.KEYGUARD) shadeRepository.setLegacyShadeExpansion(1f) // When not dismissable, no alpha value (null) should emit repository.setKeyguardDismissible(false) assertThat(dismissAlpha).isNull() repository.setKeyguardDismissible(true) assertThat(dismissAlpha).isGreaterThan(0.95f) } @Test fun dismissAlpha_whenShadeIsExpandedEmitsNull() = testScope.runTest { val dismissAlpha by collectLastValue(underTest.dismissAlpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, testScope, ) repository.setStatusBarState(StatusBarState.SHADE_LOCKED) shadeRepository.setQsExpansion(1f) repository.setKeyguardDismissible(false) assertThat(dismissAlpha).isNull() repository.setKeyguardDismissible(true) assertThat(dismissAlpha).isNull() } @Test fun animationDozingTransitions() = testScope.runTest { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt +84 −26 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository 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.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.util.mockito.whenever Loading @@ -42,49 +44,69 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidJUnit4::class) class AodAlphaViewModelTest : SysuiTestCase() { @Mock private lateinit var occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel @Mock private lateinit var goneToAodTransitionViewModel: GoneToAodTransitionViewModel private val kosmos = testKosmos() private val testScope = kosmos.testScope private val keyguardRepository = kosmos.fakeKeyguardRepository private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private val occludedToLockscreenAlpha = MutableStateFlow(0f) private lateinit var underTest: AodAlphaViewModel private val enterFromTopAnimationAlpha = MutableStateFlow(0f) @Before fun setUp() { MockitoAnnotations.initMocks(this) whenever(occludedToLockscreenTransitionViewModel.lockscreenAlpha) .thenReturn(occludedToLockscreenAlpha) kosmos.occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel whenever(goneToAodTransitionViewModel.enterFromTopAnimationAlpha) .thenReturn(enterFromTopAnimationAlpha) kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel underTest = kosmos.aodAlphaViewModel } @Test fun alpha() = fun alpha_WhenGoneToAod() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.OFF, to = KeyguardState.LOCKSCREEN, from = KeyguardState.AOD, to = KeyguardState.GONE, testScope = testScope, ) assertThat(alpha).isEqualTo(0f) keyguardRepository.setKeyguardAlpha(0.1f) assertThat(alpha).isEqualTo(0.1f) keyguardRepository.setKeyguardAlpha(0.5f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.GONE, to = KeyguardState.AOD, testScope = testScope, ) enterFromTopAnimationAlpha.value = 0.5f assertThat(alpha).isEqualTo(0.5f) keyguardRepository.setKeyguardAlpha(0.2f) assertThat(alpha).isEqualTo(0.2f) keyguardRepository.setKeyguardAlpha(0f) enterFromTopAnimationAlpha.value = 1f assertThat(alpha).isEqualTo(1f) } @Test fun alpha_WhenGoneToDozing() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.GONE, testScope = testScope, ) assertThat(alpha).isEqualTo(0f) occludedToLockscreenAlpha.value = 0.8f assertThat(alpha).isEqualTo(0.8f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.GONE, to = KeyguardState.DOZING, testScope = testScope, ) assertThat(alpha).isEqualTo(1f) } @Test Loading @@ -92,17 +114,53 @@ class AodAlphaViewModelTest : SysuiTestCase() { testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionSteps( keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, testScope = testScope, transitionState = TransitionState.STARTED, ) ) assertThat(alpha).isNull() keyguardRepository.setKeyguardAlpha(0.1f) assertThat(alpha).isEqualTo(0f) keyguardRepository.setKeyguardAlpha(0.5f) assertThat(alpha).isEqualTo(0f) keyguardRepository.setKeyguardAlpha(1f) keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, transitionState = TransitionState.RUNNING, value = 0.5f, ) ) assertThat(alpha).isNull() keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, transitionState = TransitionState.RUNNING, value = 1f, ) ) assertThat(alpha).isEqualTo(0f) } @Test fun enterFromTopAlpha() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.GONE, to = KeyguardState.AOD, transitionState = TransitionState.STARTED, ) ) enterFromTopAnimationAlpha.value = 0.2f assertThat(alpha).isEqualTo(0.2f) enterFromTopAnimationAlpha.value = 1f assertThat(alpha).isEqualTo(1f) } } packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt +0 −15 Original line number Diff line number Diff line Loading @@ -65,7 +65,6 @@ class AodBurnInViewModelTest : SysuiTestCase() { clockControllerProvider = { clockController }, ) private val burnInFlow = MutableStateFlow(BurnInModel()) private val enterFromTopAnimationAlpha = MutableStateFlow(0f) @Before fun setUp() { Loading @@ -74,8 +73,6 @@ class AodBurnInViewModelTest : SysuiTestCase() { MockitoAnnotations.initMocks(this) whenever(burnInInteractor.keyguardBurnIn).thenReturn(burnInFlow) kosmos.burnInInteractor = burnInInteractor whenever(goneToAodTransitionViewModel.enterFromTopAnimationAlpha) .thenReturn(enterFromTopAnimationAlpha) whenever(goneToAodTransitionViewModel.enterFromTopTranslationY(anyInt())) .thenReturn(emptyFlow()) kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel Loading Loading @@ -278,16 +275,4 @@ class AodBurnInViewModelTest : SysuiTestCase() { assertThat(translationY).isEqualTo(0) assertThat(scale).isEqualTo(BurnInScaleViewModel(scale = 0.5f, scaleClockOnly = false)) } @Test fun alpha() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) enterFromTopAnimationAlpha.value = 0.2f assertThat(alpha).isEqualTo(0.2f) enterFromTopAnimationAlpha.value = 1f assertThat(alpha).isEqualTo(1f) } } packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt +9 −2 Original line number Diff line number Diff line Loading @@ -255,14 +255,21 @@ class KeyguardRootViewModelTest : SysuiTestCase() { testScope.runTest { val alpha by collectLastValue(underTest.alpha(viewState)) // Default value check assertThat(alpha).isEqualTo(1f) // Hub transition state is idle with hub open. communalRepository.setTransitionState( flowOf(ObservableCommunalTransitionState.Idle(CommunalSceneKey.Communal)) ) runCurrent() // Set keyguard alpha to 1.0f. keyguardInteractor.setAlpha(1.0f) // Run at least 1 transition to make sure value remains at 0 keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, testScope, ) // Alpha property remains 0 regardless. assertThat(alpha).isEqualTo(0f) Loading Loading
packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/modifier/BurnInModifiers.kt +0 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ fun Modifier.burnInAware( ): Modifier { val translationX by viewModel.translationX(params).collectAsState(initial = 0f) val translationY by viewModel.translationY(params).collectAsState(initial = 0f) val alpha by viewModel.alpha.collectAsState(initial = 1f) val scaleViewModel by viewModel.scale(params).collectAsState(initial = BurnInScaleViewModel()) return this.graphicsLayer { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +49 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,10 @@ 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.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractorFactory import com.android.systemui.scene.domain.interactor.sceneInteractor Loading Loading @@ -56,11 +59,10 @@ class KeyguardInteractorTest : SysuiTestCase() { private val testScope = kosmos.testScope private val repository by lazy { kosmos.fakeKeyguardRepository } private val sceneInteractor by lazy { kosmos.sceneInteractor } private val commandQueue by lazy { FakeCommandQueue() } private val commandQueue by lazy { FakeCommandQueue() } private val bouncerRepository = FakeKeyguardBouncerRepository() private val shadeRepository = FakeShadeRepository() private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private val transitionState: MutableStateFlow<ObservableTransitionState> = MutableStateFlow(ObservableTransitionState.Idle(SceneKey.Gone)) Loading @@ -73,6 +75,7 @@ class KeyguardInteractorTest : SysuiTestCase() { bouncerRepository = bouncerRepository, configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()), shadeRepository = shadeRepository, keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor, sceneInteractorProvider = { sceneInteractor }, ) } Loading Loading @@ -187,6 +190,49 @@ class KeyguardInteractorTest : SysuiTestCase() { assertThat(secureCameraActive()).isFalse() } @Test fun dismissAlpha() = testScope.runTest { val dismissAlpha by collectLastValue(underTest.dismissAlpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, testScope, ) repository.setStatusBarState(StatusBarState.KEYGUARD) shadeRepository.setLegacyShadeExpansion(1f) // When not dismissable, no alpha value (null) should emit repository.setKeyguardDismissible(false) assertThat(dismissAlpha).isNull() repository.setKeyguardDismissible(true) assertThat(dismissAlpha).isGreaterThan(0.95f) } @Test fun dismissAlpha_whenShadeIsExpandedEmitsNull() = testScope.runTest { val dismissAlpha by collectLastValue(underTest.dismissAlpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, testScope, ) repository.setStatusBarState(StatusBarState.SHADE_LOCKED) shadeRepository.setQsExpansion(1f) repository.setKeyguardDismissible(false) assertThat(dismissAlpha).isNull() repository.setKeyguardDismissible(true) assertThat(dismissAlpha).isNull() } @Test fun animationDozingTransitions() = testScope.runTest { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt +84 −26 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.android.systemui.coroutines.collectLastValue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository 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.kosmos.testScope import com.android.systemui.testKosmos import com.android.systemui.util.mockito.whenever Loading @@ -42,49 +44,69 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidJUnit4::class) class AodAlphaViewModelTest : SysuiTestCase() { @Mock private lateinit var occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel @Mock private lateinit var goneToAodTransitionViewModel: GoneToAodTransitionViewModel private val kosmos = testKosmos() private val testScope = kosmos.testScope private val keyguardRepository = kosmos.fakeKeyguardRepository private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository private val occludedToLockscreenAlpha = MutableStateFlow(0f) private lateinit var underTest: AodAlphaViewModel private val enterFromTopAnimationAlpha = MutableStateFlow(0f) @Before fun setUp() { MockitoAnnotations.initMocks(this) whenever(occludedToLockscreenTransitionViewModel.lockscreenAlpha) .thenReturn(occludedToLockscreenAlpha) kosmos.occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel whenever(goneToAodTransitionViewModel.enterFromTopAnimationAlpha) .thenReturn(enterFromTopAnimationAlpha) kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel underTest = kosmos.aodAlphaViewModel } @Test fun alpha() = fun alpha_WhenGoneToAod() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.OFF, to = KeyguardState.LOCKSCREEN, from = KeyguardState.AOD, to = KeyguardState.GONE, testScope = testScope, ) assertThat(alpha).isEqualTo(0f) keyguardRepository.setKeyguardAlpha(0.1f) assertThat(alpha).isEqualTo(0.1f) keyguardRepository.setKeyguardAlpha(0.5f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.GONE, to = KeyguardState.AOD, testScope = testScope, ) enterFromTopAnimationAlpha.value = 0.5f assertThat(alpha).isEqualTo(0.5f) keyguardRepository.setKeyguardAlpha(0.2f) assertThat(alpha).isEqualTo(0.2f) keyguardRepository.setKeyguardAlpha(0f) enterFromTopAnimationAlpha.value = 1f assertThat(alpha).isEqualTo(1f) } @Test fun alpha_WhenGoneToDozing() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.GONE, testScope = testScope, ) assertThat(alpha).isEqualTo(0f) occludedToLockscreenAlpha.value = 0.8f assertThat(alpha).isEqualTo(0.8f) keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.GONE, to = KeyguardState.DOZING, testScope = testScope, ) assertThat(alpha).isEqualTo(1f) } @Test Loading @@ -92,17 +114,53 @@ class AodAlphaViewModelTest : SysuiTestCase() { testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionSteps( keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, testScope = testScope, transitionState = TransitionState.STARTED, ) ) assertThat(alpha).isNull() keyguardRepository.setKeyguardAlpha(0.1f) assertThat(alpha).isEqualTo(0f) keyguardRepository.setKeyguardAlpha(0.5f) assertThat(alpha).isEqualTo(0f) keyguardRepository.setKeyguardAlpha(1f) keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, transitionState = TransitionState.RUNNING, value = 0.5f, ) ) assertThat(alpha).isNull() keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.LOCKSCREEN, to = KeyguardState.GONE, transitionState = TransitionState.RUNNING, value = 1f, ) ) assertThat(alpha).isEqualTo(0f) } @Test fun enterFromTopAlpha() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) keyguardTransitionRepository.sendTransitionStep( TransitionStep( from = KeyguardState.GONE, to = KeyguardState.AOD, transitionState = TransitionState.STARTED, ) ) enterFromTopAnimationAlpha.value = 0.2f assertThat(alpha).isEqualTo(0.2f) enterFromTopAnimationAlpha.value = 1f assertThat(alpha).isEqualTo(1f) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt +0 −15 Original line number Diff line number Diff line Loading @@ -65,7 +65,6 @@ class AodBurnInViewModelTest : SysuiTestCase() { clockControllerProvider = { clockController }, ) private val burnInFlow = MutableStateFlow(BurnInModel()) private val enterFromTopAnimationAlpha = MutableStateFlow(0f) @Before fun setUp() { Loading @@ -74,8 +73,6 @@ class AodBurnInViewModelTest : SysuiTestCase() { MockitoAnnotations.initMocks(this) whenever(burnInInteractor.keyguardBurnIn).thenReturn(burnInFlow) kosmos.burnInInteractor = burnInInteractor whenever(goneToAodTransitionViewModel.enterFromTopAnimationAlpha) .thenReturn(enterFromTopAnimationAlpha) whenever(goneToAodTransitionViewModel.enterFromTopTranslationY(anyInt())) .thenReturn(emptyFlow()) kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel Loading Loading @@ -278,16 +275,4 @@ class AodBurnInViewModelTest : SysuiTestCase() { assertThat(translationY).isEqualTo(0) assertThat(scale).isEqualTo(BurnInScaleViewModel(scale = 0.5f, scaleClockOnly = false)) } @Test fun alpha() = testScope.runTest { val alpha by collectLastValue(underTest.alpha) enterFromTopAnimationAlpha.value = 0.2f assertThat(alpha).isEqualTo(0.2f) enterFromTopAnimationAlpha.value = 1f assertThat(alpha).isEqualTo(1f) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt +9 −2 Original line number Diff line number Diff line Loading @@ -255,14 +255,21 @@ class KeyguardRootViewModelTest : SysuiTestCase() { testScope.runTest { val alpha by collectLastValue(underTest.alpha(viewState)) // Default value check assertThat(alpha).isEqualTo(1f) // Hub transition state is idle with hub open. communalRepository.setTransitionState( flowOf(ObservableCommunalTransitionState.Idle(CommunalSceneKey.Communal)) ) runCurrent() // Set keyguard alpha to 1.0f. keyguardInteractor.setAlpha(1.0f) // Run at least 1 transition to make sure value remains at 0 keyguardTransitionRepository.sendTransitionSteps( from = KeyguardState.AOD, to = KeyguardState.LOCKSCREEN, testScope, ) // Alpha property remains 0 regardless. assertThat(alpha).isEqualTo(0f) Loading