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

Commit 30238953 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

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



Change-Id: If012608bd94922d809aeb5ccfdc4aa6862adad55
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 68e43d4d a1783404
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()
        }