Loading services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -149,6 +149,17 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { @NonNull String halInstanceName, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull BiometricContext biometricContext) { @NonNull BiometricContext biometricContext) { this(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, biometricContext, null /* daemon */); } @VisibleForTesting FaceProvider(@NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull BiometricContext biometricContext, IFace daemon) { mContext = context; mContext = context; mBiometricStateCallback = biometricStateCallback; mBiometricStateCallback = biometricStateCallback; mHalInstanceName = halInstanceName; mHalInstanceName = halInstanceName; Loading @@ -160,6 +171,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { mTaskStackListener = new BiometricTaskStackListener(); mTaskStackListener = new BiometricTaskStackListener(); mBiometricContext = biometricContext; mBiometricContext = biometricContext; mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mDaemon = daemon; for (SensorProps prop : props) { for (SensorProps prop : props) { final int sensorId = prop.commonProps.sensorId; final int sensorId = prop.commonProps.sensorId; Loading services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -160,6 +160,17 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull BiometricContext biometricContext) { @NonNull BiometricContext biometricContext) { this(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, gestureAvailabilityDispatcher, biometricContext, null /* daemon */); } @VisibleForTesting FingerprintProvider(@NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull BiometricContext biometricContext, IFingerprint daemon) { mContext = context; mContext = context; mBiometricStateCallback = biometricStateCallback; mBiometricStateCallback = biometricStateCallback; mHalInstanceName = halInstanceName; mHalInstanceName = halInstanceName; Loading @@ -170,6 +181,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi mTaskStackListener = new BiometricTaskStackListener(); mTaskStackListener = new BiometricTaskStackListener(); mBiometricContext = biometricContext; mBiometricContext = biometricContext; mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mDaemon = daemon; final List<SensorLocationInternal> workaroundLocations = getWorkaroundSensorProps(context); final List<SensorLocationInternal> workaroundLocations = getWorkaroundSensorProps(context); Loading services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java +6 −26 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit; import androidx.annotation.NonNull; import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; Loading Loading @@ -73,7 +72,7 @@ public class FaceProviderTest { private SensorProps[] mSensorProps; private SensorProps[] mSensorProps; private LockoutResetDispatcher mLockoutResetDispatcher; private LockoutResetDispatcher mLockoutResetDispatcher; private TestableFaceProvider mFaceProvider; private FaceProvider mFaceProvider; private static void waitForIdle() { private static void waitForIdle() { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Loading @@ -98,8 +97,9 @@ public class FaceProviderTest { mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mFaceProvider = new TestableFaceProvider(mDaemon, mContext, mBiometricStateCallback, mFaceProvider = new FaceProvider(mContext, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mBiometricContext); mSensorProps, TAG, mLockoutResetDispatcher, mBiometricContext, mDaemon); } } @Test @Test Loading Loading @@ -130,6 +130,7 @@ public class FaceProviderTest { for (SensorProps prop : mSensorProps) { for (SensorProps prop : mSensorProps) { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); scheduler.reset(); for (int i = 0; i < numFakeOperations; i++) { for (int i = 0; i < numFakeOperations; i++) { final HalClientMonitor testMonitor = mock(HalClientMonitor.class); final HalClientMonitor testMonitor = mock(HalClientMonitor.class); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); Loading @@ -142,7 +143,7 @@ public class FaceProviderTest { for (SensorProps prop : mSensorProps) { for (SensorProps prop : mSensorProps) { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); assertEquals(numFakeOperations, scheduler.getCurrentPendingCount()); assertEquals(numFakeOperations - 1, scheduler.getCurrentPendingCount()); assertNotNull(scheduler.getCurrentClient()); assertNotNull(scheduler.getCurrentClient()); } } Loading @@ -159,25 +160,4 @@ public class FaceProviderTest { assertEquals(0, scheduler.getCurrentPendingCount()); assertEquals(0, scheduler.getCurrentPendingCount()); } } } } private static class TestableFaceProvider extends FaceProvider { private final IFace mDaemon; TestableFaceProvider(@NonNull IFace daemon, @NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull BiometricContext biometricContext) { super(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, biometricContext); mDaemon = daemon; } @Override synchronized IFace getHalInstance() { return mDaemon; } } } } services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java +5 −31 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit; import androidx.annotation.NonNull; import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; Loading Loading @@ -81,7 +80,7 @@ public class FingerprintProviderTest { private SensorProps[] mSensorProps; private SensorProps[] mSensorProps; private LockoutResetDispatcher mLockoutResetDispatcher; private LockoutResetDispatcher mLockoutResetDispatcher; private TestableFingerprintProvider mFingerprintProvider; private FingerprintProvider mFingerprintProvider; private static void waitForIdle() { private static void waitForIdle() { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Loading Loading @@ -110,17 +109,13 @@ public class FingerprintProviderTest { mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mFingerprintProvider = new TestableFingerprintProvider(mDaemon, mContext, mFingerprintProvider = new FingerprintProvider(mContext, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mGestureAvailabilityDispatcher, mBiometricContext); mGestureAvailabilityDispatcher, mBiometricContext, mDaemon); } } @Test @Test public void testAddingSensors() { public void testAddingSensors() { mFingerprintProvider = new TestableFingerprintProvider(mDaemon, mContext, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mGestureAvailabilityDispatcher, mBiometricContext); waitForIdle(); waitForIdle(); for (SensorProps prop : mSensorProps) { for (SensorProps prop : mSensorProps) { Loading @@ -147,6 +142,7 @@ public class FingerprintProviderTest { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) .getScheduler(); .getScheduler(); scheduler.reset(); for (int i = 0; i < numFakeOperations; i++) { for (int i = 0; i < numFakeOperations; i++) { final HalClientMonitor testMonitor = mock(HalClientMonitor.class); final HalClientMonitor testMonitor = mock(HalClientMonitor.class); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); Loading @@ -160,7 +156,7 @@ public class FingerprintProviderTest { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) .getScheduler(); .getScheduler(); assertEquals(numFakeOperations, scheduler.getCurrentPendingCount()); assertEquals(numFakeOperations - 1, scheduler.getCurrentPendingCount()); assertNotNull(scheduler.getCurrentClient()); assertNotNull(scheduler.getCurrentClient()); } } Loading @@ -178,26 +174,4 @@ public class FingerprintProviderTest { assertEquals(0, scheduler.getCurrentPendingCount()); assertEquals(0, scheduler.getCurrentPendingCount()); } } } } private static class TestableFingerprintProvider extends FingerprintProvider { private final IFingerprint mDaemon; TestableFingerprintProvider(@NonNull IFingerprint daemon, @NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull BiometricContext biometricContext) { super(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, gestureAvailabilityDispatcher, biometricContext); mDaemon = daemon; } @Override synchronized IFingerprint getHalInstance() { return mDaemon; } } } } Loading
services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -149,6 +149,17 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { @NonNull String halInstanceName, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull BiometricContext biometricContext) { @NonNull BiometricContext biometricContext) { this(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, biometricContext, null /* daemon */); } @VisibleForTesting FaceProvider(@NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull BiometricContext biometricContext, IFace daemon) { mContext = context; mContext = context; mBiometricStateCallback = biometricStateCallback; mBiometricStateCallback = biometricStateCallback; mHalInstanceName = halInstanceName; mHalInstanceName = halInstanceName; Loading @@ -160,6 +171,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { mTaskStackListener = new BiometricTaskStackListener(); mTaskStackListener = new BiometricTaskStackListener(); mBiometricContext = biometricContext; mBiometricContext = biometricContext; mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mDaemon = daemon; for (SensorProps prop : props) { for (SensorProps prop : props) { final int sensorId = prop.commonProps.sensorId; final int sensorId = prop.commonProps.sensorId; Loading
services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -160,6 +160,17 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull BiometricContext biometricContext) { @NonNull BiometricContext biometricContext) { this(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, gestureAvailabilityDispatcher, biometricContext, null /* daemon */); } @VisibleForTesting FingerprintProvider(@NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull BiometricContext biometricContext, IFingerprint daemon) { mContext = context; mContext = context; mBiometricStateCallback = biometricStateCallback; mBiometricStateCallback = biometricStateCallback; mHalInstanceName = halInstanceName; mHalInstanceName = halInstanceName; Loading @@ -170,6 +181,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi mTaskStackListener = new BiometricTaskStackListener(); mTaskStackListener = new BiometricTaskStackListener(); mBiometricContext = biometricContext; mBiometricContext = biometricContext; mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mAuthSessionCoordinator = mBiometricContext.getAuthSessionCoordinator(); mDaemon = daemon; final List<SensorLocationInternal> workaroundLocations = getWorkaroundSensorProps(context); final List<SensorLocationInternal> workaroundLocations = getWorkaroundSensorProps(context); Loading
services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceProviderTest.java +6 −26 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit; import androidx.annotation.NonNull; import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; Loading Loading @@ -73,7 +72,7 @@ public class FaceProviderTest { private SensorProps[] mSensorProps; private SensorProps[] mSensorProps; private LockoutResetDispatcher mLockoutResetDispatcher; private LockoutResetDispatcher mLockoutResetDispatcher; private TestableFaceProvider mFaceProvider; private FaceProvider mFaceProvider; private static void waitForIdle() { private static void waitForIdle() { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Loading @@ -98,8 +97,9 @@ public class FaceProviderTest { mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mFaceProvider = new TestableFaceProvider(mDaemon, mContext, mBiometricStateCallback, mFaceProvider = new FaceProvider(mContext, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mBiometricContext); mSensorProps, TAG, mLockoutResetDispatcher, mBiometricContext, mDaemon); } } @Test @Test Loading Loading @@ -130,6 +130,7 @@ public class FaceProviderTest { for (SensorProps prop : mSensorProps) { for (SensorProps prop : mSensorProps) { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); scheduler.reset(); for (int i = 0; i < numFakeOperations; i++) { for (int i = 0; i < numFakeOperations; i++) { final HalClientMonitor testMonitor = mock(HalClientMonitor.class); final HalClientMonitor testMonitor = mock(HalClientMonitor.class); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); Loading @@ -142,7 +143,7 @@ public class FaceProviderTest { for (SensorProps prop : mSensorProps) { for (SensorProps prop : mSensorProps) { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); mFaceProvider.mFaceSensors.get(prop.commonProps.sensorId).getScheduler(); assertEquals(numFakeOperations, scheduler.getCurrentPendingCount()); assertEquals(numFakeOperations - 1, scheduler.getCurrentPendingCount()); assertNotNull(scheduler.getCurrentClient()); assertNotNull(scheduler.getCurrentClient()); } } Loading @@ -159,25 +160,4 @@ public class FaceProviderTest { assertEquals(0, scheduler.getCurrentPendingCount()); assertEquals(0, scheduler.getCurrentPendingCount()); } } } } private static class TestableFaceProvider extends FaceProvider { private final IFace mDaemon; TestableFaceProvider(@NonNull IFace daemon, @NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull BiometricContext biometricContext) { super(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, biometricContext); mDaemon = daemon; } @Override synchronized IFace getHalInstance() { return mDaemon; } } } }
services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProviderTest.java +5 −31 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.UserManager; import android.platform.test.annotations.Presubmit; import android.platform.test.annotations.Presubmit; import androidx.annotation.NonNull; import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; Loading Loading @@ -81,7 +80,7 @@ public class FingerprintProviderTest { private SensorProps[] mSensorProps; private SensorProps[] mSensorProps; private LockoutResetDispatcher mLockoutResetDispatcher; private LockoutResetDispatcher mLockoutResetDispatcher; private TestableFingerprintProvider mFingerprintProvider; private FingerprintProvider mFingerprintProvider; private static void waitForIdle() { private static void waitForIdle() { InstrumentationRegistry.getInstrumentation().waitForIdleSync(); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); Loading Loading @@ -110,17 +109,13 @@ public class FingerprintProviderTest { mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mLockoutResetDispatcher = new LockoutResetDispatcher(mContext); mFingerprintProvider = new TestableFingerprintProvider(mDaemon, mContext, mFingerprintProvider = new FingerprintProvider(mContext, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mGestureAvailabilityDispatcher, mBiometricContext); mGestureAvailabilityDispatcher, mBiometricContext, mDaemon); } } @Test @Test public void testAddingSensors() { public void testAddingSensors() { mFingerprintProvider = new TestableFingerprintProvider(mDaemon, mContext, mBiometricStateCallback, mSensorProps, TAG, mLockoutResetDispatcher, mGestureAvailabilityDispatcher, mBiometricContext); waitForIdle(); waitForIdle(); for (SensorProps prop : mSensorProps) { for (SensorProps prop : mSensorProps) { Loading @@ -147,6 +142,7 @@ public class FingerprintProviderTest { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) .getScheduler(); .getScheduler(); scheduler.reset(); for (int i = 0; i < numFakeOperations; i++) { for (int i = 0; i < numFakeOperations; i++) { final HalClientMonitor testMonitor = mock(HalClientMonitor.class); final HalClientMonitor testMonitor = mock(HalClientMonitor.class); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); when(testMonitor.getFreshDaemon()).thenReturn(new Object()); Loading @@ -160,7 +156,7 @@ public class FingerprintProviderTest { final BiometricScheduler scheduler = final BiometricScheduler scheduler = mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) mFingerprintProvider.mFingerprintSensors.get(prop.commonProps.sensorId) .getScheduler(); .getScheduler(); assertEquals(numFakeOperations, scheduler.getCurrentPendingCount()); assertEquals(numFakeOperations - 1, scheduler.getCurrentPendingCount()); assertNotNull(scheduler.getCurrentClient()); assertNotNull(scheduler.getCurrentClient()); } } Loading @@ -178,26 +174,4 @@ public class FingerprintProviderTest { assertEquals(0, scheduler.getCurrentPendingCount()); assertEquals(0, scheduler.getCurrentPendingCount()); } } } } private static class TestableFingerprintProvider extends FingerprintProvider { private final IFingerprint mDaemon; TestableFingerprintProvider(@NonNull IFingerprint daemon, @NonNull Context context, @NonNull BiometricStateCallback biometricStateCallback, @NonNull SensorProps[] props, @NonNull String halInstanceName, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher, @NonNull BiometricContext biometricContext) { super(context, biometricStateCallback, props, halInstanceName, lockoutResetDispatcher, gestureAvailabilityDispatcher, biometricContext); mDaemon = daemon; } @Override synchronized IFingerprint getHalInstance() { return mDaemon; } } } }