Merge "Configures FingerprintService to use FingerprintStateCallback to notify clients of fingerprint sensor state changes" into sc-dev
This commit is contained in:
@@ -23,6 +23,7 @@ import static android.Manifest.permission.TEST_BIOMETRIC;
|
|||||||
import static android.Manifest.permission.USE_BIOMETRIC;
|
import static android.Manifest.permission.USE_BIOMETRIC;
|
||||||
import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL;
|
import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL;
|
||||||
import static android.Manifest.permission.USE_FINGERPRINT;
|
import static android.Manifest.permission.USE_FINGERPRINT;
|
||||||
|
import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON;
|
||||||
|
|
||||||
import static com.android.internal.util.FrameworkStatsLog.AUTH_DEPRECATED_APIUSED__DEPRECATED_API__API_FINGERPRINT_MANAGER_AUTHENTICATE;
|
import static com.android.internal.util.FrameworkStatsLog.AUTH_DEPRECATED_APIUSED__DEPRECATED_API__API_FINGERPRINT_MANAGER_AUTHENTICATE;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.AUTH_DEPRECATED_APIUSED__DEPRECATED_API__API_FINGERPRINT_MANAGER_HAS_ENROLLED_FINGERPRINTS;
|
import static com.android.internal.util.FrameworkStatsLog.AUTH_DEPRECATED_APIUSED__DEPRECATED_API__API_FINGERPRINT_MANAGER_HAS_ENROLLED_FINGERPRINTS;
|
||||||
@@ -877,6 +878,19 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forwards FingerprintStateListener to FingerprintService
|
||||||
|
* @param listener new FingerprintStateListener being added
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void registerFingerprintStateListener(@NonNull FingerprintStateListener listener) {
|
||||||
|
try {
|
||||||
|
mService.registerFingerprintStateListener(listener);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
throw e.rethrowFromSystemServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@@ -988,6 +1002,16 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the device has a power button fingerprint sensor.
|
||||||
|
* @return boolean indicating whether power button is fingerprint sensor
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean isPowerbuttonFps() {
|
||||||
|
final FingerprintSensorPropertiesInternal sensorProps = getFirstFingerprintSensor();
|
||||||
|
return sensorProps.sensorType == TYPE_POWER_BUTTON;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -156,6 +156,6 @@ interface IFingerprintService {
|
|||||||
// Sets the controller for managing the UDFPS overlay.
|
// Sets the controller for managing the UDFPS overlay.
|
||||||
void setUdfpsOverlayController(in IUdfpsOverlayController controller);
|
void setUdfpsOverlayController(in IUdfpsOverlayController controller);
|
||||||
|
|
||||||
// Registers FingerprintStateListener in list stored by FingerprintService
|
// Registers FingerprintStateListener in list stored by FingerprintService.
|
||||||
void registerFingerprintStateListener(IFingerprintStateListener listener);
|
void registerFingerprintStateListener(IFingerprintStateListener listener);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2014 The Android Open Source Project
|
* Copyright (C) 2021 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -19,7 +19,7 @@ import android.hardware.fingerprint.Fingerprint;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Communication channel for FingerprintManager to register the FingerprintStateListener
|
* Communication channel for FingerprintManager to register the FingerprintStateListener
|
||||||
* in FingerprintService
|
* in FingerprintService.
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
oneway interface IFingerprintStateListener {
|
oneway interface IFingerprintStateListener {
|
||||||
|
|||||||
@@ -471,7 +471,7 @@ public class BiometricScheduler {
|
|||||||
* Adds a {@link BaseClientMonitor} to the pending queue
|
* Adds a {@link BaseClientMonitor} to the pending queue
|
||||||
*
|
*
|
||||||
* @param clientMonitor operation to be scheduled
|
* @param clientMonitor operation to be scheduled
|
||||||
* @param clientCallback optional callback, invoked when the client state changes
|
* @param clientCallback optional callback, invoked when the client state changes.
|
||||||
*/
|
*/
|
||||||
public void scheduleClientMonitor(@NonNull BaseClientMonitor clientMonitor,
|
public void scheduleClientMonitor(@NonNull BaseClientMonitor clientMonitor,
|
||||||
@Nullable BaseClientMonitor.Callback clientCallback) {
|
@Nullable BaseClientMonitor.Callback clientCallback) {
|
||||||
|
|||||||
@@ -29,11 +29,6 @@ import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPR
|
|||||||
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_USER_CANCELED;
|
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_USER_CANCELED;
|
||||||
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR;
|
import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_VENDOR;
|
||||||
import static android.hardware.biometrics.SensorProperties.STRENGTH_STRONG;
|
import static android.hardware.biometrics.SensorProperties.STRENGTH_STRONG;
|
||||||
import static android.hardware.fingerprint.FingerprintStateListener.STATE_AUTH_OTHER;
|
|
||||||
import static android.hardware.fingerprint.FingerprintStateListener.STATE_BP_AUTH;
|
|
||||||
import static android.hardware.fingerprint.FingerprintStateListener.STATE_ENROLLING;
|
|
||||||
import static android.hardware.fingerprint.FingerprintStateListener.STATE_IDLE;
|
|
||||||
import static android.hardware.fingerprint.FingerprintStateListener.STATE_KEYGUARD_AUTH;
|
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
@@ -55,7 +50,6 @@ import android.hardware.fingerprint.Fingerprint;
|
|||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||||
import android.hardware.fingerprint.FingerprintServiceReceiver;
|
import android.hardware.fingerprint.FingerprintServiceReceiver;
|
||||||
import android.hardware.fingerprint.FingerprintStateListener;
|
|
||||||
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
|
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
|
||||||
import android.hardware.fingerprint.IFingerprintService;
|
import android.hardware.fingerprint.IFingerprintService;
|
||||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||||
@@ -82,8 +76,6 @@ import com.android.internal.widget.LockPatternUtils;
|
|||||||
import com.android.server.ServiceThread;
|
import com.android.server.ServiceThread;
|
||||||
import com.android.server.SystemService;
|
import com.android.server.SystemService;
|
||||||
import com.android.server.biometrics.Utils;
|
import com.android.server.biometrics.Utils;
|
||||||
import com.android.server.biometrics.sensors.AuthenticationClient;
|
|
||||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
|
||||||
import com.android.server.biometrics.sensors.BiometricServiceCallback;
|
import com.android.server.biometrics.sensors.BiometricServiceCallback;
|
||||||
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
||||||
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
|
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
|
||||||
@@ -91,7 +83,6 @@ import com.android.server.biometrics.sensors.LockoutTracker;
|
|||||||
import com.android.server.biometrics.sensors.fingerprint.aidl.FingerprintProvider;
|
import com.android.server.biometrics.sensors.fingerprint.aidl.FingerprintProvider;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.hidl.Fingerprint21;
|
import com.android.server.biometrics.sensors.fingerprint.hidl.Fingerprint21;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.hidl.Fingerprint21UdfpsMock;
|
import com.android.server.biometrics.sensors.fingerprint.hidl.Fingerprint21UdfpsMock;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.hidl.FingerprintEnrollClient;
|
|
||||||
|
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
@@ -116,60 +107,13 @@ public class FingerprintService extends SystemService implements BiometricServic
|
|||||||
private final FingerprintServiceWrapper mServiceWrapper;
|
private final FingerprintServiceWrapper mServiceWrapper;
|
||||||
@NonNull private List<ServiceProvider> mServiceProviders;
|
@NonNull private List<ServiceProvider> mServiceProviders;
|
||||||
@NonNull private final FingerprintStateCallback mFingerprintStateCallback;
|
@NonNull private final FingerprintStateCallback mFingerprintStateCallback;
|
||||||
@NonNull private @FingerprintStateListener.State int mFingerprintState;
|
|
||||||
|
|
||||||
private List<IFingerprintStateListener> mFingerprintStateListeners = new ArrayList<>();
|
|
||||||
|
|
||||||
/** Callback to receive notifications about changes in fingerprint state. */
|
|
||||||
public final class FingerprintStateCallback implements BaseClientMonitor.Callback {
|
|
||||||
@Override
|
|
||||||
public void onClientStarted(@NonNull BaseClientMonitor client) {
|
|
||||||
final int previousFingerprintState = mFingerprintState;
|
|
||||||
if (client instanceof AuthenticationClient) {
|
|
||||||
AuthenticationClient authClient = (AuthenticationClient) client;
|
|
||||||
if (authClient.isKeyguard()) {
|
|
||||||
mFingerprintState = STATE_KEYGUARD_AUTH;
|
|
||||||
} else if (authClient.isBiometricPrompt()) {
|
|
||||||
mFingerprintState = STATE_BP_AUTH;
|
|
||||||
} else {
|
|
||||||
mFingerprintState = STATE_AUTH_OTHER;
|
|
||||||
}
|
|
||||||
} else if (client instanceof FingerprintEnrollClient) {
|
|
||||||
mFingerprintState = STATE_ENROLLING;
|
|
||||||
} else {
|
|
||||||
Slog.w(TAG, "Other authentication client: " + Utils.getClientName(client));
|
|
||||||
mFingerprintState = STATE_IDLE;
|
|
||||||
}
|
|
||||||
Slog.d(TAG, "Fps state updated from " + previousFingerprintState + " to "
|
|
||||||
+ mFingerprintState + ", client " + client);
|
|
||||||
notifyFingerprintStateListeners(mFingerprintState);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClientFinished(@NonNull BaseClientMonitor client, boolean success) {
|
|
||||||
mFingerprintState = STATE_IDLE;
|
|
||||||
Slog.d(TAG, "Client finished, fps state updated to " + mFingerprintState
|
|
||||||
+ ", client " + client);
|
|
||||||
notifyFingerprintStateListeners(mFingerprintState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void notifyFingerprintStateListeners(@FingerprintStateListener.State int newState) {
|
|
||||||
for (IFingerprintStateListener listener : mFingerprintStateListeners) {
|
|
||||||
try {
|
|
||||||
listener.onStateChanged(newState);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
Slog.e(TAG, "Remote exception in fingerprint state change", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers FingerprintStateListener in list stored by FingerprintService
|
* Registers FingerprintStateListener in list stored by FingerprintService
|
||||||
* @param listener new FingerprintStateListener being added
|
* @param listener new FingerprintStateListener being added
|
||||||
*/
|
*/
|
||||||
public void registerFingerprintStateListener(IFingerprintStateListener listener) {
|
public void registerFingerprintStateListener(@NonNull IFingerprintStateListener listener) {
|
||||||
mFingerprintStateListeners.add(listener);
|
mFingerprintStateCallback.registerFingerprintStateListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -636,7 +580,8 @@ public class FingerprintService extends SystemService implements BiometricServic
|
|||||||
: provider.getSensorProperties()) {
|
: provider.getSensorProperties()) {
|
||||||
pw.println("Dumping for sensorId: " + props.sensorId
|
pw.println("Dumping for sensorId: " + props.sensorId
|
||||||
+ ", provider: " + provider.getClass().getSimpleName());
|
+ ", provider: " + provider.getClass().getSimpleName());
|
||||||
pw.println("Fps state: " + mFingerprintState);
|
pw.println("Fps state: "
|
||||||
|
+ mFingerprintStateCallback.getFingerprintState());
|
||||||
provider.dumpInternal(props.sensorId, pw);
|
provider.dumpInternal(props.sensorId, pw);
|
||||||
pw.println();
|
pw.println();
|
||||||
}
|
}
|
||||||
@@ -898,7 +843,6 @@ public class FingerprintService extends SystemService implements BiometricServic
|
|||||||
mLockPatternUtils = new LockPatternUtils(context);
|
mLockPatternUtils = new LockPatternUtils(context);
|
||||||
mServiceProviders = new ArrayList<>();
|
mServiceProviders = new ArrayList<>();
|
||||||
mFingerprintStateCallback = new FingerprintStateCallback();
|
mFingerprintStateCallback = new FingerprintStateCallback();
|
||||||
mFingerprintState = STATE_IDLE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 com.android.server.biometrics.sensors.fingerprint;
|
||||||
|
|
||||||
|
import static android.hardware.fingerprint.FingerprintStateListener.STATE_AUTH_OTHER;
|
||||||
|
import static android.hardware.fingerprint.FingerprintStateListener.STATE_BP_AUTH;
|
||||||
|
import static android.hardware.fingerprint.FingerprintStateListener.STATE_ENROLLING;
|
||||||
|
import static android.hardware.fingerprint.FingerprintStateListener.STATE_IDLE;
|
||||||
|
import static android.hardware.fingerprint.FingerprintStateListener.STATE_KEYGUARD_AUTH;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
|
import android.hardware.fingerprint.FingerprintStateListener;
|
||||||
|
import android.hardware.fingerprint.IFingerprintStateListener;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.util.Slog;
|
||||||
|
|
||||||
|
import com.android.server.biometrics.Utils;
|
||||||
|
import com.android.server.biometrics.sensors.AuthenticationClient;
|
||||||
|
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||||
|
import com.android.server.biometrics.sensors.fingerprint.hidl.FingerprintEnrollClient;
|
||||||
|
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A callback for receiving notifications about changes in fingerprint state.
|
||||||
|
*/
|
||||||
|
public class FingerprintStateCallback implements BaseClientMonitor.Callback {
|
||||||
|
private @FingerprintStateListener.State int mFingerprintState;
|
||||||
|
@NonNull private final CopyOnWriteArrayList<IFingerprintStateListener>
|
||||||
|
mFingerprintStateListeners = new CopyOnWriteArrayList<>();
|
||||||
|
|
||||||
|
public FingerprintStateCallback() {
|
||||||
|
mFingerprintState = STATE_IDLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFingerprintState() {
|
||||||
|
return mFingerprintState;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClientStarted(@NonNull BaseClientMonitor client) {
|
||||||
|
final int previousFingerprintState = mFingerprintState;
|
||||||
|
if (client instanceof AuthenticationClient) {
|
||||||
|
AuthenticationClient authClient = (AuthenticationClient) client;
|
||||||
|
if (authClient.isKeyguard()) {
|
||||||
|
mFingerprintState = STATE_KEYGUARD_AUTH;
|
||||||
|
} else if (authClient.isBiometricPrompt()) {
|
||||||
|
mFingerprintState = STATE_BP_AUTH;
|
||||||
|
} else {
|
||||||
|
mFingerprintState = STATE_AUTH_OTHER;
|
||||||
|
}
|
||||||
|
} else if (client instanceof FingerprintEnrollClient) {
|
||||||
|
mFingerprintState = STATE_ENROLLING;
|
||||||
|
} else {
|
||||||
|
Slog.w(FingerprintService.TAG,
|
||||||
|
"Other authentication client: " + Utils.getClientName(client));
|
||||||
|
mFingerprintState = STATE_IDLE;
|
||||||
|
}
|
||||||
|
Slog.d(FingerprintService.TAG, "Fps state updated from " + previousFingerprintState
|
||||||
|
+ " to " + mFingerprintState + ", client " + client);
|
||||||
|
notifyFingerprintStateListeners(mFingerprintState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClientFinished(@NonNull BaseClientMonitor client, boolean success) {
|
||||||
|
mFingerprintState = STATE_IDLE;
|
||||||
|
Slog.d(FingerprintService.TAG,
|
||||||
|
"Client finished, fps state updated to " + mFingerprintState + ", client "
|
||||||
|
+ client);
|
||||||
|
notifyFingerprintStateListeners(mFingerprintState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyFingerprintStateListeners(@FingerprintStateListener.State int newState) {
|
||||||
|
for (IFingerprintStateListener listener : mFingerprintStateListeners) {
|
||||||
|
try {
|
||||||
|
listener.onStateChanged(newState);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Slog.e(FingerprintService.TAG, "Remote exception in fingerprint state change", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables clients to register a FingerprintStateListener. Used by FingerprintService to forward
|
||||||
|
* updates in fingerprint sensor state to the SideFpNsEventHandler
|
||||||
|
* @param listener
|
||||||
|
*/
|
||||||
|
public void registerFingerprintStateListener(@NonNull IFingerprintStateListener listener) {
|
||||||
|
mFingerprintStateListeners.add(listener);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -87,20 +87,20 @@ public interface ServiceProvider {
|
|||||||
void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken, int userId,
|
void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken, int userId,
|
||||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||||
@FingerprintManager.EnrollReason int enrollReason,
|
@FingerprintManager.EnrollReason int enrollReason,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback);
|
@NonNull FingerprintStateCallback fingerprintStateCallback);
|
||||||
|
|
||||||
void cancelEnrollment(int sensorId, @NonNull IBinder token);
|
void cancelEnrollment(int sensorId, @NonNull IBinder token);
|
||||||
|
|
||||||
void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
||||||
@NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName,
|
@NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName,
|
||||||
int statsClient,
|
int statsClient,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback);
|
@NonNull FingerprintStateCallback fingerprintStateCallback);
|
||||||
|
|
||||||
void scheduleAuthenticate(int sensorId, @NonNull IBinder token, long operationId, int userId,
|
void scheduleAuthenticate(int sensorId, @NonNull IBinder token, long operationId, int userId,
|
||||||
int cookie, @NonNull ClientMonitorCallbackConverter callback,
|
int cookie, @NonNull ClientMonitorCallbackConverter callback,
|
||||||
@NonNull String opPackageName, boolean restricted, int statsClient,
|
@NonNull String opPackageName, boolean restricted, int statsClient,
|
||||||
boolean allowBackgroundAuthentication,
|
boolean allowBackgroundAuthentication,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback);
|
@NonNull FingerprintStateCallback fingerprintStateCallback);
|
||||||
|
|
||||||
void startPreparedClient(int sensorId, int cookie);
|
void startPreparedClient(int sensorId, int cookie);
|
||||||
|
|
||||||
@@ -151,6 +151,6 @@ public interface ServiceProvider {
|
|||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback,
|
@NonNull FingerprintStateCallback fingerprintStateCallback,
|
||||||
@NonNull String opPackageName);
|
@NonNull String opPackageName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import android.util.Slog;
|
|||||||
import com.android.server.biometrics.HardwareAuthTokenUtils;
|
import com.android.server.biometrics.HardwareAuthTokenUtils;
|
||||||
import com.android.server.biometrics.Utils;
|
import com.android.server.biometrics.Utils;
|
||||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintService;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintStateCallback;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -51,7 +51,7 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
|||||||
@NonNull private final Context mContext;
|
@NonNull private final Context mContext;
|
||||||
private final int mSensorId;
|
private final int mSensorId;
|
||||||
@NonNull private final ITestSessionCallback mCallback;
|
@NonNull private final ITestSessionCallback mCallback;
|
||||||
@NonNull private final FingerprintService.FingerprintStateCallback mFingerprintStateCallback;
|
@NonNull private final FingerprintStateCallback mFingerprintStateCallback;
|
||||||
@NonNull private final FingerprintProvider mProvider;
|
@NonNull private final FingerprintProvider mProvider;
|
||||||
@NonNull private final Sensor mSensor;
|
@NonNull private final Sensor mSensor;
|
||||||
@NonNull private final Set<Integer> mEnrollmentIds;
|
@NonNull private final Set<Integer> mEnrollmentIds;
|
||||||
@@ -117,7 +117,7 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
|||||||
|
|
||||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
||||||
@NonNull ITestSessionCallback callback,
|
@NonNull ITestSessionCallback callback,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback,
|
@NonNull FingerprintStateCallback fingerprintStateCallback,
|
||||||
@NonNull FingerprintProvider provider,
|
@NonNull FingerprintProvider provider,
|
||||||
@NonNull Sensor sensor) {
|
@NonNull Sensor sensor) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
|||||||
import com.android.server.biometrics.sensors.InvalidationRequesterClient;
|
import com.android.server.biometrics.sensors.InvalidationRequesterClient;
|
||||||
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
|
import com.android.server.biometrics.sensors.LockoutResetDispatcher;
|
||||||
import com.android.server.biometrics.sensors.PerformanceTracker;
|
import com.android.server.biometrics.sensors.PerformanceTracker;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintService;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintStateCallback;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
|
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.ServiceProvider;
|
import com.android.server.biometrics.sensors.fingerprint.ServiceProvider;
|
||||||
@@ -320,7 +320,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
|||||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken,
|
public void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken,
|
||||||
int userId, @NonNull IFingerprintServiceReceiver receiver,
|
int userId, @NonNull IFingerprintServiceReceiver receiver,
|
||||||
@NonNull String opPackageName, @FingerprintManager.EnrollReason int enrollReason,
|
@NonNull String opPackageName, @FingerprintManager.EnrollReason int enrollReason,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
final int maxTemplatesPerUser = mSensors.get(sensorId).getSensorProperties()
|
final int maxTemplatesPerUser = mSensors.get(sensorId).getSensorProperties()
|
||||||
.maxEnrollmentsPerUser;
|
.maxEnrollmentsPerUser;
|
||||||
@@ -358,7 +358,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
|||||||
public void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
public void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
||||||
@NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName,
|
@NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName,
|
||||||
int statsClient,
|
int statsClient,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
final boolean isStrongBiometric = Utils.isStrongBiometric(sensorId);
|
final boolean isStrongBiometric = Utils.isStrongBiometric(sensorId);
|
||||||
final FingerprintDetectClient client = new FingerprintDetectClient(mContext,
|
final FingerprintDetectClient client = new FingerprintDetectClient(mContext,
|
||||||
@@ -374,7 +374,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
|||||||
int userId, int cookie, @NonNull ClientMonitorCallbackConverter callback,
|
int userId, int cookie, @NonNull ClientMonitorCallbackConverter callback,
|
||||||
@NonNull String opPackageName, boolean restricted, int statsClient,
|
@NonNull String opPackageName, boolean restricted, int statsClient,
|
||||||
boolean allowBackgroundAuthentication,
|
boolean allowBackgroundAuthentication,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
final boolean isStrongBiometric = Utils.isStrongBiometric(sensorId);
|
final boolean isStrongBiometric = Utils.isStrongBiometric(sensorId);
|
||||||
final FingerprintAuthenticationClient client = new FingerprintAuthenticationClient(
|
final FingerprintAuthenticationClient client = new FingerprintAuthenticationClient(
|
||||||
@@ -572,7 +572,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback,
|
@NonNull FingerprintStateCallback fingerprintStateCallback,
|
||||||
@NonNull String opPackageName) {
|
@NonNull String opPackageName) {
|
||||||
return mSensors.get(sensorId).createTestSession(callback, fingerprintStateCallback);
|
return mSensors.get(sensorId).createTestSession(callback, fingerprintStateCallback);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ import com.android.server.biometrics.sensors.RemovalConsumer;
|
|||||||
import com.android.server.biometrics.sensors.StartUserClient;
|
import com.android.server.biometrics.sensors.StartUserClient;
|
||||||
import com.android.server.biometrics.sensors.StopUserClient;
|
import com.android.server.biometrics.sensors.StopUserClient;
|
||||||
import com.android.server.biometrics.sensors.UserAwareBiometricScheduler;
|
import com.android.server.biometrics.sensors.UserAwareBiometricScheduler;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintService;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintStateCallback;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
|
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
|
||||||
|
|
||||||
@@ -488,7 +488,7 @@ class Sensor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NonNull ITestSession createTestSession(@NonNull ITestSessionCallback callback,
|
@NonNull ITestSession createTestSession(@NonNull ITestSessionCallback callback,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback,
|
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback,
|
||||||
fingerprintStateCallback, mProvider, this);
|
fingerprintStateCallback, mProvider, this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import android.util.Slog;
|
|||||||
|
|
||||||
import com.android.server.biometrics.Utils;
|
import com.android.server.biometrics.Utils;
|
||||||
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
import com.android.server.biometrics.sensors.BaseClientMonitor;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintService;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintStateCallback;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -52,7 +52,7 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
|||||||
@NonNull private final Context mContext;
|
@NonNull private final Context mContext;
|
||||||
private final int mSensorId;
|
private final int mSensorId;
|
||||||
@NonNull private final ITestSessionCallback mCallback;
|
@NonNull private final ITestSessionCallback mCallback;
|
||||||
@NonNull private final FingerprintService.FingerprintStateCallback mFingerprintStateCallback;
|
@NonNull private final FingerprintStateCallback mFingerprintStateCallback;
|
||||||
@NonNull private final Fingerprint21 mFingerprint21;
|
@NonNull private final Fingerprint21 mFingerprint21;
|
||||||
@NonNull private final Fingerprint21.HalResultController mHalResultController;
|
@NonNull private final Fingerprint21.HalResultController mHalResultController;
|
||||||
@NonNull private final Set<Integer> mEnrollmentIds;
|
@NonNull private final Set<Integer> mEnrollmentIds;
|
||||||
@@ -118,7 +118,7 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
|||||||
|
|
||||||
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
BiometricTestSessionImpl(@NonNull Context context, int sensorId,
|
||||||
@NonNull ITestSessionCallback callback,
|
@NonNull ITestSessionCallback callback,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback,
|
@NonNull FingerprintStateCallback fingerprintStateCallback,
|
||||||
@NonNull Fingerprint21 fingerprint21,
|
@NonNull Fingerprint21 fingerprint21,
|
||||||
@NonNull Fingerprint21.HalResultController halResultController) {
|
@NonNull Fingerprint21.HalResultController halResultController) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ import com.android.server.biometrics.sensors.LockoutResetDispatcher;
|
|||||||
import com.android.server.biometrics.sensors.LockoutTracker;
|
import com.android.server.biometrics.sensors.LockoutTracker;
|
||||||
import com.android.server.biometrics.sensors.PerformanceTracker;
|
import com.android.server.biometrics.sensors.PerformanceTracker;
|
||||||
import com.android.server.biometrics.sensors.RemovalConsumer;
|
import com.android.server.biometrics.sensors.RemovalConsumer;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintService;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintStateCallback;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
import com.android.server.biometrics.sensors.fingerprint.FingerprintUtils;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
|
import com.android.server.biometrics.sensors.fingerprint.GestureAvailabilityDispatcher;
|
||||||
import com.android.server.biometrics.sensors.fingerprint.ServiceProvider;
|
import com.android.server.biometrics.sensors.fingerprint.ServiceProvider;
|
||||||
@@ -574,7 +574,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
|||||||
@NonNull byte[] hardwareAuthToken, int userId,
|
@NonNull byte[] hardwareAuthToken, int userId,
|
||||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||||
@FingerprintManager.EnrollReason int enrollReason,
|
@FingerprintManager.EnrollReason int enrollReason,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||||
|
|
||||||
@@ -614,7 +614,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
|||||||
public void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
public void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
||||||
@NonNull ClientMonitorCallbackConverter listener, @NonNull String opPackageName,
|
@NonNull ClientMonitorCallbackConverter listener, @NonNull String opPackageName,
|
||||||
int statsClient,
|
int statsClient,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||||
|
|
||||||
@@ -632,7 +632,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
|||||||
int userId, int cookie, @NonNull ClientMonitorCallbackConverter listener,
|
int userId, int cookie, @NonNull ClientMonitorCallbackConverter listener,
|
||||||
@NonNull String opPackageName, boolean restricted, int statsClient,
|
@NonNull String opPackageName, boolean restricted, int statsClient,
|
||||||
boolean allowBackgroundAuthentication,
|
boolean allowBackgroundAuthentication,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback) {
|
@NonNull FingerprintStateCallback fingerprintStateCallback) {
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||||
|
|
||||||
@@ -896,7 +896,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
public ITestSession createTestSession(int sensorId, @NonNull ITestSessionCallback callback,
|
||||||
@NonNull FingerprintService.FingerprintStateCallback fingerprintStateCallback,
|
@NonNull FingerprintStateCallback fingerprintStateCallback,
|
||||||
@NonNull String opPackageName) {
|
@NonNull String opPackageName) {
|
||||||
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback,
|
return new BiometricTestSessionImpl(mContext, mSensorProperties.sensorId, callback,
|
||||||
fingerprintStateCallback, this, mHalResultController);
|
fingerprintStateCallback, this, mHalResultController);
|
||||||
|
|||||||
Reference in New Issue
Block a user