From fa21c5f9d5b73c37507ff9b5f938022e70e9f515 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 14 Jan 2021 15:21:56 -0800 Subject: [PATCH] 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 --- .../DevicePolicyManagerService.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 7d199cab1d358..da444e698a2d5 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -9854,8 +9854,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final long id = mInjector.binderClearCallingIdentity(); try { - manageUserUnchecked(admin, profileOwner, userHandle, adminExtras, - /* showDisclaimer= */ true); + 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,12 +9917,24 @@ 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"); - setShowNewUserDisclaimer(userId, DevicePolicyData.NEW_USER_DISCLAIMER_NEEDED); + // 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