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

Commit 3e6c3195 authored by Tetiana Meronyk's avatar Tetiana Meronyk Committed by Android (Google) Code Review
Browse files

Merge "Disable multiuser toggle when more than 1 user is created" into main

parents ab7f57b1 7968047f
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -46,13 +46,18 @@ public class MultiUserSwitchBarController implements SwitchWidgetController.OnSw


    MultiUserSwitchBarController(Context context, SwitchWidgetController switchBar,
            OnMultiUserSwitchChangedListener listener) {
            boolean canUserSwitchToggle, OnMultiUserSwitchChangedListener listener) {
        mContext = context;
        mSwitchBar = switchBar;
        mListener = listener;
        mUserCapabilities = UserCapabilities.create(context);
        mSwitchBar.setChecked(mUserCapabilities.mUserSwitcherEnabled);

        setToggleEnabled(canUserSwitchToggle);
        mSwitchBar.setListener(this);
    }

    void setToggleEnabled(boolean canUserSwitchToggle) {
        if (mUserCapabilities.mDisallowSwitchUser) {
            mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
                    .checkIfRestrictionEnforced(mContext, UserManager.DISALLOW_USER_SWITCH,
@@ -64,9 +69,8 @@ public class MultiUserSwitchBarController implements SwitchWidgetController.OnSw
                            UserHandle.myUserId()));
        } else {
            mSwitchBar.setEnabled(!mUserCapabilities.mDisallowSwitchUser
                    && !mUserCapabilities.mIsGuest && mUserCapabilities.isAdmin());
                    && !mUserCapabilities.mIsGuest && canUserSwitchToggle);
        }
        mSwitchBar.setListener(this);
    }

    @Override
+5 −1
Original line number Diff line number Diff line
@@ -290,8 +290,9 @@ public class UserSettings extends SettingsPreferenceFragment
        } else {
            switchBar.hide();
        }
        boolean isToggleEnabled = mUserManager.getFullUserCount() == 1;
        mSwitchBarController = new MultiUserSwitchBarController(activity,
                new MainSwitchBarController(switchBar), this /* listener */);
                new MainSwitchBarController(switchBar), isToggleEnabled, this /* listener */);
        getSettingsLifecycle().addObserver(mSwitchBarController);
        boolean openUserEditDialog = getIntent().getBooleanExtra(
                EXTRA_OPEN_DIALOG_USER_PROFILE_EDITOR, false);
@@ -422,6 +423,9 @@ public class UserSettings extends SettingsPreferenceFragment
                mRemoveGuestOnExitPreferenceController.getPreferenceKey()));
        if (mShouldUpdateUserList) {
            updateUI();
            // Update state of "Allow multiple users" toggle when list of users updates
            boolean isToggleEnabled = mUserManager.getFullUserCount() == 1;
            mSwitchBarController.setToggleEnabled(isToggleEnabled);
        }
    }

+26 −2
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ public class MultiUserSwitchBarControllerTest {
                UserManager.DISALLOW_USER_SWITCH, true);

        final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
                mSwitchBarController, null);
                mSwitchBarController, true, null);

        verify(mSwitchBarController).setDisabledByAdmin(any());
    }
@@ -76,8 +76,32 @@ public class MultiUserSwitchBarControllerTest {
                UserManager.DISALLOW_USER_SWITCH, false);

        final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
                mSwitchBarController, null);
                mSwitchBarController, true, null);

        verify(mSwitchBarController, never()).setDisabledByAdmin(any());
    }

    @Test
    public void onStart_allowUserSwitch_setDisabledAfterInitialization_shouldBeDisabled() {
        mUserManager.setUserRestriction(UserHandle.of(UserHandle.myUserId()),
                UserManager.DISALLOW_USER_SWITCH, false);

        final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
                mSwitchBarController, true, null);
        verify(mSwitchBarController).setEnabled(true);
        controller.setToggleEnabled(false);
        verify(mSwitchBarController).setEnabled(false);
    }

    @Test
    public void onStart_allowUserSwitch_setEnabledAfterInitialization_shouldBeEnabled() {
        mUserManager.setUserRestriction(UserHandle.of(UserHandle.myUserId()),
                UserManager.DISALLOW_USER_SWITCH, false);

        final MultiUserSwitchBarController controller = new MultiUserSwitchBarController(mContext,
                mSwitchBarController, false, null);
        verify(mSwitchBarController).setEnabled(false);
        controller.setToggleEnabled(true);
        verify(mSwitchBarController).setEnabled(true);
    }
}