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

Commit 3b7cddc1 authored by Erin Yan's avatar Erin Yan
Browse files

Check screenlock for unlock dialog

Only show unlock dialog when the foreground user has screenlock and
trusted device.

Bug:144590810
Bug:140261179
Test: Manually on IHU
Change-Id: I08c7aa677150ca950785428580eee6a39ffadd37
parent 06768210
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.view.ViewStub;

import androidx.recyclerview.widget.GridLayoutManager;

import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.R;
import com.android.systemui.car.CarServiceProvider;
import com.android.systemui.dagger.qualifiers.MainResources;
@@ -135,8 +136,9 @@ public class FullscreenUserSwitcher {
                /* isAddUser= */ false,
                /* isForeground= */ true);

        // If the initial user has trusted device, display the unlock dialog on the keyguard.
        if (hasTrustedDevice(initialUser)) {
        // If the initial user has screen lock and trusted device, display the unlock dialog on the
        // keyguard.
        if (hasScreenLock(initialUser) && hasTrustedDevice(initialUser)) {
            mUnlockDialogHelper.showUnlockDialogAfterDelay(initialUser,
                    mOnHideListener);
        } else {
@@ -178,7 +180,7 @@ public class FullscreenUserSwitcher {
     */
    private void onUserSelected(UserGridRecyclerView.UserRecord record) {
        mSelectedUser = record;
        if (hasTrustedDevice(record.mInfo.id)) {
        if (hasScreenLock(record.mInfo.id) && hasTrustedDevice(record.mInfo.id)) {
            mUnlockDialogHelper.showUnlockDialog(record.mInfo.id, mOnHideListener);
            return;
        }
@@ -216,6 +218,12 @@ public class FullscreenUserSwitcher {

    }

    private boolean hasScreenLock(int uid) {
        LockPatternUtils lockPatternUtils = new LockPatternUtils(mContext);
        return lockPatternUtils.getCredentialTypeForUser(uid)
                != LockPatternUtils.CREDENTIAL_TYPE_NONE;
    }

    private boolean hasTrustedDevice(int uid) {
        if (mEnrollmentManager == null) { // car service not ready, so it cannot be available.
            return false;