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

Commit 01bfdcc5 authored by Pavel Grafov's avatar Pavel Grafov Committed by Android (Google) Code Review
Browse files

Merge "Don't hide "Add user" when disallowed by admin"

parents c4eec885 19cf0b45
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -118,6 +118,8 @@ public class UserCapabilities {
                ", mDisallowAddUser=" + mDisallowAddUser +
                ", mEnforcedAdmin=" + mEnforcedAdmin +
                ", mDisallowSwitchUser=" + mDisallowSwitchUser +
                ", mDisallowAddUserSetByAdmin=" + mDisallowAddUserSetByAdmin +
                ", mUserSwitcherEnabled=" + mUserSwitcherEnabled +
                '}';
    }
}
+13 −18
Original line number Diff line number Diff line
@@ -271,18 +271,7 @@ public class UserSettings extends SettingsPreferenceFragment
            mMePreference.setSummary(R.string.user_admin);
        }
        mAddUser = (RestrictedPreference) findPreference(KEY_ADD_USER);
        mAddUser.useAdminDisabledSummary(false);
        // Determine if add user/profile button should be visible
        if (mUserCaps.mCanAddUser && Utils.isDeviceProvisioned(activity)) {
            mAddUser.setVisible(true);
        mAddUser.setOnPreferenceClickListener(this);
            // change label to only mention user, if restricted profiles are not supported
            if (!mUserCaps.mCanAddRestrictedProfile) {
                mAddUser.setTitle(R.string.user_add_user_menu);
            }
        } else {
            mAddUser.setVisible(false);
        }

        activity.registerReceiverAsUser(
                mUserChangeReceiver, UserHandle.ALL, USER_REMOVED_INTENT_FILTER, null, mHandler);
@@ -968,9 +957,10 @@ public class UserSettings extends SettingsPreferenceFragment
                mAddUserWhenLockedPreferenceController.getPreferenceKey());
        mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
        mMultiUserFooterPreferenceController.updateState(null /* preference */);
        mAddUser.setVisible(mUserCaps.mCanAddUser && Utils.isDeviceProvisioned(context)
                && mUserCaps.mUserSwitcherEnabled);
        mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);

        updateAddUser(context);

        if (!mUserCaps.mUserSwitcherEnabled) {
            return;
        }
@@ -980,10 +970,13 @@ public class UserSettings extends SettingsPreferenceFragment
            mUserListCategory.addPreference(userPreference);
        }

        // Append Add user to the end of the list
        if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin) &&
                Utils.isDeviceProvisioned(context)) {
            boolean moreUsers = mUserManager.canAddMoreUsers();
    }

    private void updateAddUser(Context context) {
        if ((mUserCaps.mCanAddUser || mUserCaps.mDisallowAddUserSetByAdmin)
                && Utils.isDeviceProvisioned(context) && mUserCaps.mUserSwitcherEnabled) {
            mAddUser.setVisible(true);
            final boolean moreUsers = mUserManager.canAddMoreUsers();
            mAddUser.setEnabled(moreUsers && !mAddingUser && mUserManager.canSwitchUsers());
            if (!moreUsers) {
                mAddUser.setSummary(getString(R.string.user_add_max_count, getMaxRealUsers()));
@@ -994,6 +987,8 @@ public class UserSettings extends SettingsPreferenceFragment
                mAddUser.setDisabledByAdmin(
                        mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
            }
        } else {
            mAddUser.setVisible(false);
        }
    }

+32 −30
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ import com.android.settingslib.RestrictedPreference;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.AdditionalMatchers;
@@ -101,15 +100,23 @@ public class UserSettingsTest {
        MockitoAnnotations.initMocks(this);
        mActivity = spy(ActivityController.of(new FragmentActivity()).get());
        mContext = spy(RuntimeEnvironment.application);
        mUserCapabilities = UserCapabilities.create(mContext);

        mFragment = spy(new UserSettings());
        ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController",
                mock(AddUserWhenLockedPreferenceController.class));
        ReflectionHelpers.setField(mFragment, "mMultiUserFooterPreferenceController",
                mock(MultiUserFooterPreferenceController.class));
        mUserCapabilities = UserCapabilities.create(mContext);
        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
        ReflectionHelpers.setField(mFragment, "mAddingUser", false);
        mFragment.mMePreference = mMePreference;

        when((Object) mActivity.getSystemService(UserManager.class)).thenReturn(mUserManager);
        doReturn(mActivity).when(mFragment).getActivity();
        doReturn(mContext).when(mFragment).getContext();
        doReturn(mMockPreferenceManager).when(mFragment).getPreferenceManager();
        doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
        mProvisioned = Settings.Global.getInt(mContext.getContentResolver(),
            Settings.Global.DEVICE_PROVISIONED, 0);
@@ -157,10 +164,6 @@ public class UserSettingsTest {
        mUserCapabilities.mDisallowSwitchUser = false;
        mUserCapabilities.mUserSwitcherEnabled = true;

        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
        mFragment.mMePreference = mMePreference;
        mFragment.mUserListCategory = userListCategory;
        mFragment.mAddUser = addUser;

@@ -186,11 +189,6 @@ public class UserSettingsTest {
        mUserCapabilities.mDisallowAddUser = false;
        mUserCapabilities.mUserSwitcherEnabled = true;

        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
        ReflectionHelpers.setField(mFragment, "mAddingUser", false);
        mFragment.mMePreference = mMePreference;
        mFragment.mUserListCategory = userListCategory;
        mFragment.mAddUser = addUser;

@@ -206,7 +204,6 @@ public class UserSettingsTest {
    }

    @Test
    @Ignore
    public void updateUserList_cannotAddUserButCanSwitchUser_shouldNotShowAddUser() {
        Settings.Global.putInt(mContext.getContentResolver(),
            Settings.Global.DEVICE_PROVISIONED, 1);
@@ -216,11 +213,6 @@ public class UserSettingsTest {
        mUserCapabilities.mDisallowAddUser = true;
        mUserCapabilities.mUserSwitcherEnabled = true;

        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
        ReflectionHelpers.setField(mFragment, "mAddingUser", false);
        mFragment.mMePreference = mMePreference;
        mFragment.mUserListCategory = mock(PreferenceCategory.class);
        mFragment.mAddUser = addUser;

@@ -251,9 +243,6 @@ public class UserSettingsTest {
        doReturn(true).when(mUserManager).canSwitchUsers();
        mUserCapabilities.mIsAdmin = false;

        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);

        Menu menu = mock(Menu.class);
        MenuItem menuItem = mock(MenuItem.class);
        final String title = "title";
@@ -279,9 +268,6 @@ public class UserSettingsTest {
        doReturn(true).when(mUserManager).canSwitchUsers();
        mUserCapabilities.mIsAdmin = false;

        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mUserManager", mock(UserManager.class));

        Menu menu = mock(Menu.class);
        MenuItem menuItem = mock(MenuItem.class);
        final String title = "title";
@@ -301,7 +287,6 @@ public class UserSettingsTest {
    }

    @Test
    @Ignore
    public void updateUserList_canAddUserAndSwitchUser_shouldShowAddUser() {
        Settings.Global.putInt(mContext.getContentResolver(),
            Settings.Global.DEVICE_PROVISIONED, 1);
@@ -311,13 +296,8 @@ public class UserSettingsTest {
        mUserCapabilities.mDisallowAddUser = false;
        mUserCapabilities.mUserSwitcherEnabled = true;

        ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
        ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
        ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);
        ReflectionHelpers.setField(mFragment, "mAddingUser", false);
        mFragment.mMePreference = mMePreference;
        mFragment.mUserListCategory = mock(PreferenceCategory.class);
        mFragment.mAddUser = addUser;
        mFragment.mUserListCategory = mock(PreferenceCategory.class);

        doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();
        doReturn("Test summary").when(mFragment).getString(anyInt(), anyInt());
@@ -326,4 +306,26 @@ public class UserSettingsTest {

        verify(addUser).setVisible(true);
    }

    @Test
    public void updateUserList_addUserDisallowedByAdmin_shouldShowAddUserDisabled() {
        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.DEVICE_PROVISIONED, 1);
        final RestrictedPreference addUser = mock(RestrictedPreference.class);

        mUserCapabilities.mCanAddUser = false;
        mUserCapabilities.mDisallowAddUser = true;
        mUserCapabilities.mDisallowAddUserSetByAdmin = true;
        mUserCapabilities.mUserSwitcherEnabled = true;

        mFragment.mUserListCategory = mock(PreferenceCategory.class);
        mFragment.mAddUser = addUser;

        doReturn(mock(PreferenceScreen.class)).when(mFragment).getPreferenceScreen();

        mFragment.updateUserList();

        verify(addUser).setVisible(true);
        assertThat(addUser.isEnabled()).isFalse();
    }
}