Merge "Get correct hasEnrolled for work profiles"

This commit is contained in:
TreeHugger Robot
2018-10-06 02:50:45 +00:00
committed by Android (Google) Code Review
4 changed files with 21 additions and 4 deletions

View File

@@ -201,6 +201,10 @@ public interface BiometricAuthenticator {
throw new UnsupportedOperationException("Stub!");
}
default boolean hasEnrolledTemplates(int userId) {
throw new UnsupportedOperationException("Stub!");
}
/**
* This call warms up the hardware and starts scanning for valid biometrics. It terminates
* when {@link AuthenticationCallback#onAuthenticationError(int,

View File

@@ -408,6 +408,7 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
@RequiresPermission(allOf = {
USE_BIOMETRIC_INTERNAL,
INTERACT_ACROSS_USERS})
@Override
public boolean hasEnrolledTemplates(int userId) {
if (mService != null) {
try {

View File

@@ -636,6 +636,14 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
return hasEnrolledFingerprints();
}
/**
* @hide
*/
@Override
public boolean hasEnrolledTemplates(int userId) {
return hasEnrolledFingerprints(userId);
}
/**
* Determine if there is at least one fingerprint enrolled.
*

View File

@@ -260,7 +260,7 @@ public class BiometricService extends SystemService {
final int callingUserId = UserHandle.getCallingUserId();
mHandler.post(() -> {
final Pair<Integer, Integer> result = checkAndGetBiometricModality();
final Pair<Integer, Integer> result = checkAndGetBiometricModality(callingUserId);
final int modality = result.first;
final int error = result.second;
@@ -351,10 +351,11 @@ public class BiometricService extends SystemService {
checkPermission();
checkAppOp(opPackageName, Binder.getCallingUid());
final int userId = UserHandle.getCallingUserId();
final long ident = Binder.clearCallingIdentity();
int error;
try {
final Pair<Integer, Integer> result = checkAndGetBiometricModality();
final Pair<Integer, Integer> result = checkAndGetBiometricModality(userId);
error = result.second;
} finally {
Binder.restoreCallingIdentity(ident);
@@ -466,7 +467,7 @@ public class BiometricService extends SystemService {
* {@link #BIOMETRIC_FINGERPRINT}, {@link #BIOMETRIC_IRIS}, {@link #BIOMETRIC_FACE}
* and the error containing one of the {@link BiometricConstants} errors.
*/
private Pair<Integer, Integer> checkAndGetBiometricModality() {
private Pair<Integer, Integer> checkAndGetBiometricModality(int callingUid) {
int modality = BIOMETRIC_NONE;
// No biometric features, send error
@@ -495,9 +496,12 @@ public class BiometricService extends SystemService {
// order.
firstHwAvailable = modality;
}
if (authenticator.hasEnrolledTemplates()) {
if (authenticator.hasEnrolledTemplates(callingUid)) {
hasTemplatesEnrolled = true;
if (isEnabledForApp(modality)) {
// TODO(b/110907543): When face settings (and other settings) have both a
// user toggle as well as a work profile settings page, this needs to be
// updated to reflect the correct setting.
enabledForApps = true;
break;
}