Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c98c6291 authored by Matt Pietal's avatar Matt Pietal
Browse files

Transitions: PRIMARY_BOUNCER -> GONE notification scrim

The scrim was incorrectly being left with an alpha of 1f. Make sure
this gets set to 0f to prevent blocking launcher.

Also, when launching animations from keyguard, the bouncer was still
animating away. This seems to have regressed in QPR2. Restore
functionality to hide bouncer immediately so the animation can proceed
from keyguard.

Fixes: 274285526
Test: atest PrimaryBouncerToGoneTransitionViewModelTest
Change-Id: I3d298e037305abdd9479cae2250e3fc945cc7a9a
parent e186eb93
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -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)
+1 −3
Original line number Original line Diff line number Diff line
@@ -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,
+44 −29
Original line number Original line Diff line number Diff line
@@ -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)
    }
    }
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -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()
        }
        }