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

Commit 9b08fcb5 authored by Chandru S's avatar Chandru S
Browse files

Use the default message as the primary line for fp/face acquisition messages

Also, stop animating the messages to avoid the flicker for fp/face acquisition messages/primary auth lockout messages.

Fixes: 293476712
Test: verified manually
Test: atest BouncerMessageFactoryTest
Test: atest BouncerMessageInteractorTest
Change-Id: I5539cdaf843de9a1d4a67797a2eb70eed9b6e0d2
parent 42f70e51
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ constructor(
    fun createFromPromptReason(
        @BouncerPromptReason reason: Int,
        userId: Int,
        secondaryMsgOverride: String? = null
    ): BouncerMessageModel? {
        val pair =
            getBouncerMessage(
@@ -102,21 +103,16 @@ constructor(
            )
        return pair?.let {
            BouncerMessageModel(
                message = Message(messageResId = pair.first),
                secondaryMessage = Message(messageResId = pair.second)
                message = Message(messageResId = pair.first, animate = false),
                secondaryMessage =
                    secondaryMsgOverride?.let {
                        Message(message = secondaryMsgOverride, animate = false)
                    }
                        ?: Message(messageResId = pair.second, animate = false)
            )
        }
    }

    fun createFromString(
        primaryMsg: String? = null,
        secondaryMsg: String? = null
    ): BouncerMessageModel =
        BouncerMessageModel(
            message = primaryMsg?.let { Message(message = it) },
            secondaryMessage = secondaryMsg?.let { Message(message = it) },
        )

    /**
     * Helper method that provides the relevant bouncer message that should be shown for different
     * scenarios indicated by [reason]. [securityMode] & [fpAllowedInBouncer] parameters are used to
@@ -159,6 +155,9 @@ constructor(
            else -> null
        }
    }

    fun emptyMessage(): BouncerMessageModel =
        BouncerMessageModel(Message(message = ""), Message(message = ""))
}

@Retention(AnnotationRetention.SOURCE)
+16 −5
Original line number Diff line number Diff line
@@ -86,7 +86,11 @@ constructor(

        repository.setFingerprintAcquisitionMessage(
            if (value != null) {
                factory.createFromString(secondaryMsg = value)
                factory.createFromPromptReason(
                    PROMPT_REASON_DEFAULT,
                    userRepository.getSelectedUserInfo().id,
                    secondaryMsgOverride = value
                )
            } else {
                null
            }
@@ -98,7 +102,11 @@ constructor(

        repository.setFaceAcquisitionMessage(
            if (value != null) {
                factory.createFromString(secondaryMsg = value)
                factory.createFromPromptReason(
                    PROMPT_REASON_DEFAULT,
                    userRepository.getSelectedUserInfo().id,
                    secondaryMsgOverride = value
                )
            } else {
                null
            }
@@ -110,7 +118,11 @@ constructor(

        repository.setCustomMessage(
            if (value != null) {
                factory.createFromString(secondaryMsg = value)
                factory.createFromPromptReason(
                    PROMPT_REASON_DEFAULT,
                    userRepository.getSelectedUserInfo().id,
                    secondaryMsgOverride = value
                )
            } else {
                null
            }
@@ -140,8 +152,7 @@ constructor(
    // always maps to an empty string.
    private fun nullOrEmptyMessage() =
        flowOf(
            if (featureFlags.isEnabled(REVAMPED_BOUNCER_MESSAGES)) null
            else factory.createFromString("", "")
            if (featureFlags.isEnabled(REVAMPED_BOUNCER_MESSAGES)) null else factory.emptyMessage()
        )

    val bouncerMessage =
+23 −2
Original line number Diff line number Diff line
@@ -77,6 +77,22 @@ class BouncerMessageFactoryTest : SysuiTestCase() {
                .isEqualTo("Unlock with pattern or fingerprint")
        }

    @Test
    fun bouncerMessages_overridesSecondaryMessageValue() =
        testScope.runTest {
            val bouncerMessageModel =
                bouncerMessageModel(
                    PIN,
                    true,
                    PROMPT_REASON_DEFAULT,
                    secondaryMessageOverride = "face acquisition message"
                )!!
            assertThat(context.resources.getString(bouncerMessageModel.message!!.messageResId!!))
                .isEqualTo("Unlock with PIN or fingerprint")
            assertThat(bouncerMessageModel.secondaryMessage!!.message!!)
                .isEqualTo("face acquisition message")
        }

    @Test
    fun bouncerMessages_setsPrimaryAndSecondaryMessage_basedOnSecurityModeAndFpAllowedInBouncer() =
        testScope.runTest {
@@ -149,11 +165,16 @@ class BouncerMessageFactoryTest : SysuiTestCase() {
    private fun bouncerMessageModel(
        mode: KeyguardSecurityModel.SecurityMode,
        fpAllowedInBouncer: Boolean,
        reason: Int
        reason: Int,
        secondaryMessageOverride: String? = null,
    ): BouncerMessageModel? {
        whenever(securityModel.getSecurityMode(0)).thenReturn(mode)
        whenever(updateMonitor.isFingerprintAllowedInBouncer).thenReturn(fpAllowedInBouncer)

        return underTest.createFromPromptReason(reason, 0)
        return underTest.createFromPromptReason(
            reason,
            0,
            secondaryMsgOverride = secondaryMessageOverride
        )
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -363,8 +363,8 @@ class BouncerMessageRepositoryTest : SysuiTestCase() {

    private fun message(primaryResId: Int, secondaryResId: Int): BouncerMessageModel {
        return BouncerMessageModel(
            message = Message(messageResId = primaryResId),
            secondaryMessage = Message(messageResId = secondaryResId)
            message = Message(messageResId = primaryResId, animate = false),
            secondaryMessage = Message(messageResId = secondaryResId, animate = false)
        )
    }
    private fun message(value: String): BouncerMessageModel {
+18 −9
Original line number Diff line number Diff line
@@ -150,11 +150,12 @@ class BouncerMessageInteractorTest : SysuiTestCase() {

            underTest.setCustomMessage("not empty")

            assertThat(repository.customMessage.value)
                .isEqualTo(BouncerMessageModel(secondaryMessage = Message(message = "not empty")))
            val customMessage = repository.customMessage
            assertThat(customMessage.value!!.message!!.messageResId).isEqualTo(keyguard_enter_pin)
            assertThat(customMessage.value!!.secondaryMessage!!.message).isEqualTo("not empty")

            underTest.setCustomMessage(null)
            assertThat(repository.customMessage.value).isNull()
            assertThat(customMessage.value).isNull()
        }

    @Test
@@ -164,11 +165,15 @@ class BouncerMessageInteractorTest : SysuiTestCase() {

            underTest.setFaceAcquisitionMessage("not empty")

            assertThat(repository.faceAcquisitionMessage.value)
                .isEqualTo(BouncerMessageModel(secondaryMessage = Message(message = "not empty")))
            val faceAcquisitionMessage = repository.faceAcquisitionMessage

            assertThat(faceAcquisitionMessage.value!!.message!!.messageResId)
                .isEqualTo(keyguard_enter_pin)
            assertThat(faceAcquisitionMessage.value!!.secondaryMessage!!.message)
                .isEqualTo("not empty")

            underTest.setFaceAcquisitionMessage(null)
            assertThat(repository.faceAcquisitionMessage.value).isNull()
            assertThat(faceAcquisitionMessage.value).isNull()
        }

    @Test
@@ -178,11 +183,15 @@ class BouncerMessageInteractorTest : SysuiTestCase() {

            underTest.setFingerprintAcquisitionMessage("not empty")

            assertThat(repository.fingerprintAcquisitionMessage.value)
                .isEqualTo(BouncerMessageModel(secondaryMessage = Message(message = "not empty")))
            val fingerprintAcquisitionMessage = repository.fingerprintAcquisitionMessage

            assertThat(fingerprintAcquisitionMessage.value!!.message!!.messageResId)
                .isEqualTo(keyguard_enter_pin)
            assertThat(fingerprintAcquisitionMessage.value!!.secondaryMessage!!.message)
                .isEqualTo("not empty")

            underTest.setFingerprintAcquisitionMessage(null)
            assertThat(repository.fingerprintAcquisitionMessage.value).isNull()
            assertThat(fingerprintAcquisitionMessage.value).isNull()
        }

    @Test