Merge "Transitions: PRIMARY_BOUNCER -> GONE notification scrim" into tm-qpr-dev am: 9d91f4d3a0

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22180292

Change-Id: Ied033163d024c444006375df8330feb6847704fb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Matt Pietal
2023-03-22 16:14:44 +00:00
committed by Automerger Merge Worker
4 changed files with 50 additions and 33 deletions

View File

@@ -309,6 +309,10 @@ constructor(
/** Tell the bouncer to start the pre hide animation. */ /** Tell the bouncer to start the pre hide animation. */
fun startDisappearAnimation(runnable: Runnable) { fun startDisappearAnimation(runnable: Runnable) {
if (willRunDismissFromKeyguard()) {
runnable.run()
return
}
val finishRunnable = Runnable { val finishRunnable = Runnable {
runnable.run() runnable.run()
repository.setPrimaryStartDisappearAnimation(null) repository.setPrimaryStartDisappearAnimation(null)

View File

@@ -81,9 +81,7 @@ constructor(
) )
.map { .map {
if (willRunDismissFromKeyguard) { if (willRunDismissFromKeyguard) {
ScrimAlpha( ScrimAlpha()
notificationsAlpha = 1f,
)
} else if (leaveShadeOpen) { } else if (leaveShadeOpen) {
ScrimAlpha( ScrimAlpha(
behindAlpha = 1f, behindAlpha = 1f,

View File

@@ -39,6 +39,7 @@ import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.whenever
import com.android.systemui.utils.os.FakeHandler import com.android.systemui.utils.os.FakeHandler
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import org.junit.Before import org.junit.Before
@@ -50,7 +51,6 @@ import org.mockito.Mock
import org.mockito.Mockito.mock import org.mockito.Mockito.mock
import org.mockito.Mockito.never import org.mockito.Mockito.never
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@@ -90,9 +90,9 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
keyguardUpdateMonitor, keyguardUpdateMonitor,
keyguardBypassController, keyguardBypassController,
) )
`when`(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null)
`when`(repository.primaryBouncerShow.value).thenReturn(false) whenever(repository.primaryBouncerShow.value).thenReturn(false)
`when`(bouncerView.delegate).thenReturn(bouncerViewDelegate) whenever(bouncerView.delegate).thenReturn(bouncerViewDelegate)
resources = context.orCreateTestableResources resources = context.orCreateTestableResources
} }
@@ -118,7 +118,7 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
@Test @Test
fun testShow_keyguardIsDone() { fun testShow_keyguardIsDone() {
`when`(bouncerView.delegate?.showNextSecurityScreenOrFinish()).thenReturn(true) whenever(bouncerView.delegate?.showNextSecurityScreenOrFinish()).thenReturn(true)
verify(keyguardStateController, never()).notifyPrimaryBouncerShowing(true) verify(keyguardStateController, never()).notifyPrimaryBouncerShowing(true)
verify(mPrimaryBouncerCallbackInteractor, never()).dispatchStartingToShow() verify(mPrimaryBouncerCallbackInteractor, never()).dispatchStartingToShow()
} }
@@ -135,7 +135,7 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
@Test @Test
fun testExpansion() { fun testExpansion() {
`when`(repository.panelExpansionAmount.value).thenReturn(0.5f) whenever(repository.panelExpansionAmount.value).thenReturn(0.5f)
underTest.setPanelExpansion(0.6f) underTest.setPanelExpansion(0.6f)
verify(repository).setPanelExpansion(0.6f) verify(repository).setPanelExpansion(0.6f)
verify(mPrimaryBouncerCallbackInteractor).dispatchExpansionChanged(0.6f) verify(mPrimaryBouncerCallbackInteractor).dispatchExpansionChanged(0.6f)
@@ -143,8 +143,8 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
@Test @Test
fun testExpansion_fullyShown() { fun testExpansion_fullyShown() {
`when`(repository.panelExpansionAmount.value).thenReturn(0.5f) whenever(repository.panelExpansionAmount.value).thenReturn(0.5f)
`when`(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null)
underTest.setPanelExpansion(EXPANSION_VISIBLE) underTest.setPanelExpansion(EXPANSION_VISIBLE)
verify(falsingCollector).onBouncerShown() verify(falsingCollector).onBouncerShown()
verify(mPrimaryBouncerCallbackInteractor).dispatchFullyShown() verify(mPrimaryBouncerCallbackInteractor).dispatchFullyShown()
@@ -152,8 +152,8 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
@Test @Test
fun testExpansion_fullyHidden() { fun testExpansion_fullyHidden() {
`when`(repository.panelExpansionAmount.value).thenReturn(0.5f) whenever(repository.panelExpansionAmount.value).thenReturn(0.5f)
`when`(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null)
underTest.setPanelExpansion(EXPANSION_HIDDEN) underTest.setPanelExpansion(EXPANSION_HIDDEN)
verify(repository).setPrimaryShow(false) verify(repository).setPrimaryShow(false)
verify(falsingCollector).onBouncerHidden() verify(falsingCollector).onBouncerHidden()
@@ -163,7 +163,7 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
@Test @Test
fun testExpansion_startingToHide() { fun testExpansion_startingToHide() {
`when`(repository.panelExpansionAmount.value).thenReturn(EXPANSION_VISIBLE) whenever(repository.panelExpansionAmount.value).thenReturn(EXPANSION_VISIBLE)
underTest.setPanelExpansion(0.1f) underTest.setPanelExpansion(0.1f)
verify(repository).setPrimaryStartingToHide(true) verify(repository).setPrimaryStartingToHide(true)
verify(mPrimaryBouncerCallbackInteractor).dispatchStartingToHide() verify(mPrimaryBouncerCallbackInteractor).dispatchStartingToHide()
@@ -228,7 +228,21 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
} }
@Test @Test
fun testStartDisappearAnimation() { fun testStartDisappearAnimation_willRunDismissFromKeyguard() {
whenever(bouncerViewDelegate.willRunDismissFromKeyguard()).thenReturn(true)
val runnable = mock(Runnable::class.java)
underTest.startDisappearAnimation(runnable)
// End runnable should run immediately
verify(runnable).run()
// ... while the disappear animation should never be run
verify(repository, never()).setPrimaryStartDisappearAnimation(any(Runnable::class.java))
}
@Test
fun testStartDisappearAnimation_willNotRunDismissFromKeyguard_() {
whenever(bouncerViewDelegate.willRunDismissFromKeyguard()).thenReturn(false)
val runnable = mock(Runnable::class.java) val runnable = mock(Runnable::class.java)
underTest.startDisappearAnimation(runnable) underTest.startDisappearAnimation(runnable)
verify(repository).setPrimaryStartDisappearAnimation(any(Runnable::class.java)) verify(repository).setPrimaryStartDisappearAnimation(any(Runnable::class.java))
@@ -236,45 +250,45 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
@Test @Test
fun testIsFullShowing() { fun testIsFullShowing() {
`when`(repository.primaryBouncerShow.value).thenReturn(true) whenever(repository.primaryBouncerShow.value).thenReturn(true)
`when`(repository.panelExpansionAmount.value).thenReturn(EXPANSION_VISIBLE) whenever(repository.panelExpansionAmount.value).thenReturn(EXPANSION_VISIBLE)
`when`(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null)
assertThat(underTest.isFullyShowing()).isTrue() assertThat(underTest.isFullyShowing()).isTrue()
`when`(repository.primaryBouncerShow.value).thenReturn(false) whenever(repository.primaryBouncerShow.value).thenReturn(false)
assertThat(underTest.isFullyShowing()).isFalse() assertThat(underTest.isFullyShowing()).isFalse()
} }
@Test @Test
fun testIsScrimmed() { fun testIsScrimmed() {
`when`(repository.primaryBouncerScrimmed.value).thenReturn(true) whenever(repository.primaryBouncerScrimmed.value).thenReturn(true)
assertThat(underTest.isScrimmed()).isTrue() assertThat(underTest.isScrimmed()).isTrue()
`when`(repository.primaryBouncerScrimmed.value).thenReturn(false) whenever(repository.primaryBouncerScrimmed.value).thenReturn(false)
assertThat(underTest.isScrimmed()).isFalse() assertThat(underTest.isScrimmed()).isFalse()
} }
@Test @Test
fun testIsInTransit() { fun testIsInTransit() {
`when`(repository.primaryBouncerShowingSoon.value).thenReturn(true) whenever(repository.primaryBouncerShowingSoon.value).thenReturn(true)
assertThat(underTest.isInTransit()).isTrue() assertThat(underTest.isInTransit()).isTrue()
`when`(repository.primaryBouncerShowingSoon.value).thenReturn(false) whenever(repository.primaryBouncerShowingSoon.value).thenReturn(false)
assertThat(underTest.isInTransit()).isFalse() assertThat(underTest.isInTransit()).isFalse()
`when`(repository.panelExpansionAmount.value).thenReturn(0.5f) whenever(repository.panelExpansionAmount.value).thenReturn(0.5f)
assertThat(underTest.isInTransit()).isTrue() assertThat(underTest.isInTransit()).isTrue()
} }
@Test @Test
fun testIsAnimatingAway() { fun testIsAnimatingAway() {
`when`(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(Runnable {}) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(Runnable {})
assertThat(underTest.isAnimatingAway()).isTrue() assertThat(underTest.isAnimatingAway()).isTrue()
`when`(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null) whenever(repository.primaryBouncerStartingDisappearAnimation.value).thenReturn(null)
assertThat(underTest.isAnimatingAway()).isFalse() assertThat(underTest.isAnimatingAway()).isFalse()
} }
@Test @Test
fun testWillDismissWithAction() { fun testWillDismissWithAction() {
`when`(bouncerViewDelegate.willDismissWithActions()).thenReturn(true) whenever(bouncerViewDelegate.willDismissWithActions()).thenReturn(true)
assertThat(underTest.willDismissWithAction()).isTrue() assertThat(underTest.willDismissWithAction()).isTrue()
`when`(bouncerViewDelegate.willDismissWithActions()).thenReturn(false) whenever(bouncerViewDelegate.willDismissWithActions()).thenReturn(false)
assertThat(underTest.willDismissWithAction()).isFalse() assertThat(underTest.willDismissWithAction()).isFalse()
} }
@@ -363,12 +377,13 @@ class PrimaryBouncerInteractorTest : SysuiTestCase() {
isUnlockingWithFpAllowed: Boolean, isUnlockingWithFpAllowed: Boolean,
isAnimatingAway: Boolean isAnimatingAway: Boolean
) { ) {
`when`(repository.primaryBouncerShow.value).thenReturn(isVisible) whenever(repository.primaryBouncerShow.value).thenReturn(isVisible)
resources.addOverride(R.bool.config_show_sidefps_hint_on_bouncer, sfpsEnabled) resources.addOverride(R.bool.config_show_sidefps_hint_on_bouncer, sfpsEnabled)
`when`(keyguardUpdateMonitor.isFingerprintDetectionRunning).thenReturn(fpsDetectionRunning) whenever(keyguardUpdateMonitor.isFingerprintDetectionRunning)
`when`(keyguardUpdateMonitor.isUnlockingWithFingerprintAllowed) .thenReturn(fpsDetectionRunning)
whenever(keyguardUpdateMonitor.isUnlockingWithFingerprintAllowed)
.thenReturn(isUnlockingWithFpAllowed) .thenReturn(isUnlockingWithFpAllowed)
`when`(repository.primaryBouncerStartingDisappearAnimation.value) whenever(repository.primaryBouncerStartingDisappearAnimation.value)
.thenReturn(if (isAnimatingAway) Runnable {} else null) .thenReturn(if (isAnimatingAway) Runnable {} else null)
} }
} }

View File

@@ -115,7 +115,7 @@ class PrimaryBouncerToGoneTransitionViewModelTest : SysuiTestCase() {
repository.sendTransitionStep(step(1f)) repository.sendTransitionStep(step(1f))
assertThat(values.size).isEqualTo(4) assertThat(values.size).isEqualTo(4)
values.forEach { assertThat(it).isEqualTo(ScrimAlpha(notificationsAlpha = 1f)) } values.forEach { assertThat(it).isEqualTo(ScrimAlpha()) }
job.cancel() job.cancel()
} }