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

Commit 0445405f authored by Joe Bolinger's avatar Joe Bolinger Committed by Automerger Merge Worker
Browse files

Merge "Port commit I5d2669b0f234f3707085369d253fab5868b4218f from legacy...

Merge "Port commit I5d2669b0f234f3707085369d253fab5868b4218f from legacy prompt to new prompt." into udc-d1-dev am: a1783404 am: ae2a10da am: 77b7d2ad

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



Change-Id: I65f731ff63863502dd045a257355e6b09a70fd26
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents dfffaa47 77b7d2ad
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -339,7 +339,13 @@ object BiometricViewBinder {

                            launch {
                                delay(authState.delay)
                                legacyCallback.onAction(Callback.ACTION_AUTHENTICATED)
                                legacyCallback.onAction(
                                    if (authState.isAuthenticatedAndExplicitlyConfirmed) {
                                        Callback.ACTION_AUTHENTICATED_AND_CONFIRMED
                                    } else {
                                        Callback.ACTION_AUTHENTICATED
                                    }
                                )
                            }
                        }
                    }
+17 −7
Original line number Diff line number Diff line
@@ -29,10 +29,16 @@ data class PromptAuthState(
    val needsUserConfirmation: Boolean = false,
    val delay: Long = 0,
) {
    private var wasConfirmed = false

    /** If authentication was successful and the user has confirmed (or does not need to). */
    val isAuthenticatedAndConfirmed: Boolean
        get() = isAuthenticated && !needsUserConfirmation

    /** Same as [isAuthenticatedAndConfirmed] but only true if the user clicked a confirm button. */
    val isAuthenticatedAndExplicitlyConfirmed: Boolean
        get() = isAuthenticated && wasConfirmed

    /** If a successful authentication has not occurred. */
    val isNotAuthenticated: Boolean
        get() = !isAuthenticated
@@ -45,12 +51,16 @@ data class PromptAuthState(
    val isAuthenticatedByFingerprint: Boolean
        get() = isAuthenticated && authenticatedModality == BiometricModality.Fingerprint

    /** Copies this state, but toggles [needsUserConfirmation] to false. */
    fun asConfirmed(): PromptAuthState =
    /**
     * Copies this state, but toggles [needsUserConfirmation] to false and ensures that
     * [isAuthenticatedAndExplicitlyConfirmed] is true.
     */
    fun asExplicitlyConfirmed(): PromptAuthState =
        PromptAuthState(
                isAuthenticated = isAuthenticated,
                authenticatedModality = authenticatedModality,
                needsUserConfirmation = false,
                delay = delay,
            )
            .apply { wasConfirmed = true }
}
+1 −1
Original line number Diff line number Diff line
@@ -414,7 +414,7 @@ constructor(
            return
        }

        _isAuthenticated.value = authState.asConfirmed()
        _isAuthenticated.value = authState.asExplicitlyConfirmed()
        _message.value = PromptMessage.Empty
        _legacyState.value = AuthBiometricView.STATE_AUTHENTICATED

+7 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ class PromptAuthStateTest : SysuiTestCase() {
        with(PromptAuthState(isAuthenticated = false)) {
            assertThat(isNotAuthenticated).isTrue()
            assertThat(isAuthenticatedAndConfirmed).isFalse()
            assertThat(isAuthenticatedAndExplicitlyConfirmed).isFalse()
            assertThat(isAuthenticatedByFace).isFalse()
            assertThat(isAuthenticatedByFingerprint).isFalse()
        }
@@ -43,6 +44,7 @@ class PromptAuthStateTest : SysuiTestCase() {
        with(PromptAuthState(isAuthenticated = true)) {
            assertThat(isNotAuthenticated).isFalse()
            assertThat(isAuthenticatedAndConfirmed).isTrue()
            assertThat(isAuthenticatedAndExplicitlyConfirmed).isFalse()
            assertThat(isAuthenticatedByFace).isFalse()
            assertThat(isAuthenticatedByFingerprint).isFalse()
        }
@@ -50,10 +52,12 @@ class PromptAuthStateTest : SysuiTestCase() {
        with(PromptAuthState(isAuthenticated = true, needsUserConfirmation = true)) {
            assertThat(isNotAuthenticated).isFalse()
            assertThat(isAuthenticatedAndConfirmed).isFalse()
            assertThat(isAuthenticatedAndExplicitlyConfirmed).isFalse()
            assertThat(isAuthenticatedByFace).isFalse()
            assertThat(isAuthenticatedByFingerprint).isFalse()

            assertThat(asConfirmed().isAuthenticatedAndConfirmed).isTrue()
            assertThat(asExplicitlyConfirmed().isAuthenticatedAndConfirmed).isTrue()
            assertThat(asExplicitlyConfirmed().isAuthenticatedAndExplicitlyConfirmed).isTrue()
        }
    }

@@ -64,6 +68,7 @@ class PromptAuthStateTest : SysuiTestCase() {
        ) {
            assertThat(isNotAuthenticated).isFalse()
            assertThat(isAuthenticatedAndConfirmed).isTrue()
            assertThat(isAuthenticatedAndExplicitlyConfirmed).isFalse()
            assertThat(isAuthenticatedByFace).isTrue()
            assertThat(isAuthenticatedByFingerprint).isFalse()
        }
@@ -79,6 +84,7 @@ class PromptAuthStateTest : SysuiTestCase() {
        ) {
            assertThat(isNotAuthenticated).isFalse()
            assertThat(isAuthenticatedAndConfirmed).isTrue()
            assertThat(isAuthenticatedAndExplicitlyConfirmed).isFalse()
            assertThat(isAuthenticatedByFace).isFalse()
            assertThat(isAuthenticatedByFingerprint).isTrue()
        }