diff options
| author | 2024-01-23 10:35:44 -0800 | |
|---|---|---|
| committer | 2024-01-23 10:35:44 -0800 | |
| commit | 03083be96d2d8cdd66cff7b46ef4bc506b601222 (patch) | |
| tree | c31a66d1a778eb1b2598805fa25180423018dbe2 | |
| parent | 3b29a4d1ad37b55b9bec08c330accc1a4c9bbbab (diff) | |
Make listener non-nullable
Test: atest BaseClientMonitorTest
Bug: 300103815
Change-Id: Idcecef148f1dbda85881cb77f31589603847bf7a
18 files changed, 49 insertions, 107 deletions
diff --git a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java index aa6a0f1bb55f..fbd32a67fe6c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java @@ -112,10 +112,8 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement getLogger().logOnError(getContext(), getOperationContext(), errorCode, vendorCode, getTargetUserId()); try { - if (getListener() != null) { - mShouldSendErrorToClient = false; - getListener().onError(getSensorId(), getCookie(), errorCode, vendorCode); - } + mShouldSendErrorToClient = false; + getListener().onError(getSensorId(), getCookie(), errorCode, vendorCode); } catch (RemoteException e) { Slog.w(TAG, "Failed to invoke sendError", e); } @@ -147,9 +145,7 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement final int errorCode = BiometricConstants.BIOMETRIC_ERROR_CANCELED; try { - if (getListener() != null) { - getListener().onError(getSensorId(), getCookie(), errorCode, 0 /* vendorCode */); - } + getListener().onError(getSensorId(), getCookie(), errorCode, 0 /* vendorCode */); } catch (RemoteException e) { Slog.w(TAG, "Failed to invoke sendError", e); } @@ -181,7 +177,7 @@ public abstract class AcquisitionClient<T> extends HalClientMonitor<T> implement } try { - if (getListener() != null && shouldSend) { + if (shouldSend) { getListener().onAcquired(getSensorId(), acquiredInfo, vendorCode); } } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java index f9568ea9d72b..506b4562b43d 100644 --- a/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java @@ -265,17 +265,13 @@ public abstract class AuthenticationClient<T, O extends AuthenticateOptions> Slog.d(TAG, "Skipping addAuthToken"); } try { - if (listener != null) { - if (!mIsRestricted) { - listener.onAuthenticationSucceeded(getSensorId(), identifier, byteToken, - getTargetUserId(), mIsStrongBiometric); - } else { - listener.onAuthenticationSucceeded(getSensorId(), null /* identifier */, - byteToken, - getTargetUserId(), mIsStrongBiometric); - } + if (!mIsRestricted) { + listener.onAuthenticationSucceeded(getSensorId(), identifier, byteToken, + getTargetUserId(), mIsStrongBiometric); } else { - Slog.e(TAG, "Received successful auth, but client was not listening"); + listener.onAuthenticationSucceeded(getSensorId(), null /* identifier */, + byteToken, + getTargetUserId(), mIsStrongBiometric); } } catch (RemoteException e) { Slog.e(TAG, "Unable to notify listener", e); @@ -301,11 +297,7 @@ public abstract class AuthenticationClient<T, O extends AuthenticateOptions> } try { - if (listener != null) { - listener.onAuthenticationFailed(getSensorId()); - } else { - Slog.e(TAG, "Received failed auth, but client was not listening"); - } + listener.onAuthenticationFailed(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Unable to notify listener", e); mCallback.onClientFinished(this, false); diff --git a/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java b/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java index 0216e49b531b..a4088524117c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java +++ b/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java @@ -22,6 +22,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.hardware.biometrics.BiometricConstants; +import android.hardware.biometrics.IBiometricSensorReceiver; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; @@ -55,7 +56,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { @Nullable private IBinder mToken; private long mRequestId; - @Nullable private ClientMonitorCallbackConverter mListener; + @NonNull private ClientMonitorCallbackConverter mListener; // Currently only used for authentication client. The cookie generated by BiometricService // is never 0. private final int mCookie; @@ -95,7 +96,8 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { mContext = context; mToken = token; mRequestId = -1; - mListener = listener; + mListener = listener == null ? new ClientMonitorCallbackConverter( + new IBiometricSensorReceiver.Default()) : listener; mTargetUserId = userId; mOwner = owner; mCookie = cookie; @@ -199,7 +201,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { } mToken = null; if (clearListener) { - mListener = null; + mListener = new ClientMonitorCallbackConverter(new IBiometricSensorReceiver.Default()); } } @@ -233,8 +235,8 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { return mOwner; } - @Nullable - public final ClientMonitorCallbackConverter getListener() { + @NonNull + protected ClientMonitorCallbackConverter getListener() { return mListener; } @@ -312,9 +314,7 @@ public abstract class BaseClientMonitor implements IBinder.DeathRecipient { final int errorCode = BiometricConstants.BIOMETRIC_ERROR_CANCELED; try { ClientMonitorCallbackConverter listener = getListener(); - if (listener != null) { - listener.onError(getSensorId(), getCookie(), errorCode, 0 /* vendorCode */); - } + listener.onError(getSensorId(), getCookie(), errorCode, 0 /* vendorCode */); } catch (RemoteException e) { Slog.w(TAG, "Failed to invoke sendError", e); } diff --git a/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java index 2c4d30b622ad..8e7004d8fde5 100644 --- a/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/EnrollClient.java @@ -82,9 +82,7 @@ public abstract class EnrollClient<T> extends AcquisitionClient<T> implements En final ClientMonitorCallbackConverter listener = getListener(); try { - if (listener != null) { - listener.onEnrollResult(identifier, remaining); - } + listener.onEnrollResult(identifier, remaining); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } diff --git a/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java b/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java index 45ffa23dc66a..d2ef2786c252 100644 --- a/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/RemovalClient.java @@ -74,13 +74,9 @@ public abstract class RemovalClient<S extends BiometricAuthenticator.Identifier, if (identifier == null) { Slog.e(TAG, "identifier was null, skipping onRemove()"); try { - if (getListener() != null) { - getListener().onError(getSensorId(), getCookie(), - BiometricConstants.BIOMETRIC_ERROR_UNABLE_TO_REMOVE, - 0 /* vendorCode */); - } else { - Slog.e(TAG, "Error, listener was null, not sending onError callback"); - } + getListener().onError(getSensorId(), getCookie(), + BiometricConstants.BIOMETRIC_ERROR_UNABLE_TO_REMOVE, + 0 /* vendorCode */); } catch (RemoteException e) { Slog.w(TAG, "Failed to send error to client for onRemoved", e); } @@ -93,9 +89,7 @@ public abstract class RemovalClient<S extends BiometricAuthenticator.Identifier, identifier.getBiometricId()); try { - if (getListener() != null) { - getListener().onRemoved(identifier, remaining); - } + getListener().onRemoved(identifier, remaining); } catch (RemoteException e) { Slog.w(TAG, "Failed to notify Removed:", e); } diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java index 22e399c6747b..d2b2a8bf9ec9 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java @@ -318,7 +318,7 @@ public class FaceAuthenticationClient onAcquiredInternal(acquireInfo, vendorCode, false /* shouldSend */); final boolean shouldSend = shouldSendAcquiredMessage(acquireInfo, vendorCode); - if (shouldSend && getListener() != null) { + if (shouldSend) { try { getListener().onAuthenticationFrame(frame); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceEnrollClient.java index f5c452992674..5f370f23134c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceEnrollClient.java @@ -152,7 +152,7 @@ public class FaceEnrollClient extends EnrollClient<AidlSession> { onAcquiredInternal(acquireInfo, vendorCode, false /* shouldSend */); final boolean shouldSend = shouldSendAcquiredMessage(acquireInfo, vendorCode); - if (shouldSend && getListener() != null) { + if (shouldSend) { try { getListener().onEnrollmentFrame(frame); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java index e404bd2be31e..cf45eb8b3178 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java @@ -58,11 +58,6 @@ public class FaceGenerateChallengeClient extends GenerateChallengeClient<AidlSes void onChallengeGenerated(int sensorId, int userId, long challenge) { try { final ClientMonitorCallbackConverter listener = getListener(); - if (listener == null) { - Slog.e(TAG, "Listener is null in onChallengeGenerated"); - mCallback.onClientFinished(this, false /* success */); - return; - } listener.onChallengeGenerated(sensorId, userId, challenge); mCallback.onClientFinished(this, true /* success */); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java index 981253699322..47aaeec81978 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGetFeatureClient.java @@ -61,9 +61,7 @@ public class FaceGetFeatureClient extends HalClientMonitor<IBiometricsFace> { @Override public void unableToStart() { try { - if (getListener() != null) { - getListener().onFeatureGet(false /* success */, new int[0], new boolean[0]); - } + getListener().onFeatureGet(false /* success */, new int[0], new boolean[0]); } catch (RemoteException e) { Slog.e(TAG, "Unable to send error", e); } @@ -85,9 +83,7 @@ public class FaceGetFeatureClient extends HalClientMonitor<IBiometricsFace> { featureState[0] = result.value; mValue = result.value; - if (getListener() != null) { - getListener().onFeatureGet(result.status == Status.OK, features, featureState); - } + getListener().onFeatureGet(result.status == Status.OK, features, featureState); mCallback.onClientFinished(this, true /* success */); } catch (RemoteException e) { Slog.e(TAG, "Unable to getFeature", e); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java index f7e812330ece..dfb299eb5f7f 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java @@ -440,9 +440,7 @@ public class FingerprintAuthenticationClient pc.major); } - if (getListener() != null) { - getListener().onUdfpsPointerDown(getSensorId()); - } + getListener().onUdfpsPointerDown(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } @@ -461,9 +459,7 @@ public class FingerprintAuthenticationClient session.getSession().onPointerUp(pc.pointerId); } - if (getListener() != null) { - getListener().onUdfpsPointerUp(getSensorId()); - } + getListener().onUdfpsPointerUp(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java index a7fb7741fee1..cb220b9e1c34 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintDetectClient.java @@ -175,11 +175,7 @@ public class FingerprintDetectClient extends AcquisitionClient<AidlSession> vibrateSuccess(); try { - if (getListener() != null) { - getListener().onDetected(getSensorId(), getTargetUserId(), mIsStrongBiometric); - } else { - Slog.e(TAG, "Listener is null!"); - } + getListener().onDetected(getSensorId(), getTargetUserId(), mIsStrongBiometric); mCallback.onClientFinished(this, true /* success */); } catch (RemoteException e) { Slog.e(TAG, "Remote exception when sending onDetected", e); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java index 3fb9223249b4..225bd594adc6 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java @@ -305,9 +305,7 @@ public class FingerprintEnrollClient extends EnrollClient<AidlSession> implement pc.major); } - if (getListener() != null) { - getListener().onUdfpsPointerDown(getSensorId()); - } + getListener().onUdfpsPointerDown(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Unable to send pointer down", e); } @@ -325,9 +323,7 @@ public class FingerprintEnrollClient extends EnrollClient<AidlSession> implement session.getSession().onPointerUp(pc.pointerId); } - if (getListener() != null) { - getListener().onUdfpsPointerUp(getSensorId()); - } + getListener().onUdfpsPointerUp(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Unable to send pointer up", e); } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java index ce693ff58e19..d2f36ce26b0e 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java @@ -59,11 +59,6 @@ public class FingerprintGenerateChallengeClient extends GenerateChallengeClient< void onChallengeGenerated(int sensorId, int userId, long challenge) { try { final ClientMonitorCallbackConverter listener = getListener(); - if (listener == null) { - Slog.e(TAG, "Listener is null in onChallengeGenerated"); - mCallback.onClientFinished(this, false /* success */); - return; - } listener.onChallengeGenerated(sensorId, userId, challenge); mCallback.onClientFinished(this, true /* success */); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java index 9232e11a05ee..f85794673476 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21UdfpsMock.java @@ -28,6 +28,7 @@ import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback; import android.hardware.fingerprint.FingerprintManager.AuthenticationResult; import android.hardware.fingerprint.FingerprintSensorProperties; import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; +import android.hardware.fingerprint.IFingerprintServiceReceiver; import android.hardware.fingerprint.IUdfpsOverlayController; import android.os.Handler; import android.os.IBinder; @@ -367,7 +368,8 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage final IBinder token = client.getToken(); final long operationId = authClient.getOperationId(); final int cookie = client.getCookie(); - final ClientMonitorCallbackConverter listener = client.getListener(); + final ClientMonitorCallbackConverter listener = new ClientMonitorCallbackConverter( + new IFingerprintServiceReceiver.Default()); final boolean restricted = authClient.isRestricted(); final int statsClient = client.getLogger().getStatsClient(); final boolean isKeyguard = authClient.isKeyguard(); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java index 4c1d4d6d6d12..7518e88eade9 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java @@ -269,12 +269,10 @@ class FingerprintAuthenticationClient mALSProbeCallback.getProbe().enable(); UdfpsHelper.onFingerDown(getFreshDaemon(), (int) pc.x, (int) pc.y, pc.minor, pc.major); - if (getListener() != null) { - try { - getListener().onUdfpsPointerDown(getSensorId()); - } catch (RemoteException e) { - Slog.e(TAG, "Remote exception", e); - } + try { + getListener().onUdfpsPointerDown(getSensorId()); + } catch (RemoteException e) { + Slog.e(TAG, "Remote exception", e); } } @@ -285,12 +283,10 @@ class FingerprintAuthenticationClient mALSProbeCallback.getProbe().disable(); UdfpsHelper.onFingerUp(getFreshDaemon()); - if (getListener() != null) { - try { - getListener().onUdfpsPointerUp(getSensorId()); - } catch (RemoteException e) { - Slog.e(TAG, "Remote exception", e); - } + try { + getListener().onUdfpsPointerUp(getSensorId()); + } catch (RemoteException e) { + Slog.e(TAG, "Remote exception", e); } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java index 6e029d2268e2..50e48fe91c56 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java @@ -153,12 +153,10 @@ class FingerprintDetectClient extends AcquisitionClient<IBiometricsFingerprint> final PerformanceTracker pm = PerformanceTracker.getInstanceForSensorId(getSensorId()); pm.incrementAuthForUser(getTargetUserId(), authenticated); - if (getListener() != null) { - try { - getListener().onDetected(getSensorId(), getTargetUserId(), mIsStrongBiometric); - } catch (RemoteException e) { - Slog.e(TAG, "Remote exception when sending onDetected", e); - } + try { + getListener().onDetected(getSensorId(), getTargetUserId(), mIsStrongBiometric); + } catch (RemoteException e) { + Slog.e(TAG, "Remote exception when sending onDetected", e); } } diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/BaseClientMonitorTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/BaseClientMonitorTest.java index 3a9c0f0f1790..a1f0dbd4e889 100644 --- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/BaseClientMonitorTest.java +++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/BaseClientMonitorTest.java @@ -70,7 +70,7 @@ public class BaseClientMonitorTest { mClientMonitor.binderDied(); assertThat(mClientMonitor.mCanceled).isTrue(); - assertThat(mClientMonitor.getListener()).isNull(); + assertThat(mClientMonitor.getListener()).isNotNull(); } @Test diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClientTest.java index c8bfaa90d863..5b81277250c2 100644 --- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClientTest.java +++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClientTest.java @@ -87,14 +87,6 @@ public class FaceGenerateChallengeClientTest { verify(mCallback).onClientFinished(mClient, true); } - @Test - public void generateChallenge_nullListener() { - createClient(null); - mClient.start(mCallback); - - verify(mCallback).onClientFinished(mClient, false); - } - private void createClient(ClientMonitorCallbackConverter listener) { mClient = new FaceGenerateChallengeClient(mContext, () -> mAidlSession, mToken, listener, USER_ID, TAG, SENSOR_ID, mBiometricLogger, mBiometricContext); |