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

Commit 58adf1e1 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Merge "Hide the alternate bouncer on device unlocked" into tm-qpr-dev...

Merge "Merge "Hide the alternate bouncer on device unlocked" into tm-qpr-dev am: 8eb543ff am: 18e88890" into udc-dev am: b79b5966 am: 0879a2d4

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



Change-Id: Iccbe6a0ce802c3d78eea42ebda86e77ecd7f4f9e
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 08392209 0879a2d4
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -49,6 +49,17 @@ constructor(
    var receivedDownTouch = false
    val isVisible: Flow<Boolean> = bouncerRepository.alternateBouncerVisible

    private val keyguardStateControllerCallback: KeyguardStateController.Callback =
        object : KeyguardStateController.Callback {
            override fun onUnlockedChanged() {
                maybeHide()
            }
        }

    init {
        keyguardStateController.addCallback(keyguardStateControllerCallback)
    }

    /**
     * Sets the correct bouncer states to show the alternate bouncer if it can show.
     *
@@ -129,6 +140,12 @@ constructor(
        }
    }

    private fun maybeHide() {
        if (isVisibleState() && !canShowAlternateBouncerForFingerprint()) {
            hide()
        }
    }

    companion object {
        private const val MIN_VISIBILITY_DURATION_UNTIL_TOUCHES_DISMISS_ALTERNATE_BOUNCER_MS = 200L
        private const val NOT_VISIBLE = -1L
+38 −0
Original line number Diff line number Diff line
@@ -39,8 +39,10 @@ import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations

@OptIn(ExperimentalCoroutinesApi::class)
@@ -169,6 +171,42 @@ class AlternateBouncerInteractorTest : SysuiTestCase() {
        assertFalse(bouncerRepository.alternateBouncerVisible.value)
    }

    @Test
    fun onUnlockedIsFalse_doesNotHide() {
        // GIVEN alternate bouncer is showing
        bouncerRepository.setAlternateVisible(true)

        val keyguardStateControllerCallbackCaptor =
            ArgumentCaptor.forClass(KeyguardStateController.Callback::class.java)
        verify(keyguardStateController).addCallback(keyguardStateControllerCallbackCaptor.capture())

        // WHEN isUnlocked=false
        givenCanShowAlternateBouncer()
        whenever(keyguardStateController.isUnlocked).thenReturn(false)
        keyguardStateControllerCallbackCaptor.value.onUnlockedChanged()

        // THEN the alternate bouncer is still visible
        assertTrue(bouncerRepository.alternateBouncerVisible.value)
    }

    @Test
    fun onUnlockedChangedIsTrue_hide() {
        // GIVEN alternate bouncer is showing
        bouncerRepository.setAlternateVisible(true)

        val keyguardStateControllerCallbackCaptor =
            ArgumentCaptor.forClass(KeyguardStateController.Callback::class.java)
        verify(keyguardStateController).addCallback(keyguardStateControllerCallbackCaptor.capture())

        // WHEN isUnlocked=true
        givenCanShowAlternateBouncer()
        whenever(keyguardStateController.isUnlocked).thenReturn(true)
        keyguardStateControllerCallbackCaptor.value.onUnlockedChanged()

        // THEN the alternate bouncer is hidden
        assertFalse(bouncerRepository.alternateBouncerVisible.value)
    }

    private fun givenCanShowAlternateBouncer() {
        bouncerRepository.setAlternateBouncerUIAvailable(true)
        biometricSettingsRepository.setFingerprintEnrolled(true)