summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorKevin Chyn <kchyn@google.com>2020-08-14 00:55:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-08-14 00:55:03 +0000
commita4db2b38129aeaa880943ad403b3817436f9f570 (patch)
treec67f788bdf4745657291620a0654ab7767f07bd0 /core/java/android
parentaf25e1686493ea96bf71da5253700cfa3cfcb22b (diff)
parente44a86b2edebe3b57c5104514dbbcb9de2856d21 (diff)
Merge changes I708312ca,Ie51b4e36
* changes: 2/n: Keep track of IBiometricsFace@1.0 challenge interruptions 1/n: Slight changes to ClientMonitor's Callback
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/hardware/face/FaceManager.java49
-rw-r--r--core/java/android/hardware/face/IFaceServiceReceiver.aidl2
2 files changed, 51 insertions, 0 deletions
diff --git a/core/java/android/hardware/face/FaceManager.java b/core/java/android/hardware/face/FaceManager.java
index 19cb13c7e114..4f949cfc62a5 100644
--- a/core/java/android/hardware/face/FaceManager.java
+++ b/core/java/android/hardware/face/FaceManager.java
@@ -72,6 +72,8 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
private static final int MSG_SET_FEATURE_COMPLETED = 107;
private static final int MSG_CHALLENGE_GENERATED = 108;
private static final int MSG_FACE_DETECTED = 109;
+ private static final int MSG_CHALLENGE_INTERRUPTED = 110;
+ private static final int MSG_CHALLENGE_INTERRUPT_FINISHED = 111;
private final IFaceService mService;
private final Context mContext;
@@ -150,6 +152,16 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
mHandler.obtainMessage(MSG_CHALLENGE_GENERATED, challenge).sendToTarget();
}
}
+
+ @Override
+ public void onChallengeInterrupted(int sensorId) {
+ mHandler.obtainMessage(MSG_CHALLENGE_INTERRUPTED, sensorId).sendToTarget();
+ }
+
+ @Override
+ public void onChallengeInterruptFinished(int sensorId) {
+ mHandler.obtainMessage(MSG_CHALLENGE_INTERRUPT_FINISHED, sensorId).sendToTarget();
+ }
};
/**
@@ -1071,10 +1083,25 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
}
/**
+ * Callback structure provided to {@link #generateChallenge(GenerateChallengeCallback)}.
* @hide
*/
public interface GenerateChallengeCallback {
+ /**
+ * Invoked when a challenge has been generated.
+ */
void onGenerateChallengeResult(long challenge);
+
+ /**
+ * Invoked if the challenge has not been revoked and a subsequent caller/owner invokes
+ * {@link #generateChallenge(GenerateChallengeCallback)}, but
+ */
+ default void onChallengeInterrupted(int sensorId) {}
+
+ /**
+ * Invoked when the interrupting client has finished (e.g. revoked its challenge).
+ */
+ default void onChallengeInterruptFinished(int sensorId) {}
}
private abstract static class InternalGenerateChallengeCallback
@@ -1157,6 +1184,12 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
sendFaceDetected(msg.arg1 /* sensorId */, msg.arg2 /* userId */,
(boolean) msg.obj /* isStrongBiometric */);
break;
+ case MSG_CHALLENGE_INTERRUPTED:
+ sendChallengeInterrupted((int) msg.obj /* sensorId */);
+ break;
+ case MSG_CHALLENGE_INTERRUPT_FINISHED:
+ sendChallengeInterruptFinished((int) msg.obj /* sensorId */);
+ break;
default:
Slog.w(TAG, "Unknown message: " + msg.what);
}
@@ -1193,6 +1226,22 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
mFaceDetectionCallback.onFaceDetected(sensorId, userId, isStrongBiometric);
}
+ private void sendChallengeInterrupted(int sensorId) {
+ if (mGenerateChallengeCallback == null) {
+ Slog.e(TAG, "sendChallengeInterrupted, callback null");
+ return;
+ }
+ mGenerateChallengeCallback.onChallengeInterrupted(sensorId);
+ }
+
+ private void sendChallengeInterruptFinished(int sensorId) {
+ if (mGenerateChallengeCallback == null) {
+ Slog.e(TAG, "sendChallengeInterruptFinished, callback null");
+ return;
+ }
+ mGenerateChallengeCallback.onChallengeInterruptFinished(sensorId);
+ }
+
private void sendRemovedResult(Face face, int remaining) {
if (mRemovalCallback == null) {
return;
diff --git a/core/java/android/hardware/face/IFaceServiceReceiver.aidl b/core/java/android/hardware/face/IFaceServiceReceiver.aidl
index 2600b7def03a..108f4f69bdd8 100644
--- a/core/java/android/hardware/face/IFaceServiceReceiver.aidl
+++ b/core/java/android/hardware/face/IFaceServiceReceiver.aidl
@@ -32,4 +32,6 @@ oneway interface IFaceServiceReceiver {
void onFeatureSet(boolean success, int feature);
void onFeatureGet(boolean success, int feature, boolean value);
void onChallengeGenerated(long challenge);
+ void onChallengeInterrupted(int sensorId);
+ void onChallengeInterruptFinished(int sensorId);
}