Add handling of admin enforced restrictions in Users Settings
Before, when the restrictions were applied, the preferences that were restricted were hidden. After this change, if admin applies a restriction, the preference is displayed as disabled and Policy Transparency Dialog is displayed Bug: 338226475 Test: atest UserSettingsTest && atest UserDetailsSettingsTest Flag: android.multiuser.new_multiuser_settings_ux Change-Id: I1b5aeeeec7accde278ff3e46ea3d64c91d8400db
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.DialogInterface;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
@@ -33,6 +34,8 @@ import androidx.preference.Preference;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.RestrictedSwitchPreference;
|
||||
|
||||
/**
|
||||
@@ -70,11 +73,15 @@ public class RemoveGuestOnExitPreferenceController extends BasePreferenceControl
|
||||
if (!isAvailable()) {
|
||||
restrictedSwitchPreference.setVisible(false);
|
||||
} else {
|
||||
restrictedSwitchPreference.setDisabledByAdmin(
|
||||
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
|
||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||
final RestrictedLockUtils.EnforcedAdmin disallowRemoveUserAdmin =
|
||||
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(mContext,
|
||||
UserManager.DISALLOW_REMOVE_USER, UserHandle.myUserId());
|
||||
restrictedSwitchPreference.setDisabledByAdmin(disallowRemoveUserAdmin);
|
||||
restrictedSwitchPreference.setVisible(true);
|
||||
} else {
|
||||
restrictedSwitchPreference.setDisabledByAdmin(
|
||||
mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
|
||||
restrictedSwitchPreference.setVisible(mUserCaps.mUserSwitcherEnabled);
|
||||
}
|
||||
}
|
||||
@@ -86,15 +93,21 @@ public class RemoveGuestOnExitPreferenceController extends BasePreferenceControl
|
||||
// then disable this controller
|
||||
// also disable this controller for non-admin users
|
||||
// also disable when config_guestUserAllowEphemeralStateChange is false
|
||||
if (mUserManager.isGuestUserAlwaysEphemeral()
|
||||
|| !UserManager.isGuestUserAllowEphemeralStateChange()
|
||||
|| !mUserCaps.isAdmin()
|
||||
|| mUserCaps.disallowAddUser()
|
||||
|| mUserCaps.disallowAddUserSetByAdmin()) {
|
||||
return DISABLED_FOR_USER;
|
||||
} else {
|
||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||
if (android.multiuser.Flags.newMultiuserSettingsUx()) {
|
||||
if (mUserManager.isGuestUserAlwaysEphemeral()
|
||||
|| !UserManager.isGuestUserAllowEphemeralStateChange()
|
||||
|| !mUserCaps.isAdmin()) {
|
||||
return DISABLED_FOR_USER;
|
||||
} else {
|
||||
return AVAILABLE;
|
||||
}
|
||||
} else {
|
||||
if (mUserManager.isGuestUserAlwaysEphemeral()
|
||||
|| !UserManager.isGuestUserAllowEphemeralStateChange()
|
||||
|| !mUserCaps.isAdmin()
|
||||
|| mUserCaps.disallowAddUser()
|
||||
|| mUserCaps.disallowAddUserSetByAdmin()) {
|
||||
return DISABLED_FOR_USER;
|
||||
} else {
|
||||
return mUserCaps.mUserSwitcherEnabled ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user