From 3883563d9277af0654fd7fca977e2e2437bb9509 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Wed, 14 Feb 2018 12:46:45 -0800 Subject: [PATCH] Listen for IFingerprintServiceLockoutResetCallback death Fixes: 73106873 Test: adb shell pkill systemui, log shows up Change-Id: I35af0ce0264b6a7ca5b31ec17b32350ef6c9a3b4 --- .../server/fingerprint/FingerprintService.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index b5f94b1ce384a..3da35517faf09 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -915,7 +915,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death notifyLockoutResetMonitors(); } - private class FingerprintServiceLockoutResetMonitor { + private class FingerprintServiceLockoutResetMonitor implements IBinder.DeathRecipient { private static final long WAKELOCK_TIMEOUT_MS = 2000; private final IFingerprintServiceLockoutResetCallback mCallback; @@ -926,6 +926,11 @@ public class FingerprintService extends SystemService implements IHwBinder.Death mCallback = callback; mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "lockout reset callback"); + try { + mCallback.asBinder().linkToDeath(FingerprintServiceLockoutResetMonitor.this, 0); + } catch (RemoteException e) { + Slog.w(TAG, "caught remote exception in linkToDeath", e); + } } public void sendLockoutReset() { @@ -959,6 +964,12 @@ public class FingerprintService extends SystemService implements IHwBinder.Death removeLockoutResetCallback(FingerprintServiceLockoutResetMonitor.this); } }; + + @Override + public void binderDied() { + Slog.e(TAG, "Lockout reset callback binder died"); + mHandler.post(mRemoveCallbackRunnable); + } } private IBiometricsFingerprintClientCallback mDaemonCallback =