From 4e6417d37a0df77e6944fd5cfe079d6c4e9a1023 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Thu, 20 Feb 2020 12:10:21 -0800 Subject: [PATCH] Always start AuthController Since device credential is now a first-class citizen, we need to ensure that SystemUI is always responding to authentication requests. For example, on devices without biometrics, applications that request authentication with Authenticators.DEVICE_CREDENTIAL is still a valid request. Bug: 149795050 Test: Remove /vendor/etc/permissions/android.hardware.fingerprint.xml, reboot. Go through CtsVerifier biometric section Change-Id: I555aa5763deb31011eea46572272327f02470a02 --- .../systemui/biometrics/AuthController.java | 22 +++++++------------ .../com/android/server/biometrics/Utils.java | 4 ++-- .../fingerprint/FingerprintService.java | 2 +- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index 875619a71a181..9de018ee1e02f 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -28,7 +28,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.PackageManager; import android.content.res.Configuration; import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricPrompt; @@ -238,20 +237,15 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks, @Override public void start() { - final PackageManager pm = mContext.getPackageManager(); - if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT) - || pm.hasSystemFeature(PackageManager.FEATURE_FACE) - || pm.hasSystemFeature(PackageManager.FEATURE_IRIS)) { - mCommandQueue.addCallback(this); - mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); - mActivityTaskManager = mInjector.getActivityTaskManager(); + mCommandQueue.addCallback(this); + mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); + mActivityTaskManager = mInjector.getActivityTaskManager(); - try { - mTaskStackListener = new BiometricTaskStackListener(); - mActivityTaskManager.registerTaskStackListener(mTaskStackListener); - } catch (RemoteException e) { - Log.w(TAG, "Unable to register task stack listener", e); - } + try { + mTaskStackListener = new BiometricTaskStackListener(); + mActivityTaskManager.registerTaskStackListener(mTaskStackListener); + } catch (RemoteException e) { + Log.w(TAG, "Unable to register task stack listener", e); } } diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java index aec754048ed02..3235499511a5d 100644 --- a/services/core/java/com/android/server/biometrics/Utils.java +++ b/services/core/java/com/android/server/biometrics/Utils.java @@ -131,7 +131,7 @@ public class Utils { */ public static boolean isAtLeastStrength(int sensorStrength, int requestedStrength) { // Clear out any bits that are not reserved for biometric - sensorStrength = sensorStrength & Authenticators.BIOMETRIC_MIN_STRENGTH; + sensorStrength &= Authenticators.BIOMETRIC_MIN_STRENGTH; // If the authenticator contains bits outside of the requested strength, it is too weak. if ((sensorStrength & ~requestedStrength) != 0) { @@ -139,7 +139,7 @@ public class Utils { } for (int i = Authenticators.BIOMETRIC_MAX_STRENGTH; - i <= requestedStrength; i = i << 1 | 1) { + i <= requestedStrength; i = (i << 1) | 1) { if (i == sensorStrength) { return true; } diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java index 9bb927eff291d..2e76092042693 100644 --- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java @@ -413,7 +413,7 @@ public class FingerprintService extends BiometricServiceBase { @Override // Binder call public long getAuthenticatorId() { checkPermission(USE_BIOMETRIC_INTERNAL); - return FingerprintService.super.getAuthenticatorId(); + return FingerprintService.this.getAuthenticatorId(); } @Override // Binder call