Consolidate registration of HIDL and AIDL HALs

This CL establishes a single flow of registration for both HIDL and
AIDL HALs. The registration of both is done on a separate thread to
avoid blocking system server. Previously, only AIDL registration was
done on a separate thread.

Bug: 184677066
Test: atest CtsBiometricsTestCases
Test: atest AuthServiceTest
Test: atest Fingerprint21Test
Test: atest Face10Test

Change-Id: I4442db15a7b690bb34c6eb7e8793ab4411cbd6d2
This commit is contained in:
Ilya Matyukhin
2021-04-20 19:32:28 -07:00
parent c72ac760e1
commit e1b53af498
20 changed files with 504 additions and 372 deletions

View File

@@ -108,7 +108,6 @@ 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;
@@ -214,11 +213,9 @@ import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Timer;
import java.util.TreeSet;
@@ -2334,12 +2331,10 @@ 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");
final FaceService faceService =
mSystemServiceManager.startService(FaceService.class);
biometricServiceCallback.add(faceService);
t.traceEnd();
}
@@ -2353,18 +2348,12 @@ public final class SystemServer implements Dumpable {
t.traceBegin("StartFingerprintSensor");
final FingerprintService fingerprintService =
mSystemServiceManager.startService(FingerprintService.class);
biometricServiceCallback.add(fingerprintService);
t.traceEnd();
}
// 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");