summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/SystemServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/SystemServer.java')
-rw-r--r--services/java/com/android/server/SystemServer.java30
1 files changed, 25 insertions, 5 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 63841ac4773b..988cd9168c28 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -34,6 +34,7 @@ import android.app.AppCompatCallbacks;
import android.app.ApplicationErrorReport;
import android.app.INotificationManager;
import android.app.SystemServiceRegistry;
+import android.app.admin.DevicePolicySafetyChecker;
import android.app.usage.UsageStatsManagerInternal;
import android.content.ContentResolver;
import android.content.Context;
@@ -102,6 +103,7 @@ import com.android.server.attention.AttentionManagerService;
import com.android.server.audio.AudioService;
import com.android.server.biometrics.AuthService;
import com.android.server.biometrics.BiometricService;
+import com.android.server.biometrics.sensors.BiometricServiceCallback;
import com.android.server.biometrics.sensors.face.FaceService;
import com.android.server.biometrics.sensors.fingerprint.FingerprintService;
import com.android.server.biometrics.sensors.iris.IrisService;
@@ -199,8 +201,10 @@ import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
+import java.util.List;
import java.util.Locale;
import java.util.Timer;
import java.util.concurrent.CountDownLatch;
@@ -1477,7 +1481,10 @@ public final class SystemServer implements Dumpable {
}
t.traceEnd();
- if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) {
+ final DevicePolicyManagerService.Lifecycle dpms;
+ if (mFactoryTestMode == FactoryTest.FACTORY_TEST_LOW_LEVEL) {
+ dpms = null;
+ } else {
t.traceBegin("StartLockSettingsService");
try {
mSystemServiceManager.startService(LOCK_SETTINGS_SERVICE_CLASS);
@@ -1514,7 +1521,7 @@ public final class SystemServer implements Dumpable {
// Always start the Device Policy Manager, so that the API is compatible with
// API8.
t.traceBegin("StartDevicePolicyManager");
- mSystemServiceManager.startService(DevicePolicyManagerService.Lifecycle.class);
+ dpms = mSystemServiceManager.startService(DevicePolicyManagerService.Lifecycle.class);
t.traceEnd();
if (!isWatch) {
@@ -2126,9 +2133,12 @@ public final class SystemServer implements Dumpable {
final boolean hasFeatureFingerprint
= mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT);
+ final List<BiometricServiceCallback> biometricServiceCallback = new ArrayList<>();
if (hasFeatureFace) {
t.traceBegin("StartFaceSensor");
- mSystemServiceManager.startService(FaceService.class);
+ final FaceService faceService =
+ mSystemServiceManager.startService(FaceService.class);
+ biometricServiceCallback.add(faceService);
t.traceEnd();
}
@@ -2140,13 +2150,20 @@ public final class SystemServer implements Dumpable {
if (hasFeatureFingerprint) {
t.traceBegin("StartFingerprintSensor");
- mSystemServiceManager.startService(FingerprintService.class);
+ final FingerprintService fingerprintService =
+ mSystemServiceManager.startService(FingerprintService.class);
+ biometricServiceCallback.add(fingerprintService);
t.traceEnd();
}
- // Start this service after all biometric services.
+ // Start this service after all biometric sensor services are started.
t.traceBegin("StartBiometricService");
mSystemServiceManager.startService(BiometricService.class);
+ for (BiometricServiceCallback service : biometricServiceCallback) {
+ Slog.d(TAG, "Notifying onBiometricServiceReady for: "
+ + service.getClass().getSimpleName());
+ service.onBiometricServiceReady();
+ }
t.traceEnd();
t.traceBegin("StartAuthService");
@@ -2483,6 +2500,9 @@ public final class SystemServer implements Dumpable {
if (cshs instanceof Dumpable) {
mDumper.addDumpable((Dumpable) cshs);
}
+ if (cshs instanceof DevicePolicySafetyChecker) {
+ dpms.setDevicePolicySafetyChecker((DevicePolicySafetyChecker) cshs);
+ }
t.traceEnd();
}