diff options
| author | 2018-08-27 12:39:17 -0700 | |
|---|---|---|
| committer | 2018-08-30 14:49:32 -0700 | |
| commit | a24e9fd9acf0c7abbdbe40dbc2c2015d28acad49 (patch) | |
| tree | a5407268d03f9a7198161fe786670cffb6106c03 /services/java | |
| parent | 836f2cfb9eaee16458876f8ddaa2d3f778f02be1 (diff) | |
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 <Biometric>Manager
to BiometricPrompt. FingerprintManager now does not care about
BiometricPrompt logic anymore (reverts several P changes).
Face, and all future <Biometric>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
Diffstat (limited to 'services/java')
| -rw-r--r-- | services/java/com/android/server/SystemServer.java | 17 |
1 files changed, 15 insertions, 2 deletions
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); |