From ad196f9316e3279cf35f9d67a50e82af173828ac Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Fri, 12 Jun 2020 19:20:05 +0100 Subject: [PATCH] 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 --- .../policy/UserSwitcherController.java | 49 +++++++------------ 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java index 0552396bab077..68d74ef760b44 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -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, Void, ArrayList>() { @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(); - } - // The lock screen is secure and showing. Filter out restricted records. + return countUsers(true); + } + + 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) { - break; - } else { - count++; + if (getUsers().get(i).isGuest && !includeGuest) { + continue; } + if (getUsers().get(i).isRestricted && keyguardShowing) { + break; + } + count++; } return count; }