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

Commit 229d8771 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊 Committed by Markus S
Browse files

Keyguard: Allow user configurable fingerprint wake-and-unlock

Change-Id: I471908cfa27a54e0075394eed348cb15386f62ce
parent 611d42e4
Loading
Loading
Loading
Loading
+35 −3
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@ import com.android.systemui.util.RingerModeTracker;
import com.google.android.collect.Lists;

import lineageos.app.LineageContextConstants;
import lineageos.providers.LineageSettings;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -263,6 +264,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    private final ArrayList<WeakReference<KeyguardUpdateMonitorCallback>>
            mCallbacks = Lists.newArrayList();
    private ContentObserver mDeviceProvisionedObserver;
    private ContentObserver mSettingsChangeObserver;

    private boolean mSwitchingUser;

@@ -287,7 +289,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private final Executor mBackgroundExecutor;

    private final boolean mFingerprintWakeAndUnlock;
    private boolean mFingerprintWakeAndUnlock;

    /**
     * Short delay before restarting fingerprint authentication after a successful try. This should
@@ -1573,8 +1575,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        mSubscriptionManager = SubscriptionManager.from(context);
        mDeviceProvisioned = isDeviceProvisionedInSettingsDb();
        mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged);
        mFingerprintWakeAndUnlock = mContext.getResources().getBoolean(
                com.android.systemui.R.bool.config_fingerprintWakeAndUnlock);
        mBackgroundExecutor = backgroundExecutor;
        mBroadcastDispatcher = broadcastDispatcher;
        mRingerModeTracker = ringerModeTracker;
@@ -1582,6 +1582,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        mLockPatternUtils = lockPatternUtils;
        dumpManager.registerDumpable(getClass().getName(), this);

        updateFingerprintSettings();

        mHandler = new Handler(mainLooper) {
            @Override
            public void handleMessage(Message msg) {
@@ -1825,6 +1827,32 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                }
            }
        }

        mSettingsChangeObserver = new ContentObserver(mHandler) {
            @Override
            public void onChange(boolean selfChange) {
                updateFingerprintSettings();
            }
        };
        mContext.getContentResolver().registerContentObserver(
                LineageSettings.System.getUriFor(LineageSettings.System.FINGERPRINT_WAKE_UNLOCK),
                false, mSettingsChangeObserver, UserHandle.USER_ALL);
    }

    private void updateFingerprintSettings() {
        boolean defFingerprintSettings = mContext.getResources().getBoolean(
                com.android.systemui.R.bool.config_fingerprintWakeAndUnlock);
        if (defFingerprintSettings) {
            mFingerprintWakeAndUnlock = LineageSettings.System.getIntForUser(
                    mContext.getContentResolver(), LineageSettings.System.FINGERPRINT_WAKE_UNLOCK,
                    1, UserHandle.USER_CURRENT) == 1;
        } else {
            mFingerprintWakeAndUnlock = defFingerprintSettings;
            // if its false, the device meant to be used like that, disable toggle with 2.
            LineageSettings.System.putIntForUser(mContext.getContentResolver(),
                    LineageSettings.System.FINGERPRINT_WAKE_UNLOCK,
                    2, UserHandle.USER_CURRENT);
        }
    }

    private final UserSwitchObserver mUserSwitchObserver = new UserSwitchObserver() {
@@ -2971,6 +2999,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            mContext.getContentResolver().unregisterContentObserver(mDeviceProvisionedObserver);
        }

        if (mSettingsChangeObserver != null) {
            mContext.getContentResolver().unregisterContentObserver(mSettingsChangeObserver);
        }

        try {
            ActivityManager.getService().unregisterUserSwitchObserver(mUserSwitchObserver);
        } catch (RemoteException e) {