Fix toggle when no_user_switch is applied without EnforcedAdmin
If EnforcedAdmin is null, calling setDisabledByEnforcedAdmin does not disable the setting. So if this restriction was applied by a source different than admin, the toggle was still active for users to change (even non-main). After this change, the restriction is correctly processed both when it is applied by admin or by some other source. Bug: 356387759 Test: atest MultiUserSwitchBarControllerTest Flag: android.multiuser.fix_disabling_of_mu_toggle_when_restriction_applied Change-Id: I5d38e250359ccbee67ac747f1d8a0a2143f4c216
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.users;
|
||||
|
||||
import android.content.Context;
|
||||
import android.multiuser.Flags;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
@@ -25,6 +26,7 @@ import android.util.Log;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.widget.SwitchWidgetController;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||
@@ -53,12 +55,24 @@ public class MultiUserSwitchBarController implements SwitchWidgetController.OnSw
|
||||
mUserCapabilities = UserCapabilities.create(context);
|
||||
mSwitchBar.setChecked(mUserCapabilities.mUserSwitcherEnabled);
|
||||
|
||||
if (mUserCapabilities.mDisallowSwitchUser) {
|
||||
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
|
||||
if (Flags.fixDisablingOfMuToggleWhenRestrictionApplied()) {
|
||||
RestrictedLockUtils.EnforcedAdmin enforcedAdmin = RestrictedLockUtilsInternal
|
||||
.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
|
||||
UserHandle.myUserId()));
|
||||
UserHandle.myUserId());
|
||||
if (enforcedAdmin != null) {
|
||||
mSwitchBar.setDisabledByAdmin(enforcedAdmin);
|
||||
} else {
|
||||
mSwitchBar.setEnabled(mUserCapabilities.mIsMain
|
||||
&& !mUserCapabilities.mDisallowSwitchUser);
|
||||
}
|
||||
} else {
|
||||
mSwitchBar.setEnabled(mUserCapabilities.mIsMain);
|
||||
if (mUserCapabilities.mDisallowSwitchUser) {
|
||||
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
|
||||
.checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
|
||||
UserHandle.myUserId()));
|
||||
} else {
|
||||
mSwitchBar.setEnabled(mUserCapabilities.mIsMain);
|
||||
}
|
||||
}
|
||||
mSwitchBar.setListener(this);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user