diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index e6484e965ee06..a118f167ae5cb 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -2437,6 +2437,17 @@ public class DevicePolicyManager { return false; } + /** + * Determine whether or not creating a guest user has been disabled for the device + * + * @hide + */ + public boolean getGuestUserDisabled(@Nullable ComponentName admin) { + // Currently guest users can always be created if multi-user is enabled + // TODO introduce a policy for guest user creation + return false; + } + /** * Called by a device/profile owner to set whether the screen capture is disabled. Disabling * screen capture also prevents the content from being shown on display devices that do not have diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index 37467caf8bfcb..d178d20ac14cc 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.app.ActivityManager; import android.app.ActivityManagerNative; +import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.pm.UserInfo; import android.content.res.Resources; @@ -1337,12 +1338,15 @@ public class UserManager { } /** - * Returns true if the user switcher should be shown, this will be if there - * are multiple users that aren't managed profiles. + * Returns true if the user switcher should be shown, this will be if device supports multi-user + * and there are at least 2 users available that are not managed profiles. * @hide * @return true if user switcher should be shown. */ public boolean isUserSwitcherEnabled() { + if (!supportsMultipleUsers()) { + return false; + } List users = getUsers(true); if (users == null) { return false; @@ -1353,8 +1357,8 @@ public class UserManager { ++switchableUserCount; } } - final boolean guestEnabled = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.GUEST_USER_ENABLED, 0) == 1; + final boolean guestEnabled = !mContext.getSystemService(DevicePolicyManager.class) + .getGuestUserDisabled(null); return switchableUserCount > 1 || guestEnabled; } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 225f0cf97c2e7..d601831b863c4 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -7688,14 +7688,6 @@ public final class Settings { */ public static final String DEVICE_NAME = "device_name"; - /** - * Whether it should be possible to create a guest user on the device. - *

- * Type: int (0 for disabled, 1 for enabled) - * @hide - */ - public static final String GUEST_USER_ENABLED = "guest_user_enabled"; - /** * Whether the NetworkScoringService has been first initialized. *

diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml index 1cd2908e77e9c..c324abd0dd22f 100644 --- a/packages/SettingsProvider/res/values/defaults.xml +++ b/packages/SettingsProvider/res/values/defaults.xml @@ -204,9 +204,6 @@ true - - true - true diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index ee296d90608f7..d4e428e280b60 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -1693,20 +1693,7 @@ class DatabaseHelper extends SQLiteOpenHelper { } if (upgradeVersion < 105) { - if (mUserHandle == UserHandle.USER_SYSTEM) { - db.beginTransaction(); - SQLiteStatement stmt = null; - try { - stmt = db.compileStatement("INSERT OR IGNORE INTO global(name,value)" - + " VALUES(?,?);"); - loadBooleanSetting(stmt, Settings.Global.GUEST_USER_ENABLED, - R.bool.def_guest_user_enabled); - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - if (stmt != null) stmt.close(); - } - } + // No-op: GUEST_USER_ENABLED setting was removed upgradeVersion = 105; } @@ -2705,8 +2692,6 @@ class DatabaseHelper extends SQLiteOpenHelper { loadSetting(stmt, Settings.Global.DEVICE_NAME, getDefaultDeviceName()); - loadBooleanSetting(stmt, Settings.Global.GUEST_USER_ENABLED, - R.bool.def_guest_user_enabled); loadSetting(stmt, Settings.Global.ENHANCED_4G_MODE_ENABLED, ImsConfig.FeatureValueConstants.ON); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java index e70d146119f46..71267cd7c5827 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java @@ -81,7 +81,7 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener } private void registerListener() { - if (UserSwitcherController.isUserSwitcherAvailable(mUserManager) && mUserListener == null) { + if (mUserManager.isUserSwitcherEnabled() && mUserListener == null) { final UserSwitcherController controller = mUserSwitcherController; if (controller != null) { @@ -103,7 +103,7 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener @Override public void onClick(View v) { - if (UserSwitcherController.isUserSwitcherAvailable(mUserManager)) { + if (mUserManager.isUserSwitcherEnabled()) { if (mKeyguardMode) { if (mKeyguardUserSwitcher != null) { mKeyguardUserSwitcher.show(true /* animate */); @@ -135,14 +135,14 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener private void refreshContentDescription() { String currentUser = null; - if (UserSwitcherController.isUserSwitcherAvailable(mUserManager) + if (mUserManager.isUserSwitcherEnabled() && mUserSwitcherController != null) { currentUser = mUserSwitcherController.getCurrentUserName(mContext); } String text = null; if (isClickable()) { - if (UserSwitcherController.isUserSwitcherAvailable(mUserManager)) { + if (mUserManager.isUserSwitcherEnabled()) { if (TextUtils.isEmpty(currentUser)) { text = mContext.getString(R.string.accessibility_multi_user_switch_switcher); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 876a9340befe1..37edc28b765d0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -882,7 +882,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mKeyguardBottomArea.setAccessibilityController(mAccessibilityController); mNextAlarmController = new NextAlarmController(mContext); mKeyguardMonitor = new KeyguardMonitor(mContext); - if (UserSwitcherController.isUserSwitcherAvailable(UserManager.get(mContext))) { + if (UserManager.get(mContext).isUserSwitcherEnabled()) { mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor, mHandler); if (mUserSwitcherController.useFullscreenUserSwitcher()) { 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 81658941b339f..e00b8907a01a4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java @@ -752,9 +752,4 @@ public class UserSwitcherController { } } } - - public static boolean isUserSwitcherAvailable(UserManager um) { - return UserManager.supportsMultipleUsers() && um.isUserSwitcherEnabled(); - } - }