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

Commit ad196f93 authored by Ben Murdoch's avatar Ben Murdoch Committed by Peter Kalauskas
Browse files

Respect "Don't add users on lock screen" regardless of lockscreeen secure state.

Currently this system setting only applies when a secure lock screen is
set. It's more consistent to apply the preference whether the lock
screen is secure or not (even if in the case of an insecure lockscreen
there is nothing to stop someone "unlocking" the device and then adding
more users through system or quick settings.

Bug: 152587665
Test: Manual
Change-Id: I8281e7bea291a77a2eec7aaf47e8531bb3925c10
parent d12736a8
Loading
Loading
Loading
Loading
+16 −31
Original line number Diff line number Diff line
@@ -113,7 +113,9 @@ public class UserSwitcherController implements Dumpable {
    private int mLastNonGuestUser = UserHandle.USER_SYSTEM;
    private boolean mResumeUserOnGuestLogout = true;
    private boolean mSimpleUserSwitcher;
    private boolean mAddUsersWhenLocked;
    // When false, there won't be any visual affordance to add a new user from the keyguard even if
    // the user is unlocked
    private boolean mAddUsersFromLockScreen;
    private boolean mPauseRefreshUsers;
    private int mSecondaryUser = UserHandle.USER_NULL;
    private Intent mSecondaryUserServiceIntent;
@@ -204,7 +206,7 @@ public class UserSwitcherController implements Dumpable {
        }
        mForcePictureLoadForUserId.clear();

        final boolean addUsersWhenLocked = mAddUsersWhenLocked;
        final boolean addUsersWhenLocked = mAddUsersFromLockScreen;
        new AsyncTask<SparseArray<Bitmap>, Void, ArrayList<UserRecord>>() {
            @SuppressWarnings("unchecked")
            @Override
@@ -554,7 +556,7 @@ public class UserSwitcherController implements Dumpable {
    private final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
        public void onChange(boolean selfChange) {
            mSimpleUserSwitcher = shouldUseSimpleUserSwitcher();
            mAddUsersWhenLocked = Settings.Global.getInt(mContext.getContentResolver(),
            mAddUsersFromLockScreen = Settings.Global.getInt(mContext.getContentResolver(),
                    Settings.Global.ADD_USERS_WHEN_LOCKED, 0) != 0;
            refreshUsers(UserHandle.USER_NULL);
        };
@@ -610,43 +612,26 @@ public class UserSwitcherController implements Dumpable {
        }

        public int getUserCount() {
            boolean secureKeyguardShowing = mKeyguardStateController.isShowing()
                    && mKeyguardStateController.isMethodSecure()
                    && !mKeyguardStateController.canDismissLockScreen();
            if (!secureKeyguardShowing) {
                return getUsers().size();
            }
            // The lock screen is secure and showing. Filter out restricted records.
            final int userSize = getUsers().size();
            int count = 0;
            for (int i = 0; i < userSize; i++) {
                if (getUsers().get(i).isGuest) continue;
                if (getUsers().get(i).isRestricted) {
                    break;
                } else {
                    count++;
                }
            }
            return count;
            return countUsers(false);
        }

        @Override
        public int getCount() {
            boolean secureKeyguardShowing = mKeyguardStateController.isShowing()
                    && mKeyguardStateController.isMethodSecure()
                    && !mKeyguardStateController.canDismissLockScreen();
            if (!secureKeyguardShowing) {
                return getUsers().size();
            return countUsers(true);
        }
            // The lock screen is secure and showing. Filter out restricted records.

        private int countUsers(boolean includeGuest) {
            boolean keyguardShowing = mKeyguardStateController.isShowing();
            final int userSize = getUsers().size();
            int count = 0;
            for (int i = 0; i < userSize; i++) {
                if (getUsers().get(i).isRestricted) {
                if (getUsers().get(i).isGuest && !includeGuest) {
                    continue;
                }
                if (getUsers().get(i).isRestricted && keyguardShowing) {
                    break;
                } else {
                    count++;
                }
                count++;
            }
            return count;
        }