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

Commit fa21c5f9 authored by Felipe Leme's avatar Felipe Leme
Browse files

Automatically set PO on new users when headless system user has a DO.

Test: manual verification (CTS will be added later)

Fixes: 172691310
Bug: 177547285

Change-Id: Ibbb70d3dbc6649bdb0ed19490b8ea497af4f5c90
parent 58679dbe
Loading
Loading
Loading
Loading
+23 −5
Original line number Diff line number Diff line
@@ -9854,8 +9854,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        final long id = mInjector.binderClearCallingIdentity();
        try {
            if (!mInjector.userManagerIsHeadlessSystemUserMode()) {
                manageUserUnchecked(admin, profileOwner, userHandle, adminExtras,
                        /* showDisclaimer= */ true);
            } else if (VERBOSE_LOG) {
                Slog.v(LOG_TAG, "createAndManageUser(): skipping manageUserUnchecked() on user "
                        + userHandle + " on headless system user as it will be called by "
                                + "handleNewUserCreated()");
            }
            if ((flags & DevicePolicyManager.SKIP_SETUP_WIZARD) != 0) {
                Settings.Secure.putIntForUser(mContext.getContentResolver(),
@@ -9911,13 +9917,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    }
    private void handleNewUserCreated(UserInfo user) {
        if (!mOwners.hasDeviceOwner()) return;
        if (VERBOSE_LOG) Slog.v(LOG_TAG, "handleNewUserCreated(): " + user.toFullString());
        if (!mOwners.hasDeviceOwner() || !user.isFull() || user.isManagedProfile()) return;
        final int userId = user.id;
        Log.i(LOG_TAG, "User " + userId + " added on DO mode; setting ShowNewUserDisclaimer");
        // TODO(b/177547285): add CTS test
        if (mInjector.userManagerIsHeadlessSystemUserMode()) {
            ComponentName admin = mOwners.getDeviceOwnerComponent();
            Slog.i(LOG_TAG, "Automatically setting profile owner (" + admin + ") on new user "
                    + userId);
            manageUserUnchecked(/* deviceOwner= */ admin, /* profileOwner= */ admin,
                    /* managedUser= */ userId, /* adminExtras= */ null,
                    /* showDisclaimer= */ true);
        } else {
            Log.i(LOG_TAG, "User " + userId + " added on DO mode; setting ShowNewUserDisclaimer");
            setShowNewUserDisclaimer(userId, DevicePolicyData.NEW_USER_DISCLAIMER_NEEDED);
        }
    }
    @Override
    public void resetNewUserDisclaimer() {