diff options
| author | 2021-10-26 13:07:46 -0700 | |
|---|---|---|
| committer | 2021-10-26 13:10:36 -0700 | |
| commit | 42004250c21623dbfd29a16b7eafcb1ff6b9c650 (patch) | |
| tree | 89ace85350701c2be75bbe14242f13f2ff23c36a | |
| parent | a991d6bdc2572972c7aa2a72c603867e9f02b489 (diff) | |
Do not show side fingerprint sensor overlay when used from settings.
Fix: 203789357
Test: atest SidefpsControllerTest
Change-Id: I2b0bb3b38edeeec08e93706784b0a53bd77d32a3
4 files changed, 23 insertions, 2 deletions
diff --git a/core/java/android/hardware/biometrics/BiometricOverlayConstants.java b/core/java/android/hardware/biometrics/BiometricOverlayConstants.java index 603b06ddabaa..065ae64a92ad 100644 --- a/core/java/android/hardware/biometrics/BiometricOverlayConstants.java +++ b/core/java/android/hardware/biometrics/BiometricOverlayConstants.java @@ -38,13 +38,16 @@ public interface BiometricOverlayConstants { int REASON_AUTH_KEYGUARD = 4; /** Non-specific usage (from FingerprintManager). */ int REASON_AUTH_OTHER = 5; + /** Usage from Settings. */ + int REASON_AUTH_SETTINGS = 6; @IntDef({REASON_UNKNOWN, REASON_ENROLL_FIND_SENSOR, REASON_ENROLL_ENROLLING, REASON_AUTH_BP, REASON_AUTH_KEYGUARD, - REASON_AUTH_OTHER}) + REASON_AUTH_OTHER, + REASON_AUTH_SETTINGS}) @Retention(RetentionPolicy.SOURCE) @interface ShowReason {} } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt index b7398d86c16e..e2a2d07bdf35 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/SidefpsController.kt @@ -22,6 +22,7 @@ import android.graphics.PorterDuffColorFilter import android.graphics.Rect import android.hardware.biometrics.BiometricOverlayConstants import android.hardware.biometrics.BiometricOverlayConstants.REASON_AUTH_KEYGUARD +import android.hardware.biometrics.BiometricOverlayConstants.REASON_AUTH_SETTINGS import android.hardware.display.DisplayManager import android.hardware.fingerprint.FingerprintManager import android.hardware.fingerprint.FingerprintSensorPropertiesInternal @@ -181,6 +182,7 @@ class SidefpsController @Inject constructor( @BiometricOverlayConstants.ShowReason private fun Int.isReasonToShow(): Boolean = when (this) { REASON_AUTH_KEYGUARD -> false + REASON_AUTH_SETTINGS -> false else -> true } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt index 5fee7fbf8705..ca7d506dcc78 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/SidefpsControllerTest.kt @@ -18,6 +18,7 @@ package com.android.systemui.biometrics import android.graphics.Rect import android.hardware.biometrics.BiometricOverlayConstants.REASON_AUTH_KEYGUARD +import android.hardware.biometrics.BiometricOverlayConstants.REASON_AUTH_SETTINGS import android.hardware.biometrics.BiometricOverlayConstants.REASON_UNKNOWN import android.hardware.biometrics.SensorProperties import android.hardware.display.DisplayManager @@ -182,7 +183,16 @@ class SidefpsControllerTest : SysuiTestCase() { @Test fun testIgnoredForKeyguard() { - overlayController.show(SENSOR_ID, REASON_AUTH_KEYGUARD) + testIgnoredFor(REASON_AUTH_KEYGUARD) + } + + @Test + fun testIgnoredForSettings() { + testIgnoredFor(REASON_AUTH_SETTINGS) + } + + private fun testIgnoredFor(reason: Int) { + overlayController.show(SENSOR_ID, reason) executor.runAllReady() verify(windowManager, never()).addView(any(), any()) diff --git a/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java index 031f6eeeca5f..61b8ded60db7 100644 --- a/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java @@ -168,6 +168,10 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> return Utils.isKeyguard(getContext(), getOwnerString()); } + private boolean isSettings() { + return Utils.isSettings(getContext(), getOwnerString()); + } + @Override protected boolean isCryptoOperation() { return mOperationId != 0; @@ -499,6 +503,8 @@ public abstract class AuthenticationClient<T> extends AcquisitionClient<T> protected int getShowOverlayReason() { if (isKeyguard()) { return BiometricOverlayConstants.REASON_AUTH_KEYGUARD; + } else if (isSettings()) { + return BiometricOverlayConstants.REASON_AUTH_SETTINGS; } else if (isBiometricPrompt()) { return BiometricOverlayConstants.REASON_AUTH_BP; } else { |