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

Commit 7693732c authored by Jim Miller's avatar Jim Miller Committed by Android Git Automerger
Browse files

am d3893078: am 63ec93d5: Merge "Have FingerprintService keep the device awake...

am d3893078: am 63ec93d5: Merge "Have FingerprintService keep the device awake on relevant events." into mnc-dev

* commit 'd3893078':
  Have FingerprintService keep the device awake on relevant events.
parents b6b233b9 d3893078
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import java.util.List;
 */
interface IFingerprintService {
    // Authenticate the given sessionId with a fingerprint
    void authenticate(IBinder token, long sessionId, int groupId,
    void authenticate(IBinder token, long sessionId, int userId,
            IFingerprintServiceReceiver receiver, int flags, String opPackageName);

    // Cancel authentication for the given sessionId
+28 −2
Original line number Diff line number Diff line
@@ -30,9 +30,11 @@ import android.os.IBinder;
import android.os.IRemoteCallback;
import android.os.Looper;
import android.os.MessageQueue;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.SELinux;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.util.Slog;

@@ -70,6 +72,7 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
    private static final int MSG_USER_SWITCHING = 10;
    private static final int ENROLLMENT_TIMEOUT_MS = 60 * 1000; // 1 minute

    private boolean mIsKeyguard; // true if the authentication client is keyguard
    private ClientMonitor mAuthClient = null;
    private ClientMonitor mEnrollClient = null;
    private ClientMonitor mRemoveClient = null;
@@ -78,6 +81,7 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
    private static final long MS_PER_SEC = 1000;
    private static final long FAIL_LOCKOUT_TIMEOUT_MS = 30*1000;
    private static final int MAX_FAILED_ATTEMPTS = 5;
    private static final int FINGERPRINT_ACQUIRED_GOOD = 0;

    Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
@@ -97,6 +101,7 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
    private long mHalDeviceId;
    private int mFailedAttempts;
    private IFingerprintDaemon mDaemon;
    private PowerManager mPowerManager;

    private final Runnable mLockoutReset = new Runnable() {
        @Override
@@ -109,6 +114,7 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
        super(context);
        mContext = context;
        mAppOps = context.getSystemService(AppOpsManager.class);
        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
    }

    @Override
@@ -191,7 +197,11 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
                removeClient(mAuthClient);
            }
        }
    }

    private void userActivity() {
        long now = SystemClock.uptimeMillis();
        mPowerManager.userActivity(now, PowerManager.USER_ACTIVITY_EVENT_TOUCH, 0);
    }

    void handleUserSwitching(int userId) {
@@ -498,9 +508,10 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
         */
        private boolean sendAuthenticated(int fpId, int groupId) {
            boolean result = false;
            boolean authenticated = fpId != 0;
            if (receiver != null) {
                try {
                    if (fpId == 0) {
                    if (!authenticated) {
                        receiver.onAuthenticationFailed(mHalDeviceId);
                    } else {
                        Fingerprint fp = !restricted ?
@@ -522,6 +533,11 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
                result |= true; // we have a valid fingerprint
                mLockoutReset.run();
            }
            // For fingerprint devices that support touch-to-wake, this will ensure the device
            // wakes up and turns the screen on when fingerprint is authenticated.
            if (mIsKeyguard && authenticated) {
                mPowerManager.wakeUp(SystemClock.uptimeMillis());
            }
            return result;
        }

@@ -537,6 +553,12 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
                Slog.w(TAG, "Failed to invoke sendAcquired:", e);
                return true; // client failed
            }
            finally {
                // Good scans will keep the device awake
                if (acquiredInfo == FINGERPRINT_ACQUIRED_GOOD) {
                    userActivity();
                }
            }
        }

        /*
@@ -589,6 +611,8 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
    };

    private final class FingerprintServiceWrapper extends IFingerprintService.Stub {
        private static final String KEYGUARD_PACKAGE = "com.android.systemui";

        @Override // Binder call
        public long preEnroll(IBinder token) {
            checkPermission(MANAGE_FINGERPRINT);
@@ -638,7 +662,8 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe

        @Override // Binder call
        public void authenticate(final IBinder token, final long opId, final int groupId,
                final IFingerprintServiceReceiver receiver, final int flags, String opPackageName) {
                final IFingerprintServiceReceiver receiver, final int flags,
                final String opPackageName) {

            if (!canUseFingerprint(opPackageName)) {
                return;
@@ -647,6 +672,7 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    mIsKeyguard = KEYGUARD_PACKAGE.equals(opPackageName);
                    startAuthentication(token, opId, groupId, receiver, flags, restricted);
                }
            });
+1 −1
Original line number Diff line number Diff line
@@ -3117,7 +3117,7 @@ public final class PowerManagerService extends SystemService
                return;
            }

            if (eventTime > SystemClock.uptimeMillis()) {
            if (eventTime > now) {
                throw new IllegalArgumentException("event time must not be in the future");
            }