From 4086660243e15d18328b931c3f5a28d0a7a8009a Mon Sep 17 00:00:00 2001 From: maxwen Date: Sat, 8 Apr 2017 01:43:29 +0200 Subject: [PATCH] base: services: add config_fingerprintRemoveClientOnCancel to call removeClient right in cancelAuthentification removing possible delays when calling stop in startClient Change-Id: Ia7fc2cb53e8182d0514f4773dfc914770b9ea585 --- core/res/res/values/config.xml | 1 - core/res/res/values/custom_config.xml | 4 ++++ core/res/res/values/custom_symbols.xml | 2 ++ .../com/android/server/fingerprint/FingerprintService.java | 6 ++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 9d4c8e8a7e32c..378eac7a5e2fa 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2722,5 +2722,4 @@ true false - diff --git a/core/res/res/values/custom_config.xml b/core/res/res/values/custom_config.xml index 1c1f36e460ca6..c234969509565 100644 --- a/core/res/res/values/custom_config.xml +++ b/core/res/res/values/custom_config.xml @@ -87,6 +87,10 @@ true will use SystemClock.elapsedRealtimeNanos() to set timestamp. --> false + + false + false diff --git a/core/res/res/values/custom_symbols.xml b/core/res/res/values/custom_symbols.xml index 61430291c686b..2071884f2c573 100644 --- a/core/res/res/values/custom_symbols.xml +++ b/core/res/res/values/custom_symbols.xml @@ -112,6 +112,8 @@ + + diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index e6408238e4c2f..63dd58bd9fdc5 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -121,6 +121,7 @@ private class PerformanceStats { private ClientMonitor mCurrentClient; private ClientMonitor mPendingClient; private PerformanceStats mPerformanceStats; + private boolean mRemoveClientOnCancel; // Normal fingerprint authentications are tracked by mPerformanceMap. private HashMap mPerformanceMap @@ -191,6 +192,8 @@ public FingerprintService(Context context) { mContext.registerReceiver(mLockoutReceiver, new IntentFilter(ACTION_LOCKOUT_RESET), RESET_FINGERPRINT_LOCKOUT, null /* handler */); mUserManager = UserManager.get(mContext); + mRemoveClientOnCancel = context.getResources().getBoolean( + com.android.internal.R.bool.config_fingerprintRemoveClientOnCancel); } @Override @@ -854,6 +857,9 @@ public void run() { if (client.getToken() == token) { if (DEBUG) Slog.v(TAG, "stop client " + client.getOwnerString()); client.stop(client.getToken() == token); + if (mRemoveClientOnCancel) { + removeClient(client); + } } else { if (DEBUG) Slog.v(TAG, "can't stop client " + client.getOwnerString() + " since tokens don't match");