From a24e9fd9acf0c7abbdbe40dbc2c2015d28acad49 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Mon, 27 Aug 2018 12:39:17 -0700 Subject: Add BiometricPromptService The change introduces the following: - BiometricPrompt communicatates with BiometricPromptService (new) system service. The service does the decision making for which biometric modality to use. - As a result, a lot of logic is moved from Manager to BiometricPrompt. FingerprintManager now does not care about BiometricPrompt logic anymore (reverts several P changes). Face, and all future Service interfaces must be protected by the signature-only MANAGE_BIOMETRIC permission. Settings, SystemUI, and BiometricPromptService are their only clients. Bug: 72825012 Test: BiometricPromptDemo works Test: Keyguard works Test: Settings works Change-Id: I2b7d6eff81bc07950202c50e592d733032523bf0 --- services/java/com/android/server/SystemServer.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'services/java') diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 2f6fca44a61e..fd982d6a3240 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -67,6 +67,7 @@ import com.android.server.accessibility.AccessibilityManagerService; import com.android.server.am.ActivityManagerService; import com.android.server.am.ActivityTaskManagerService; import com.android.server.audio.AudioService; +import com.android.server.biometrics.BiometricPromptService; import com.android.server.broadcastradio.BroadcastRadioService; import com.android.server.camera.CameraServiceProxy; import com.android.server.clipboard.ClipboardService; @@ -1552,18 +1553,30 @@ public final class SystemServer { } traceEnd(); - if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)) { + final boolean hasFeatureFace + = mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE); + final boolean hasFeatureFingerprint + = mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT); + + if (hasFeatureFace) { traceBeginAndSlog("StartFaceSensor"); mSystemServiceManager.startService(FaceService.class); traceEnd(); } - if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { + if (hasFeatureFingerprint) { traceBeginAndSlog("StartFingerprintSensor"); mSystemServiceManager.startService(FingerprintService.class); traceEnd(); } + if (hasFeatureFace || hasFeatureFingerprint) { + // Start this service after all biometric services. + traceBeginAndSlog("StartBiometricPromptService"); + mSystemServiceManager.startService(BiometricPromptService.class); + traceEnd(); + } + traceBeginAndSlog("StartBackgroundDexOptService"); try { BackgroundDexOptService.schedule(context); -- cgit v1.2.3-59-g8ed1b