Add logging to track fingerprint reco but not unlocking

Bug 23940153

Change-Id: Idb01802ba68449370e8f3cbede0e2fe6d0b977ce
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index 7fef5e1..122df23 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -775,7 +775,7 @@
                 if (fingerId != reqFingerId) {
                     Log.w(TAG, "Finger id didn't match: " + fingerId + " != " + reqFingerId);
                 }
-                if (fingerId != reqFingerId) {
+                if (groupId != reqGroupId) {
                     Log.w(TAG, "Group id didn't match: " + groupId + " != " + reqGroupId);
                 }
                 mRemovalCallback.onRemovalSucceeded(mRemovalFingerprint);
diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
index ea7d85e..ec7c1c4 100644
--- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
@@ -337,7 +337,7 @@
             return;
         }
         stopPendingOperations(true);
-        mEnrollClient = new ClientMonitor(token, receiver, groupId, restricted);
+        mEnrollClient = new ClientMonitor(token, receiver, groupId, restricted, token.toString());
         final int timeout = (int) (ENROLLMENT_TIMEOUT_MS / MS_PER_SEC);
         try {
             final int result = daemon.enroll(cryptoToken, groupId, timeout);
@@ -417,14 +417,15 @@
     }
 
     void startAuthentication(IBinder token, long opId, int groupId,
-            IFingerprintServiceReceiver receiver, int flags, boolean restricted) {
+            IFingerprintServiceReceiver receiver, int flags, boolean restricted,
+            String opPackageName) {
         IFingerprintDaemon daemon = getFingerprintDaemon();
         if (daemon == null) {
             Slog.w(TAG, "startAuthentication: no fingeprintd!");
             return;
         }
         stopPendingOperations(true);
-        mAuthClient = new ClientMonitor(token, receiver, groupId, restricted);
+        mAuthClient = new ClientMonitor(token, receiver, groupId, restricted, opPackageName);
         if (inLockoutMode()) {
             Slog.v(TAG, "In lockout mode; disallowing authentication");
             if (!mAuthClient.sendError(FingerprintManager.FINGERPRINT_ERROR_LOCKOUT)) {
@@ -481,7 +482,7 @@
         }
 
         stopPendingOperations(true);
-        mRemoveClient = new ClientMonitor(token, receiver, userId, restricted);
+        mRemoveClient = new ClientMonitor(token, receiver, userId, restricted, token.toString());
         // The fingerprint template ids will be removed when we get confirmation from the HAL
         try {
             final int result = daemon.remove(fingerId, userId);
@@ -574,11 +575,11 @@
         }
         if (mAppOps.noteOp(AppOpsManager.OP_USE_FINGERPRINT, uid, opPackageName)
                 != AppOpsManager.MODE_ALLOWED) {
-            Slog.v(TAG, "Rejecting " + opPackageName + " ; permission denied");
+            Slog.w(TAG, "Rejecting " + opPackageName + " ; permission denied");
             return false;
         }
         if (foregroundOnly && !isForegroundActivity(uid, pid)) {
-            Slog.v(TAG, "Rejecting " + opPackageName + " ; not in foreground");
+            Slog.w(TAG, "Rejecting " + opPackageName + " ; not in foreground");
             return false;
         }
         return true;
@@ -606,13 +607,15 @@
         IFingerprintServiceReceiver receiver;
         int userId;
         boolean restricted; // True if client does not have MANAGE_FINGERPRINT permission
+        String owner;
 
         public ClientMonitor(IBinder token, IFingerprintServiceReceiver receiver, int userId,
-                boolean restricted) {
+                boolean restricted, String owner) {
             this.token = token;
             this.receiver = receiver;
             this.userId = userId;
             this.restricted = restricted;
+            this.owner = owner; // name of the client that owns this - for debugging
             try {
                 token.linkToDeath(this, 0);
             } catch (RemoteException e) {
@@ -695,6 +698,10 @@
                     if (!authenticated) {
                         receiver.onAuthenticationFailed(mHalDeviceId);
                     } else {
+                        if (DEBUG) {
+                            Slog.v(TAG, "onAuthenticated(owner=" + mAuthClient.owner
+                                    + ", id=" + fpId + ", gp=" + groupId + ")");
+                        }
                         Fingerprint fp = !restricted ?
                                 new Fingerprint("" /* TODO */, groupId, fpId, mHalDeviceId) : null;
                         receiver.onAuthenticationSucceeded(mHalDeviceId, fp);
@@ -915,6 +922,7 @@
                 final IFingerprintServiceReceiver receiver, final int flags,
                 final String opPackageName) {
             if (!canUseFingerprint(opPackageName, true /* foregroundOnly */)) {
+                if (DEBUG) Slog.v(TAG, "authenticate(): reject " + opPackageName);
                 return;
             }
 
@@ -927,7 +935,8 @@
                 @Override
                 public void run() {
                     MetricsLogger.histogram(mContext, "fingerprint_token", opId != 0L ? 1 : 0);
-                    startAuthentication(token, opId, effectiveGroupId, receiver, flags, restricted);
+                    startAuthentication(token, opId, effectiveGroupId, receiver, flags, restricted,
+                            opPackageName);
                 }
             });
         }