diff options
| author | 2022-10-11 17:57:30 +0000 | |
|---|---|---|
| committer | 2022-10-19 20:28:41 +0000 | |
| commit | 20987e7f2bc6cb71164a9b63bd8b998d7b89727c (patch) | |
| tree | 516f9d2f2579ddbcb561418827c3d355f6d78dfd | |
| parent | 9a0ed1afe1a4ea2c1e8537196d84c8c958a275d5 (diff) | |
Cleaned up side fps logic
Test: atest FingerprintAuthenticationClientTest
Test: manual.
Fixes: 252888293
Change-Id: I6a872757ecb6294b55536bea75919bb53db52603
Merged-In: I6a872757ecb6294b55536bea75919bb53db52603
3 files changed, 51 insertions, 5 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 5d1acbc5a07a..df6f575f2d3c 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3553,9 +3553,9 @@           config_sidefpsSkipWaitForPowerVendorAcquireMessage -->      <integer name="config_sidefpsSkipWaitForPowerAcquireMessage">6</integer> -    <!-- This vendor acquired message that will cause the sidefpsKgPowerPress window to be skipped. -         config_sidefpsSkipWaitForPowerOnFingerUp must be true and -         config_sidefpsSkipWaitForPowerAcquireMessage must be BIOMETRIC_ACQUIRED_VENDOR == 6. --> +    <!-- This vendor acquired message will cause the sidefpsKgPowerPress window to be skipped +         when config_sidefpsSkipWaitForPowerAcquireMessage == 6 (VENDOR) and the vendor acquire +         message equals this constant -->      <integer name="config_sidefpsSkipWaitForPowerVendorAcquireMessage">2</integer>      <!-- This config is used to force VoiceInteractionService to start on certain low ram devices. diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java index b3f42be41cd7..85b11daf8cf8 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java @@ -265,8 +265,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<AidlSession>              final boolean acquireMessageMatch = acquiredInfo == mSkipWaitForPowerAcquireMessage;              final boolean vendorMessageMatch = vendorCode == mSkipWaitForPowerVendorAcquireMessage;              final boolean ignorePowerPress = -                    (acquireMessageMatch && !shouldLookForVendor) || (shouldLookForVendor -                            && acquireMessageMatch && vendorMessageMatch); +                    acquireMessageMatch && (!shouldLookForVendor || vendorMessageMatch);              if (ignorePowerPress) {                  Slog.d(TAG, "(sideFPS) onFingerUp"); diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java index dea4d4fb7c64..79f08aad9e92 100644 --- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java +++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClientTest.java @@ -40,6 +40,7 @@ import android.hardware.biometrics.common.OperationContext;  import android.hardware.biometrics.fingerprint.ISession;  import android.hardware.biometrics.fingerprint.PointerContext;  import android.hardware.fingerprint.Fingerprint; +import android.hardware.fingerprint.FingerprintManager;  import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;  import android.hardware.fingerprint.ISidefpsController;  import android.hardware.fingerprint.IUdfpsOverlayController; @@ -423,6 +424,52 @@ public class FingerprintAuthenticationClientTest {      }      @Test +    public void sideFingerprintSkipsWindowIfVendorMessageMatch() throws Exception { +        when(mSensorProps.isAnySidefpsType()).thenReturn(true); +        final int vendorAcquireMessage = 1234; + +        mContext.getOrCreateTestableResources().addOverride( +                R.integer.config_sidefpsSkipWaitForPowerAcquireMessage, +                FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR); +        mContext.getOrCreateTestableResources().addOverride( +                R.integer.config_sidefpsSkipWaitForPowerVendorAcquireMessage, +                vendorAcquireMessage); + +        final FingerprintAuthenticationClient client = createClient(1); +        client.start(mCallback); +        mLooper.dispatchAll(); +        client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */), +                true /* authenticated */, new ArrayList<>()); +        client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR, vendorAcquireMessage); +        mLooper.dispatchAll(); + +        verify(mCallback).onClientFinished(any(), eq(true)); +    } + +    @Test +    public void sideFingerprintDoesNotSkipWindowOnVendorErrorMismatch() throws Exception { +        when(mSensorProps.isAnySidefpsType()).thenReturn(true); +        final int vendorAcquireMessage = 1234; + +        mContext.getOrCreateTestableResources().addOverride( +                R.integer.config_sidefpsSkipWaitForPowerAcquireMessage, +                FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR); +        mContext.getOrCreateTestableResources().addOverride( +                R.integer.config_sidefpsSkipWaitForPowerVendorAcquireMessage, +                vendorAcquireMessage); + +        final FingerprintAuthenticationClient client = createClient(1); +        client.start(mCallback); +        mLooper.dispatchAll(); +        client.onAuthenticated(new Fingerprint("friendly", 4 /* fingerId */, 5 /* deviceId */), +                true /* authenticated */, new ArrayList<>()); +        client.onAcquired(FingerprintManager.FINGERPRINT_ACQUIRED_VENDOR, 1); +        mLooper.dispatchAll(); + +        verify(mCallback, never()).onClientFinished(any(), anyBoolean()); +    } + +    @Test      public void sideFingerprintSendsAuthIfFingerUp() throws Exception {          when(mSensorProps.isAnySidefpsType()).thenReturn(true);  |