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
This commit is contained in:
Felipe Leme
2021-01-14 15:21:56 -08:00
parent 58679dbef9
commit fa21c5f9d5

View File

@@ -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