Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4023b57 authored by Kevin Chyn's avatar Kevin Chyn
Browse files

FingerprintSettings for non-owner should respond to fingerprint touches

Fixes 36869204
Test: create another account, enroll a fingerprint in the new account
touch the sensor and make sure the finger you just enrolled gets highlighted

Change-Id: Ib3e8d9ddc987a2c8b7f0878a83f4cbd025e13f7a
parent 5cd4797c
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -570,12 +570,12 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
     * @return true if caller can use fingerprint API
     */
    private boolean canUseFingerprint(String opPackageName, boolean requireForeground, int uid,
            int pid) {
            int pid, int userId) {
        checkPermission(USE_FINGERPRINT);
        if (isKeyguard(opPackageName)) {
            return true; // Keyguard is always allowed
        }
        if (!isCurrentUserOrProfile(UserHandle.getCallingUserId())) {
        if (!isCurrentUserOrProfile(userId)) {
            Slog.w(TAG,"Rejecting " + opPackageName + " ; not a current user or profile");
            return false;
        }
@@ -906,7 +906,7 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
                @Override
                public void run() {
                    if (!canUseFingerprint(opPackageName, true /* foregroundOnly */,
                            callingUid, pid)) {
                            callingUid, pid, callingUserId)) {
                        if (DEBUG) Slog.v(TAG, "authenticate(): reject " + opPackageName);
                        return;
                    }
@@ -933,10 +933,12 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
        public void cancelAuthentication(final IBinder token, final String opPackageName) {
            final int uid = Binder.getCallingUid();
            final int pid = Binder.getCallingPid();
            final int callingUserId = UserHandle.getCallingUserId();
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    if (!canUseFingerprint(opPackageName, true /* foregroundOnly */, uid, pid)) {
                    if (!canUseFingerprint(opPackageName, true /* foregroundOnly */, uid, pid,
                            callingUserId)) {
                        if (DEBUG) Slog.v(TAG, "cancelAuthentication(): reject " + opPackageName);
                    } else {
                        ClientMonitor client = mCurrentClient;
@@ -996,7 +998,8 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
        @Override // Binder call
        public boolean isHardwareDetected(long deviceId, String opPackageName) {
            if (!canUseFingerprint(opPackageName, false /* foregroundOnly */,
                    Binder.getCallingUid(), Binder.getCallingPid())) {
                    Binder.getCallingUid(), Binder.getCallingPid(),
                    UserHandle.getCallingUserId())) {
                return false;
            }

@@ -1027,7 +1030,8 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
        @Override // Binder call
        public List<Fingerprint> getEnrolledFingerprints(int userId, String opPackageName) {
            if (!canUseFingerprint(opPackageName, false /* foregroundOnly */,
                    Binder.getCallingUid(), Binder.getCallingPid())) {
                    Binder.getCallingUid(), Binder.getCallingPid(),
                    UserHandle.getCallingUserId())) {
                return Collections.emptyList();
            }

@@ -1037,7 +1041,8 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
        @Override // Binder call
        public boolean hasEnrolledFingerprints(int userId, String opPackageName) {
            if (!canUseFingerprint(opPackageName, false /* foregroundOnly */,
                    Binder.getCallingUid(), Binder.getCallingPid())) {
                    Binder.getCallingUid(), Binder.getCallingPid(),
                    UserHandle.getCallingUserId())) {
                return false;
            }