summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vincent Wang <firewall@google.com> 2022-09-22 03:13:25 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-09-22 03:13:25 +0000
commita9228bfc558f4f18276eb1aca2fbafc668e8fdfc (patch)
tree1e9516b5d58fd48f5c48b8c89f37404991b5de83
parent1fd117dd039f9129a435383a33aac1c873be448e (diff)
parent56b94f24fc44a078aa67bb70428d203e14db6089 (diff)
Merge "Fix null pointer exception" into tm-qpr-dev am: 56b94f24fc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19992917 Change-Id: Ie193edfa86d717d127197a19eea92ab3e3dbca3b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java75
1 files changed, 43 insertions, 32 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
index 8e4ba5ffa5fc..aae92adc5880 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
@@ -350,18 +350,14 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
@Override
public void onTryAgainPressed(long requestId) {
- if (mReceiver == null) {
- Log.e(TAG, "onTryAgainPressed: Receiver is null");
- return;
- }
-
- if (requestId != mCurrentDialog.getRequestId()) {
- Log.w(TAG, "requestId doesn't match, skip onTryAgainPressed");
+ final IBiometricSysuiReceiver receiver = getCurrentReceiver(requestId);
+ if (receiver == null) {
+ Log.w(TAG, "Skip onTryAgainPressed");
return;
}
try {
- mReceiver.onTryAgainPressed();
+ receiver.onTryAgainPressed();
} catch (RemoteException e) {
Log.e(TAG, "RemoteException when handling try again", e);
}
@@ -369,18 +365,14 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
@Override
public void onDeviceCredentialPressed(long requestId) {
- if (mReceiver == null) {
- Log.e(TAG, "onDeviceCredentialPressed: Receiver is null");
- return;
- }
-
- if (requestId != mCurrentDialog.getRequestId()) {
- Log.w(TAG, "requestId doesn't match, skip onDeviceCredentialPressed");
+ final IBiometricSysuiReceiver receiver = getCurrentReceiver(requestId);
+ if (receiver == null) {
+ Log.w(TAG, "Skip onDeviceCredentialPressed");
return;
}
try {
- mReceiver.onDeviceCredentialPressed();
+ receiver.onDeviceCredentialPressed();
} catch (RemoteException e) {
Log.e(TAG, "RemoteException when handling credential button", e);
}
@@ -388,18 +380,14 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
@Override
public void onSystemEvent(int event, long requestId) {
- if (mReceiver == null) {
- Log.e(TAG, "onSystemEvent(" + event + "): Receiver is null");
- return;
- }
-
- if (requestId != mCurrentDialog.getRequestId()) {
- Log.w(TAG, "requestId doesn't match, skip onSystemEvent");
+ final IBiometricSysuiReceiver receiver = getCurrentReceiver(requestId);
+ if (receiver == null) {
+ Log.w(TAG, "Skip onSystemEvent");
return;
}
try {
- mReceiver.onSystemEvent(event);
+ receiver.onSystemEvent(event);
} catch (RemoteException e) {
Log.e(TAG, "RemoteException when sending system event", e);
}
@@ -407,23 +395,46 @@ public class AuthController extends CoreStartable implements CommandQueue.Callba
@Override
public void onDialogAnimatedIn(long requestId) {
- if (mReceiver == null) {
- Log.e(TAG, "onDialogAnimatedIn: Receiver is null");
- return;
- }
-
- if (requestId != mCurrentDialog.getRequestId()) {
- Log.w(TAG, "requestId doesn't match, skip onDialogAnimatedIn");
+ final IBiometricSysuiReceiver receiver = getCurrentReceiver(requestId);
+ if (receiver == null) {
+ Log.w(TAG, "Skip onDialogAnimatedIn");
return;
}
try {
- mReceiver.onDialogAnimatedIn();
+ receiver.onDialogAnimatedIn();
} catch (RemoteException e) {
Log.e(TAG, "RemoteException when sending onDialogAnimatedIn", e);
}
}
+ @Nullable
+ private IBiometricSysuiReceiver getCurrentReceiver(long requestId) {
+ if (!isRequestIdValid(requestId)) {
+ return null;
+ }
+
+ if (mReceiver == null) {
+ Log.w(TAG, "getCurrentReceiver: Receiver is null");
+ }
+
+ return mReceiver;
+ }
+
+ private boolean isRequestIdValid(long requestId) {
+ if (mCurrentDialog == null) {
+ Log.w(TAG, "shouldNotifyReceiver: dialog already gone");
+ return false;
+ }
+
+ if (requestId != mCurrentDialog.getRequestId()) {
+ Log.w(TAG, "shouldNotifyReceiver: requestId doesn't match");
+ return false;
+ }
+
+ return true;
+ }
+
@Override
public void onDismissed(@DismissedReason int reason,
@Nullable byte[] credentialAttestation, long requestId) {