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

Commit 18bff11d authored by Kholoud Mohamed's avatar Kholoud Mohamed Committed by Automerger Merge Worker
Browse files

Merge "Properly store device policy user restrictions." into udc-qpr-dev am:...

Merge "Properly store device policy user restrictions." into udc-qpr-dev am: c0ba502a am: 36e4478c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24678975



Change-Id: I36b7f37bd799dba2c5e5fe928ddcb7dfec257b98
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a6aa3d15 36e4478c
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -2750,7 +2750,8 @@ public class UserManagerService extends IUserManager.Stub {
        }
        }
    }
    }


    private void setUserRestrictionInner(int userId, @NonNull String key, boolean value) {
    @VisibleForTesting
    void setUserRestrictionInner(int userId, @NonNull String key, boolean value) {
        if (!UserRestrictionsUtils.isValidRestriction(key)) {
        if (!UserRestrictionsUtils.isValidRestriction(key)) {
            Slog.e(LOG_TAG, "Setting invalid restriction " + key);
            Slog.e(LOG_TAG, "Setting invalid restriction " + key);
            return;
            return;
@@ -4360,11 +4361,11 @@ public class UserManagerService extends IUserManager.Stub {


            UserRestrictionsUtils.writeRestrictions(serializer,
            UserRestrictionsUtils.writeRestrictions(serializer,
                    mDevicePolicyUserRestrictions.getRestrictions(UserHandle.USER_ALL),
                    mDevicePolicyUserRestrictions.getRestrictions(UserHandle.USER_ALL),
                    TAG_DEVICE_POLICY_RESTRICTIONS);
                    TAG_DEVICE_POLICY_GLOBAL_RESTRICTIONS);


            UserRestrictionsUtils.writeRestrictions(serializer,
            UserRestrictionsUtils.writeRestrictions(serializer,
                    mDevicePolicyUserRestrictions.getRestrictions(userInfo.id),
                    mDevicePolicyUserRestrictions.getRestrictions(userInfo.id),
                    TAG_DEVICE_POLICY_RESTRICTIONS);
                    TAG_DEVICE_POLICY_LOCAL_RESTRICTIONS);
        }
        }


        if (userData.account != null) {
        if (userData.account != null) {
+36 −0
Original line number Original line Diff line number Diff line
@@ -113,6 +113,42 @@ public class UserManagerServiceUserInfoTest {
        assertUserInfoEquals(data.info, read.info, /* parcelCopy= */ false);
        assertUserInfoEquals(data.info, read.info, /* parcelCopy= */ false);
    }
    }


    /** Tests that device policy restrictions are written/read properly. */
    @Test
    public void testWriteReadDevicePolicyUserRestrictions() throws Exception {
        final String globalRestriction = UserManager.DISALLOW_FACTORY_RESET;
        final String localRestriction = UserManager.DISALLOW_CONFIG_DATE_TIME;

        UserData data = new UserData();
        data.info = createUser(100, FLAG_FULL, "A type");

        mUserManagerService.putUserInfo(data.info);

        // Set a global and user restriction so they get written out to the user file.
        setUserRestrictions(data.info.id, globalRestriction, localRestriction, true);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(baos);
        mUserManagerService.writeUserLP(data, out);
        byte[] bytes = baos.toByteArray();

        // Clear the restrictions to see if they are properly read in from the user file.
        setUserRestrictions(data.info.id, globalRestriction, localRestriction, false);

        mUserManagerService.readUserLP(data.info.id, new ByteArrayInputStream(bytes));
        assertTrue(mUserManagerService.hasUserRestrictionOnAnyUser(globalRestriction));
        assertTrue(mUserManagerService.hasUserRestrictionOnAnyUser(localRestriction));
    }

    /** Sets a global and local restriction and verifies they were set properly **/
    private void setUserRestrictions(int id, String global, String local, boolean enabled) {
        mUserManagerService.setUserRestrictionInner(UserHandle.USER_ALL, global, enabled);
        assertEquals(mUserManagerService.hasUserRestrictionOnAnyUser(global), enabled);

        mUserManagerService.setUserRestrictionInner(id, local, enabled);
        assertEquals(mUserManagerService.hasUserRestrictionOnAnyUser(local), enabled);
    }

    @Test
    @Test
    public void testParcelUnparcelUserInfo() throws Exception {
    public void testParcelUnparcelUserInfo() throws Exception {
        UserInfo info = createUser();
        UserInfo info = createUser();