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

Commit a0309ace authored by Eduard Dumitrescul's avatar Eduard Dumitrescul Committed by mse1969
Browse files

Do not allow to set device owner while accounts present

Bug: 417988098
Test: manual
Flag: EXEMPT BUGFIX
Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:ebc43259914fe7892c36faaef09c1c1eedb2663f
Merged-In: I51c7253b124ab524b817b17dc0aabbdb5ab12ac7
Change-Id: I51c7253b124ab524b817b17dc0aabbdb5ab12ac7
parent 5dc124cb
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -289,6 +289,7 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockSettingsInternal;
import com.android.internal.widget.LockscreenCredential;
import com.android.internal.widget.PasswordValidationError;
import com.android.server.accounts.AccountManagerService;
import com.android.server.LocalServices;
import com.android.server.LockGuard;
import com.android.server.PersistentDataBlockManagerInternal;
@@ -8756,6 +8757,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        }
        final boolean hasIncompatibleAccountsOrNonAdb =
                hasIncompatibleAccountsOrNonAdbNoLock(userId, admin);
        if (!hasIncompatibleAccountsOrNonAdb) {
            synchronized (getLockObject()) {
                if (!isAdminTestOnlyLocked(admin, userId) && hasAccountsOnAnyUser()) {
                    Slog.w(LOG_TAG,
                            "Non test-only owner can't be installed with existing accounts.");
                    return false;
                }
            }
        }
        synchronized (getLockObject()) {
            enforceCanSetDeviceOwnerLocked(admin, userId, hasIncompatibleAccountsOrNonAdb);
            final ActiveAdmin activeAdmin = getActiveAdminUncheckedLocked(admin, userId);
@@ -16586,6 +16598,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        }
    }
    private boolean hasAccountsOnAnyUser() {
        AccountManagerService accountManagerService = AccountManagerService.getSingleton();
        return accountManagerService.getAllAccounts().length != 0;
    }
    /**
     * Truncates char sequence to maximum length, nulls are ignored.
     */