Revert "Try to ensure tests run sequentially"
Revert submission 13593269 Reason for revert: Bug: 180689674 Reverted Changes: I59f6e607f:Update RemovalClient to support new biometric AIDL... I3fdb3fe0b:Try to ensure tests run sequentially Change-Id: Ia9c02759db7238536e21dd05f8e247a91e9ac5aa
This commit is contained in:
@@ -237,8 +237,7 @@ public class BiometricManager {
|
||||
public BiometricTestSession createTestSession(int sensorId) {
|
||||
try {
|
||||
return new BiometricTestSession(mContext, sensorId,
|
||||
(context, sensorId1, callback) -> mService
|
||||
.createTestSession(sensorId1, callback, context.getOpPackageName()));
|
||||
mService.createTestSession(sensorId, mContext.getOpPackageName()));
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ package android.hardware.biometrics;
|
||||
import static android.Manifest.permission.TEST_BIOMETRIC;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.TestApi;
|
||||
import android.content.Context;
|
||||
@@ -28,9 +27,6 @@ import android.os.RemoteException;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Common set of interfaces to test biometric-related APIs, including {@link BiometricPrompt} and
|
||||
* {@link android.hardware.fingerprint.FingerprintManager}.
|
||||
@@ -40,58 +36,22 @@ import java.util.concurrent.TimeUnit;
|
||||
public class BiometricTestSession implements AutoCloseable {
|
||||
private static final String TAG = "BiometricTestSession";
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public interface TestSessionProvider {
|
||||
@NonNull
|
||||
ITestSession createTestSession(@NonNull Context context, int sensorId,
|
||||
@NonNull ITestSessionCallback callback) throws RemoteException;
|
||||
}
|
||||
|
||||
private final Context mContext;
|
||||
private final int mSensorId;
|
||||
private final ITestSession mTestSession;
|
||||
|
||||
// Keep track of users that were tested, which need to be cleaned up when finishing.
|
||||
@NonNull private final ArraySet<Integer> mTestedUsers;
|
||||
|
||||
// Track the users currently cleaning up, and provide a latch that gets notified when all
|
||||
// users have finished cleaning up. This is an imperfect system, as there can technically be
|
||||
// multiple cleanups per user. Theoretically we should track the cleanup's BaseClientMonitor's
|
||||
// unique ID, but it's complicated to plumb it through. This should be fine for now.
|
||||
@Nullable private CountDownLatch mCloseLatch;
|
||||
@NonNull private final ArraySet<Integer> mUsersCleaningUp;
|
||||
|
||||
private final ITestSessionCallback mCallback = new ITestSessionCallback.Stub() {
|
||||
@Override
|
||||
public void onCleanupStarted(int userId) {
|
||||
Log.d(TAG, "onCleanupStarted, sensor: " + mSensorId + ", userId: " + userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCleanupFinished(int userId) {
|
||||
Log.d(TAG, "onCleanupFinished, sensor: " + mSensorId
|
||||
+ ", userId: " + userId
|
||||
+ ", remaining users: " + mUsersCleaningUp.size());
|
||||
mUsersCleaningUp.remove(userId);
|
||||
|
||||
if (mUsersCleaningUp.isEmpty() && mCloseLatch != null) {
|
||||
mCloseLatch.countDown();
|
||||
}
|
||||
}
|
||||
};
|
||||
private final ArraySet<Integer> mTestedUsers;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public BiometricTestSession(@NonNull Context context, int sensorId,
|
||||
@NonNull TestSessionProvider testSessionProvider) throws RemoteException {
|
||||
@NonNull ITestSession testSession) {
|
||||
mContext = context;
|
||||
mSensorId = sensorId;
|
||||
mTestSession = testSessionProvider.createTestSession(context, sensorId, mCallback);
|
||||
mTestSession = testSession;
|
||||
mTestedUsers = new ArraySet<>();
|
||||
mUsersCleaningUp = new ArraySet<>();
|
||||
setTestHalEnabled(true);
|
||||
}
|
||||
|
||||
@@ -216,11 +176,6 @@ public class BiometricTestSession implements AutoCloseable {
|
||||
@RequiresPermission(TEST_BIOMETRIC)
|
||||
public void cleanupInternalState(int userId) {
|
||||
try {
|
||||
if (mUsersCleaningUp.contains(userId)) {
|
||||
Log.w(TAG, "Cleanup already in progress for user: " + userId);
|
||||
}
|
||||
|
||||
mUsersCleaningUp.add(userId);
|
||||
mTestSession.cleanupInternalState(userId);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
@@ -230,24 +185,12 @@ public class BiometricTestSession implements AutoCloseable {
|
||||
@Override
|
||||
@RequiresPermission(TEST_BIOMETRIC)
|
||||
public void close() {
|
||||
// Cleanup can be performed using the test HAL, since it always responds to enumerate with
|
||||
// zero enrollments.
|
||||
if (!mTestedUsers.isEmpty()) {
|
||||
mCloseLatch = new CountDownLatch(1);
|
||||
for (int user : mTestedUsers) {
|
||||
cleanupInternalState(user);
|
||||
}
|
||||
|
||||
try {
|
||||
Log.d(TAG, "Awaiting latch...");
|
||||
mCloseLatch.await(10, TimeUnit.SECONDS);
|
||||
Log.d(TAG, "Finished awaiting");
|
||||
} catch (InterruptedException e) {
|
||||
Log.e(TAG, "Latch interrupted", e);
|
||||
}
|
||||
}
|
||||
|
||||
// Disable the test HAL after the sensor becomes idle.
|
||||
// Disable the test HAL first, so that enumerate is run on the real HAL, which should have
|
||||
// no enrollments. Test-only framework enrollments will be deleted.
|
||||
setTestHalEnabled(false);
|
||||
|
||||
for (int user : mTestedUsers) {
|
||||
cleanupInternalState(user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
|
||||
import android.hardware.biometrics.IBiometricServiceReceiver;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.PromptInfo;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
|
||||
@@ -33,7 +32,7 @@ import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
*/
|
||||
interface IAuthService {
|
||||
// Creates a test session with the specified sensorId
|
||||
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
|
||||
ITestSession createTestSession(int sensorId, String opPackageName);
|
||||
|
||||
// Retrieve static sensor properties for all biometric sensors
|
||||
List<SensorPropertiesInternal> getSensorProperties(String opPackageName);
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.hardware.biometrics.IBiometricSensorReceiver;
|
||||
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
import android.hardware.face.IFaceServiceReceiver;
|
||||
import android.hardware.face.Face;
|
||||
@@ -33,7 +32,7 @@ import android.hardware.face.Face;
|
||||
interface IBiometricAuthenticator {
|
||||
|
||||
// Creates a test session
|
||||
ITestSession createTestSession(ITestSessionCallback callback, String opPackageName);
|
||||
ITestSession createTestSession(String opPackageName);
|
||||
|
||||
// Retrieve static sensor properties
|
||||
SensorPropertiesInternal getSensorProperties(String opPackageName);
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.hardware.biometrics.IBiometricServiceReceiver;
|
||||
import android.hardware.biometrics.IBiometricAuthenticator;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.PromptInfo;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
|
||||
@@ -31,7 +30,7 @@ import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
*/
|
||||
interface IBiometricService {
|
||||
// Creates a test session with the specified sensorId
|
||||
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
|
||||
ITestSession createTestSession(int sensorId, String opPackageName);
|
||||
|
||||
// Retrieve static sensor properties for all biometric sensors
|
||||
List<SensorPropertiesInternal> getSensorProperties(String opPackageName);
|
||||
|
||||
@@ -18,7 +18,7 @@ package android.hardware.biometrics;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
|
||||
/**
|
||||
* A test service for FingerprintManager and BiometricManager.
|
||||
* A test service for FingerprintManager and BiometricPrompt.
|
||||
* @hide
|
||||
*/
|
||||
interface ITestSession {
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package android.hardware.biometrics;
|
||||
|
||||
/**
|
||||
* ITestSession callback for FingerprintManager and BiometricManager.
|
||||
* @hide
|
||||
*/
|
||||
interface ITestSessionCallback {
|
||||
void onCleanupStarted(int userId);
|
||||
void onCleanupFinished(int userId);
|
||||
}
|
||||
@@ -19,7 +19,6 @@ import android.hardware.biometrics.IBiometricSensorReceiver;
|
||||
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.face.IFaceServiceReceiver;
|
||||
import android.hardware.face.Face;
|
||||
import android.hardware.face.FaceSensorPropertiesInternal;
|
||||
@@ -33,7 +32,7 @@ import android.view.Surface;
|
||||
interface IFaceService {
|
||||
|
||||
// Creates a test session with the specified sensorId
|
||||
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
|
||||
ITestSession createTestSession(int sensorId, String opPackageName);
|
||||
|
||||
// Requests a proto dump of the specified sensor
|
||||
byte[] dumpSensorServiceStateProto(int sensorId, boolean clearSchedulerBuffer);
|
||||
|
||||
@@ -154,8 +154,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
public BiometricTestSession createTestSession(int sensorId) {
|
||||
try {
|
||||
return new BiometricTestSession(mContext, sensorId,
|
||||
(context, sensorId1, callback) -> mService
|
||||
.createTestSession(sensorId1, callback, context.getOpPackageName()));
|
||||
mService.createTestSession(sensorId, mContext.getOpPackageName()));
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import android.hardware.biometrics.IBiometricSensorReceiver;
|
||||
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
@@ -34,7 +33,7 @@ import java.util.List;
|
||||
interface IFingerprintService {
|
||||
|
||||
// Creates a test session with the specified sensorId
|
||||
ITestSession createTestSession(int sensorId, ITestSessionCallback callback, String opPackageName);
|
||||
ITestSession createTestSession(int sensorId, String opPackageName);
|
||||
|
||||
// Requests a proto dump of the specified sensor
|
||||
byte[] dumpSensorServiceStateProto(int sensorId, boolean clearSchedulerBuffer);
|
||||
|
||||
@@ -40,7 +40,6 @@ import android.hardware.biometrics.IBiometricService;
|
||||
import android.hardware.biometrics.IBiometricServiceReceiver;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.PromptInfo;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
import android.hardware.face.IFaceService;
|
||||
@@ -145,14 +144,13 @@ public class AuthService extends SystemService {
|
||||
|
||||
private final class AuthServiceImpl extends IAuthService.Stub {
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) throws RemoteException {
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName)
|
||||
throws RemoteException {
|
||||
Utils.checkPermission(getContext(), TEST_BIOMETRIC);
|
||||
|
||||
final long identity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
return mInjector.getBiometricService()
|
||||
.createTestSession(sensorId, callback, opPackageName);
|
||||
return mInjector.getBiometricService().createTestSession(sensorId, opPackageName);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(identity);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ import android.hardware.biometrics.IBiometricServiceReceiver;
|
||||
import android.hardware.biometrics.IBiometricSysuiReceiver;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.PromptInfo;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
@@ -571,13 +570,13 @@ public class BiometricService extends SystemService {
|
||||
*/
|
||||
private final class BiometricServiceWrapper extends IBiometricService.Stub {
|
||||
@Override // Binder call
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) throws RemoteException {
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName)
|
||||
throws RemoteException {
|
||||
checkInternalPermission();
|
||||
|
||||
for (BiometricSensor sensor : mSensors) {
|
||||
if (sensor.id == sensorId) {
|
||||
return sensor.impl.createTestSession(callback, opPackageName);
|
||||
return sensor.impl.createTestSession(opPackageName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.hardware.biometrics.IBiometricAuthenticator;
|
||||
import android.hardware.biometrics.IBiometricSensorReceiver;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
import android.hardware.face.IFaceService;
|
||||
import android.os.IBinder;
|
||||
@@ -42,9 +41,8 @@ public final class FaceAuthenticator extends IBiometricAuthenticator.Stub {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITestSession createTestSession(@NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) throws RemoteException {
|
||||
return mFaceService.createTestSession(mSensorId, callback, opPackageName);
|
||||
public ITestSession createTestSession(@NonNull String opPackageName) throws RemoteException {
|
||||
return mFaceService.createTestSession(mSensorId, opPackageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,7 +31,6 @@ import android.hardware.biometrics.IBiometricService;
|
||||
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.face.IFace;
|
||||
import android.hardware.biometrics.face.SensorProps;
|
||||
import android.hardware.face.Face;
|
||||
@@ -134,8 +133,7 @@ public class FaceService extends SystemService implements BiometricServiceCallba
|
||||
*/
|
||||
private final class FaceServiceWrapper extends IFaceService.Stub {
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) {
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName) {
|
||||
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
|
||||
|
||||
final ServiceProvider provider = getProviderForSensor(sensorId);
|
||||
@@ -145,7 +143,7 @@ public class FaceService extends SystemService implements BiometricServiceCallba
|
||||
return null;
|
||||
}
|
||||
|
||||
return provider.createTestSession(sensorId, callback, opPackageName);
|
||||
return provider.createTestSession(sensorId, opPackageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.face.Face;
|
||||
import android.hardware.face.FaceManager;
|
||||
import android.hardware.face.FaceSensorPropertiesInternal;
|
||||
@@ -29,7 +28,6 @@ import android.os.IBinder;
|
||||
import android.os.NativeHandle;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
|
||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
||||
import com.android.server.biometrics.sensors.LockoutTracker;
|
||||
|
||||
@@ -125,8 +123,7 @@ public interface ServiceProvider {
|
||||
|
||||
void startPreparedClient(int sensorId, int cookie);
|
||||
|
||||
void scheduleInternalCleanup(int sensorId, int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback);
|
||||
void scheduleInternalCleanup(int sensorId, int userId);
|
||||
|
||||
void dumpProtoState(int sensorId, @NonNull ProtoOutputStream proto,
|
||||
boolean clearSchedulerBuffer);
|
||||
@@ -136,8 +133,7 @@ public interface ServiceProvider {
|
||||
void dumpInternal(int sensorId, @NonNull PrintWriter pw);
|
||||
|
||||
@NonNull
|
||||
ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName);
|
||||
ITestSession createTestSession(int sensorId, @NonNull String opPackageName);
|
||||
|
||||
void dumpHal(int sensorId, @NonNull FileDescriptor fd, @NonNull String[] args);
|
||||
}
|
||||
|
||||
@@ -21,18 +21,15 @@ import static android.Manifest.permission.TEST_BIOMETRIC;
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.face.AuthenticationFrame;
|
||||
import android.hardware.biometrics.face.BaseFrame;
|
||||
import android.hardware.face.Face;
|
||||
import android.hardware.face.IFaceServiceReceiver;
|
||||
import android.os.Binder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Slog;
|
||||
|
||||
import com.android.server.biometrics.HardwareAuthTokenUtils;
|
||||
import com.android.server.biometrics.Utils;
|
||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||
import com.android.server.biometrics.sensors.face.FaceUtils;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -50,7 +47,6 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
|
||||
@NonNull private final Context mContext;
|
||||
private final int mSensorId;
|
||||
@NonNull private final ITestSessionCallback mCallback;
|
||||
@NonNull private final FaceProvider mProvider;
|
||||
@NonNull private final Sensor mSensor;
|
||||
@NonNull private final Set<Integer> mEnrollmentIds;
|
||||
@@ -124,11 +120,9 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
};
|
||||
|
||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
||||
@NonNull ITestSessionCallback callback,
|
||||
@NonNull FaceProvider provider, @NonNull Sensor sensor) {
|
||||
mContext = context;
|
||||
mSensorId = sensorId;
|
||||
mCallback = callback;
|
||||
mProvider = provider;
|
||||
mSensor = sensor;
|
||||
mEnrollmentIds = new HashSet<>();
|
||||
@@ -218,25 +212,6 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
public void cleanupInternalState(int userId) {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mProvider.scheduleInternalCleanup(mSensorId, userId, new BaseClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
|
||||
try {
|
||||
mCallback.onCleanupStarted(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
|
||||
boolean success) {
|
||||
try {
|
||||
mCallback.onCleanupFinished(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
mProvider.scheduleInternalCleanup(mSensorId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import android.content.Context;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.face.IFace;
|
||||
import android.hardware.biometrics.face.SensorProps;
|
||||
import android.hardware.face.Face;
|
||||
@@ -178,8 +177,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
|
||||
for (int i = 0; i < mSensors.size(); i++) {
|
||||
final int sensorId = mSensors.keyAt(i);
|
||||
scheduleLoadAuthenticatorIds(sensorId);
|
||||
scheduleInternalCleanup(sensorId, ActivityManager.getCurrentUser(),
|
||||
null /* callback */);
|
||||
scheduleInternalCleanup(sensorId, ActivityManager.getCurrentUser());
|
||||
}
|
||||
|
||||
return mDaemon;
|
||||
@@ -564,8 +562,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleInternalCleanup(int sensorId, int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback) {
|
||||
public void scheduleInternalCleanup(int sensorId, int userId) {
|
||||
mHandler.post(() -> {
|
||||
final IFace daemon = getHalInstance();
|
||||
if (daemon == null) {
|
||||
@@ -586,7 +583,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
|
||||
FaceUtils.getInstance(sensorId),
|
||||
mSensors.get(sensorId).getAuthenticatorIds());
|
||||
|
||||
mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client, callback);
|
||||
mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client);
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(getTag(), "Remote exception when scheduling internal cleanup", e);
|
||||
}
|
||||
@@ -649,9 +646,8 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) {
|
||||
return mSensors.get(sensorId).createTestSession(callback);
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName) {
|
||||
return mSensors.get(sensorId).createTestSession();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.content.Context;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.hardware.biometrics.BiometricsProtoEnums;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.face.AuthenticationFrame;
|
||||
import android.hardware.biometrics.face.EnrollmentFrame;
|
||||
import android.hardware.biometrics.face.Error;
|
||||
@@ -461,9 +460,8 @@ public class Sensor implements IBinder.DeathRecipient {
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull ITestSession createTestSession(@NonNull ITestSessionCallback callback) {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback,
|
||||
mProvider, this);
|
||||
@NonNull ITestSession createTestSession() {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, mProvider, this);
|
||||
}
|
||||
|
||||
void createNewSession(@NonNull IFace daemon, int sensorId, int userId)
|
||||
|
||||
@@ -21,15 +21,12 @@ import static android.Manifest.permission.TEST_BIOMETRIC;
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.face.Face;
|
||||
import android.hardware.face.IFaceServiceReceiver;
|
||||
import android.os.Binder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Slog;
|
||||
|
||||
import com.android.server.biometrics.Utils;
|
||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||
import com.android.server.biometrics.sensors.face.FaceUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -44,7 +41,6 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
|
||||
@NonNull private final Context mContext;
|
||||
private final int mSensorId;
|
||||
@NonNull private final ITestSessionCallback mCallback;
|
||||
@NonNull private final Face10 mFace10;
|
||||
@NonNull private final Face10.HalResultController mHalResultController;
|
||||
@NonNull private final Set<Integer> mEnrollmentIds;
|
||||
@@ -112,12 +108,10 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
}
|
||||
};
|
||||
|
||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
||||
@NonNull ITestSessionCallback callback, @NonNull Face10 face10,
|
||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId, @NonNull Face10 face10,
|
||||
@NonNull Face10.HalResultController halResultController) {
|
||||
mContext = context;
|
||||
mSensorId = sensorId;
|
||||
mCallback = callback;
|
||||
mFace10 = face10;
|
||||
mHalResultController = halResultController;
|
||||
mEnrollmentIds = new HashSet<>();
|
||||
@@ -195,25 +189,6 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
public void cleanupInternalState(int userId) {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mFace10.scheduleInternalCleanup(mSensorId, userId, new BaseClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
|
||||
try {
|
||||
mCallback.onCleanupStarted(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
|
||||
boolean success) {
|
||||
try {
|
||||
mCallback.onCleanupFinished(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
mFace10.scheduleInternalCleanup(mSensorId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import android.hardware.biometrics.BiometricFaceConstants;
|
||||
import android.hardware.biometrics.BiometricManager;
|
||||
import android.hardware.biometrics.BiometricsProtoEnums;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.face.V1_0.IBiometricsFace;
|
||||
import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback;
|
||||
import android.hardware.face.Face;
|
||||
@@ -124,7 +123,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
|
||||
private final UserSwitchObserver mUserSwitchObserver = new SynchronousUserSwitchObserver() {
|
||||
@Override
|
||||
public void onUserSwitching(int newUserId) {
|
||||
scheduleInternalCleanup(newUserId, null /* callback */);
|
||||
scheduleInternalCleanup(newUserId);
|
||||
scheduleGetFeature(mSensorId, new Binder(), newUserId,
|
||||
BiometricFaceConstants.FEATURE_REQUIRE_ATTENTION,
|
||||
null, mContext.getOpPackageName());
|
||||
@@ -438,7 +437,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
|
||||
Slog.d(TAG, "Face HAL ready, HAL ID: " + halId);
|
||||
if (halId != 0) {
|
||||
scheduleLoadAuthenticatorIds();
|
||||
scheduleInternalCleanup(ActivityManager.getCurrentUser(), null /* callback */);
|
||||
scheduleInternalCleanup(ActivityManager.getCurrentUser());
|
||||
scheduleGetFeature(mSensorId, new Binder(),
|
||||
ActivityManager.getCurrentUser(),
|
||||
BiometricFaceConstants.FEATURE_REQUIRE_ATTENTION, null,
|
||||
@@ -757,8 +756,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
|
||||
});
|
||||
}
|
||||
|
||||
private void scheduleInternalCleanup(int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback) {
|
||||
private void scheduleInternalCleanup(int userId) {
|
||||
mHandler.post(() -> {
|
||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||
|
||||
@@ -766,14 +764,13 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
|
||||
final FaceInternalCleanupClient client = new FaceInternalCleanupClient(mContext,
|
||||
mLazyDaemon, userId, mContext.getOpPackageName(), mSensorId, enrolledList,
|
||||
FaceUtils.getLegacyInstance(mSensorId), mAuthenticatorIds);
|
||||
mScheduler.scheduleClientMonitor(client, callback);
|
||||
mScheduler.scheduleClientMonitor(client);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleInternalCleanup(int sensorId, int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback) {
|
||||
scheduleInternalCleanup(userId, callback);
|
||||
public void scheduleInternalCleanup(int sensorId, int userId) {
|
||||
scheduleInternalCleanup(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -947,9 +944,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorId, callback, this,
|
||||
mHalResultController);
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName) {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorId, this, mHalResultController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.hardware.biometrics.IBiometricAuthenticator;
|
||||
import android.hardware.biometrics.IBiometricSensorReceiver;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
import android.hardware.fingerprint.IFingerprintService;
|
||||
import android.os.IBinder;
|
||||
@@ -43,9 +42,8 @@ public final class FingerprintAuthenticator extends IBiometricAuthenticator.Stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITestSession createTestSession(@NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) throws RemoteException {
|
||||
return mFingerprintService.createTestSession(mSensorId, callback, opPackageName);
|
||||
public ITestSession createTestSession(@NonNull String opPackageName) throws RemoteException {
|
||||
return mFingerprintService.createTestSession(mSensorId, opPackageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -43,7 +43,6 @@ import android.hardware.biometrics.IBiometricService;
|
||||
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.fingerprint.IFingerprint;
|
||||
import android.hardware.biometrics.fingerprint.SensorProps;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
@@ -110,8 +109,7 @@ public class FingerprintService extends SystemService implements BiometricServic
|
||||
*/
|
||||
private final class FingerprintServiceWrapper extends IFingerprintService.Stub {
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) {
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName) {
|
||||
Utils.checkPermission(getContext(), TEST_BIOMETRIC);
|
||||
|
||||
final ServiceProvider provider = getProviderForSensor(sensorId);
|
||||
@@ -121,7 +119,7 @@ public class FingerprintService extends SystemService implements BiometricServic
|
||||
return null;
|
||||
}
|
||||
|
||||
return provider.createTestSession(sensorId, callback, opPackageName);
|
||||
return provider.createTestSession(sensorId, opPackageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
@@ -29,7 +28,6 @@ import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
import android.os.IBinder;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
|
||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
||||
import com.android.server.biometrics.sensors.LockoutTracker;
|
||||
|
||||
@@ -104,8 +102,7 @@ public interface ServiceProvider {
|
||||
@NonNull IFingerprintServiceReceiver receiver, int userId,
|
||||
@NonNull String opPackageName);
|
||||
|
||||
void scheduleInternalCleanup(int sensorId, int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback);
|
||||
void scheduleInternalCleanup(int sensorId, int userId);
|
||||
|
||||
boolean isHardwareDetected(int sensorId);
|
||||
|
||||
@@ -140,6 +137,5 @@ public interface ServiceProvider {
|
||||
void dumpInternal(int sensorId, @NonNull PrintWriter pw);
|
||||
|
||||
@NonNull
|
||||
ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName);
|
||||
ITestSession createTestSession(int sensorId, @NonNull String opPackageName);
|
||||
}
|
||||
|
||||
@@ -21,17 +21,14 @@ import static android.Manifest.permission.TEST_BIOMETRIC;
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.os.Binder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Slog;
|
||||
|
||||
import com.android.server.biometrics.HardwareAuthTokenUtils;
|
||||
import com.android.server.biometrics.Utils;
|
||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -49,7 +46,6 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
|
||||
@NonNull private final Context mContext;
|
||||
private final int mSensorId;
|
||||
@NonNull private final ITestSessionCallback mCallback;
|
||||
@NonNull private final FingerprintProvider mProvider;
|
||||
@NonNull private final Sensor mSensor;
|
||||
@NonNull private final Set<Integer> mEnrollmentIds;
|
||||
@@ -114,11 +110,9 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
};
|
||||
|
||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
||||
@NonNull ITestSessionCallback callback, @NonNull FingerprintProvider provider,
|
||||
@NonNull Sensor sensor) {
|
||||
@NonNull FingerprintProvider provider, @NonNull Sensor sensor) {
|
||||
mContext = context;
|
||||
mSensorId = sensorId;
|
||||
mCallback = callback;
|
||||
mProvider = provider;
|
||||
mSensor = sensor;
|
||||
mEnrollmentIds = new HashSet<>();
|
||||
@@ -198,25 +192,6 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
public void cleanupInternalState(int userId) {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mProvider.scheduleInternalCleanup(mSensorId, userId, new BaseClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
|
||||
try {
|
||||
mCallback.onCleanupStarted(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
|
||||
boolean success) {
|
||||
try {
|
||||
mCallback.onCleanupFinished(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
mProvider.scheduleInternalCleanup(mSensorId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import android.content.Context;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.fingerprint.IFingerprint;
|
||||
import android.hardware.biometrics.fingerprint.SensorProps;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
@@ -186,8 +185,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
for (int i = 0; i < mSensors.size(); i++) {
|
||||
final int sensorId = mSensors.keyAt(i);
|
||||
scheduleLoadAuthenticatorIds(sensorId);
|
||||
scheduleInternalCleanup(sensorId, ActivityManager.getCurrentUser(),
|
||||
null /* callback */);
|
||||
scheduleInternalCleanup(sensorId, ActivityManager.getCurrentUser());
|
||||
}
|
||||
|
||||
return mDaemon;
|
||||
@@ -541,8 +539,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleInternalCleanup(int sensorId, int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback) {
|
||||
public void scheduleInternalCleanup(int sensorId, int userId) {
|
||||
mHandler.post(() -> {
|
||||
final IFingerprint daemon = getHalInstance();
|
||||
if (daemon == null) {
|
||||
@@ -562,7 +559,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
mContext.getOpPackageName(), sensorId, enrolledList,
|
||||
FingerprintUtils.getInstance(sensorId),
|
||||
mSensors.get(sensorId).getAuthenticatorIds());
|
||||
mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client, callback);
|
||||
mSensors.get(sensorId).getScheduler().scheduleClientMonitor(client);
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(getTag(), "Remote exception when scheduling internal cleanup", e);
|
||||
}
|
||||
@@ -707,9 +704,8 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) {
|
||||
return mSensors.get(sensorId).createTestSession(callback);
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName) {
|
||||
return mSensors.get(sensorId).createTestSession();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.content.Context;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.hardware.biometrics.BiometricsProtoEnums;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.fingerprint.Error;
|
||||
import android.hardware.biometrics.fingerprint.IFingerprint;
|
||||
import android.hardware.biometrics.fingerprint.ISession;
|
||||
@@ -441,9 +440,8 @@ class Sensor implements IBinder.DeathRecipient {
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull ITestSession createTestSession(@NonNull ITestSessionCallback callback) {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback,
|
||||
mProvider, this);
|
||||
@NonNull ITestSession createTestSession() {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, mProvider, this);
|
||||
}
|
||||
|
||||
void createNewSession(@NonNull IFingerprint daemon, int sensorId, int userId)
|
||||
|
||||
@@ -21,16 +21,13 @@ import static android.Manifest.permission.TEST_BIOMETRIC;
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.os.Binder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Slog;
|
||||
|
||||
import com.android.server.biometrics.Utils;
|
||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -50,7 +47,6 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
|
||||
@NonNull private final Context mContext;
|
||||
private final int mSensorId;
|
||||
@NonNull private final ITestSessionCallback mCallback;
|
||||
@NonNull private final Fingerprint21 mFingerprint21;
|
||||
@NonNull private final Fingerprint21.HalResultController mHalResultController;
|
||||
@NonNull private final Set<Integer> mEnrollmentIds;
|
||||
@@ -115,12 +111,10 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
};
|
||||
|
||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
||||
@NonNull ITestSessionCallback callback,
|
||||
@NonNull Fingerprint21 fingerprint21,
|
||||
@NonNull Fingerprint21.HalResultController halResultController) {
|
||||
mContext = context;
|
||||
mSensorId = sensorId;
|
||||
mCallback = callback;
|
||||
mFingerprint21 = fingerprint21;
|
||||
mHalResultController = halResultController;
|
||||
mEnrollmentIds = new HashSet<>();
|
||||
@@ -197,25 +191,6 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
public void cleanupInternalState(int userId) {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mFingerprint21.scheduleInternalCleanup(mSensorId, userId, new BaseClientMonitor.Callback() {
|
||||
@Override
|
||||
public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) {
|
||||
try {
|
||||
mCallback.onCleanupStarted(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor,
|
||||
boolean success) {
|
||||
try {
|
||||
mCallback.onCleanupFinished(clientMonitor.getTargetUserId());
|
||||
} catch (RemoteException e) {
|
||||
Slog.e(TAG, "Remote exception", e);
|
||||
}
|
||||
}
|
||||
});
|
||||
mFingerprint21.scheduleInternalCleanup(mSensorId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import android.hardware.biometrics.BiometricManager;
|
||||
import android.hardware.biometrics.BiometricsProtoEnums;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
|
||||
import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
@@ -159,7 +158,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
private final UserSwitchObserver mUserSwitchObserver = new SynchronousUserSwitchObserver() {
|
||||
@Override
|
||||
public void onUserSwitching(int newUserId) {
|
||||
scheduleInternalCleanup(newUserId, null /* callback */);
|
||||
scheduleInternalCleanup(newUserId);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -438,7 +437,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
Slog.d(TAG, "Fingerprint HAL ready, HAL ID: " + halId);
|
||||
if (halId != 0) {
|
||||
scheduleLoadAuthenticatorIds();
|
||||
scheduleInternalCleanup(ActivityManager.getCurrentUser(), null /* callback */);
|
||||
scheduleInternalCleanup(ActivityManager.getCurrentUser());
|
||||
} else {
|
||||
Slog.e(TAG, "Unable to set callback");
|
||||
mDaemon = null;
|
||||
@@ -654,8 +653,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
});
|
||||
}
|
||||
|
||||
private void scheduleInternalCleanup(int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback) {
|
||||
private void scheduleInternalCleanup(int userId) {
|
||||
mHandler.post(() -> {
|
||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||
|
||||
@@ -665,14 +663,13 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
mContext, mLazyDaemon, userId, mContext.getOpPackageName(),
|
||||
mSensorProperties.sensorId, enrolledList,
|
||||
FingerprintUtils.getLegacyInstance(mSensorId), mAuthenticatorIds);
|
||||
mScheduler.scheduleClientMonitor(client, callback);
|
||||
mScheduler.scheduleClientMonitor(client);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleInternalCleanup(int sensorId, int userId,
|
||||
@Nullable BaseClientMonitor.Callback callback) {
|
||||
scheduleInternalCleanup(userId, callback);
|
||||
public void scheduleInternalCleanup(int sensorId, int userId) {
|
||||
scheduleInternalCleanup(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -852,9 +849,8 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback, this,
|
||||
public ITestSession createTestSession(int sensorId, @NonNull String opPackageName) {
|
||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, this,
|
||||
mHalResultController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,6 @@ import android.hardware.biometrics.IBiometricAuthenticator;
|
||||
import android.hardware.biometrics.IBiometricSensorReceiver;
|
||||
import android.hardware.biometrics.IInvalidationCallback;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.biometrics.ITestSessionCallback;
|
||||
import android.hardware.biometrics.SensorPropertiesInternal;
|
||||
import android.hardware.iris.IIrisService;
|
||||
import android.os.IBinder;
|
||||
@@ -40,8 +39,7 @@ public final class IrisAuthenticator extends IBiometricAuthenticator.Stub {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITestSession createTestSession(@NonNull ITestSessionCallback callback,
|
||||
@NonNull String opPackageName) throws RemoteException {
|
||||
public ITestSession createTestSession(@NonNull String opPackageName) throws RemoteException {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user