Merge "Always execute the user switch HAL operation." into sc-dev am: a95d3af476

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15070224

Change-Id: I30139ae3377ea4a75f87ae9c23e5c22315edc0e8
This commit is contained in:
Joe Bolinger
2021-06-23 18:37:17 +00:00
committed by Automerger Merge Worker
2 changed files with 8 additions and 20 deletions

View File

@@ -866,7 +866,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider {
private void scheduleUpdateActiveUserWithoutHandler(int targetUserId) { private void scheduleUpdateActiveUserWithoutHandler(int targetUserId) {
final boolean hasEnrolled = !getEnrolledFaces(mSensorId, targetUserId).isEmpty(); final boolean hasEnrolled = !getEnrolledFaces(mSensorId, targetUserId).isEmpty();
final FaceUpdateActiveUserClient client = new FaceUpdateActiveUserClient(mContext, final FaceUpdateActiveUserClient client = new FaceUpdateActiveUserClient(mContext,
mLazyDaemon, targetUserId, mContext.getOpPackageName(), mSensorId, mCurrentUserId, mLazyDaemon, targetUserId, mContext.getOpPackageName(), mSensorId,
hasEnrolled, mAuthenticatorIds); hasEnrolled, mAuthenticatorIds);
mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() { mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() {
@Override @Override

View File

@@ -34,38 +34,23 @@ public class FaceUpdateActiveUserClient extends HalClientMonitor<IBiometricsFace
private static final String TAG = "FaceUpdateActiveUserClient"; private static final String TAG = "FaceUpdateActiveUserClient";
private static final String FACE_DATA_DIR = "facedata"; private static final String FACE_DATA_DIR = "facedata";
private final int mCurrentUserId;
private final boolean mHasEnrolledBiometrics; private final boolean mHasEnrolledBiometrics;
@NonNull private final Map<Integer, Long> mAuthenticatorIds; @NonNull private final Map<Integer, Long> mAuthenticatorIds;
FaceUpdateActiveUserClient(@NonNull Context context, FaceUpdateActiveUserClient(@NonNull Context context,
@NonNull LazyDaemon<IBiometricsFace> lazyDaemon, int userId, @NonNull String owner, @NonNull LazyDaemon<IBiometricsFace> lazyDaemon, int userId, @NonNull String owner,
int sensorId, int currentUserId, boolean hasEnrolledBIometrics, int sensorId, boolean hasEnrolledBiometrics,
@NonNull Map<Integer, Long> authenticatorIds) { @NonNull Map<Integer, Long> authenticatorIds) {
super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner, super(context, lazyDaemon, null /* token */, null /* listener */, userId, owner,
0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN,
BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN);
mCurrentUserId = currentUserId; mHasEnrolledBiometrics = hasEnrolledBiometrics;
mHasEnrolledBiometrics = hasEnrolledBIometrics;
mAuthenticatorIds = authenticatorIds; mAuthenticatorIds = authenticatorIds;
} }
@Override @Override
public void start(@NonNull Callback callback) { public void start(@NonNull Callback callback) {
super.start(callback); super.start(callback);
if (mCurrentUserId == getTargetUserId()) {
Slog.d(TAG, "Already user: " + mCurrentUserId + ", refreshing authenticatorId");
try {
mAuthenticatorIds.put(getTargetUserId(), mHasEnrolledBiometrics
? getFreshDaemon().getAuthenticatorId().value : 0L);
} catch (RemoteException e) {
Slog.e(TAG, "Unable to refresh authenticatorId", e);
}
callback.onClientFinished(this, true /* success */);
return;
}
startHalOperation(); startHalOperation();
} }
@@ -85,7 +70,10 @@ public class FaceUpdateActiveUserClient extends HalClientMonitor<IBiometricsFace
} }
try { try {
getFreshDaemon().setActiveUser(getTargetUserId(), storePath.getAbsolutePath()); final IBiometricsFace daemon = getFreshDaemon();
daemon.setActiveUser(getTargetUserId(), storePath.getAbsolutePath());
mAuthenticatorIds.put(getTargetUserId(),
mHasEnrolledBiometrics ? daemon.getAuthenticatorId().value : 0L);
mCallback.onClientFinished(this, true /* success */); mCallback.onClientFinished(this, true /* success */);
} catch (RemoteException e) { } catch (RemoteException e) {
Slog.e(TAG, "Failed to setActiveUser: " + e); Slog.e(TAG, "Failed to setActiveUser: " + e);