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

Commit 3f4a9c7e authored by Felipe Leme's avatar Felipe Leme Committed by Automerger Merge Worker
Browse files

Merge "New API: DevicePolicyManager.listForegroundAffiliatedUsers()" into sc-dev am: cf25028c

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I6f6826b3fa4a790e1174199f16ca6e9064127a28
parents 41b5d3e0 cf25028c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7105,6 +7105,7 @@ package android.app.admin {
    method public boolean isUniqueDeviceAttestationSupported();
    method public boolean isUsbDataSignalingEnabled();
    method public boolean isUsingUnifiedPassword(@NonNull android.content.ComponentName);
    method @NonNull public java.util.List<android.os.UserHandle> listForegroundAffiliatedUsers();
    method public void lockNow();
    method public void lockNow(int);
    method public int logoutUser(@NonNull android.content.ComponentName);
+19 −0
Original line number Diff line number Diff line
@@ -13435,6 +13435,7 @@ public class DevicePolicyManager {
            }
        }
    }
    /**
     * Returns true if the caller is running on a device where the admin can grant
     * permissions related to device sensors.
@@ -13537,4 +13538,22 @@ public class DevicePolicyManager {
        }
        return false;
    }
    /**
     * Gets the list of {@link #isAffiliatedUser() affiliated} users running on foreground.
     *
     * @return list of {@link #isAffiliatedUser() affiliated} users running on foreground.
     *
     * @throws SecurityException if the calling application is not a device owner
     */
    @NonNull
    public List<UserHandle> listForegroundAffiliatedUsers() {
        if (mService == null) return Collections.emptyList();
        try {
            return mService.listForegroundAffiliatedUsers();
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -510,4 +510,6 @@ interface IDevicePolicyManager {
    boolean isUsbDataSignalingEnabled(String callerPackage);
    boolean isUsbDataSignalingEnabledForUser(int userId);
    boolean canUsbDataSignalingBeDisabled();

    List<UserHandle> listForegroundAffiliatedUsers();
}
+29 −5
Original line number Diff line number Diff line
@@ -6453,7 +6453,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    private void forceWipeUser(int userId, String wipeReasonForUser, boolean wipeSilently) {
        boolean success = false;
        try {
            if (getCurrentForegroundUser() == userId) {
            if (getCurrentForegroundUserId() == userId) {
                mInjector.getIActivityManager().switchUser(UserHandle.USER_SYSTEM);
            }
@@ -7921,7 +7921,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
            Slog.i(LOG_TAG, "Device owner set: " + admin + " on user " + userId);
            if (mInjector.userManagerIsHeadlessSystemUserMode()) {
                int currentForegroundUser = getCurrentForegroundUser();
                int currentForegroundUser = getCurrentForegroundUserId();
                Slog.i(LOG_TAG, "setDeviceOwner(): setting " + admin
                        + " as profile owner on user " + currentForegroundUser);
                // Sets profile owner on current foreground user since
@@ -9055,7 +9055,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        return UserHandle.isSameApp(caller.getUid(), Process.SHELL_UID);
    }
    private @UserIdInt int getCurrentForegroundUser() {
    private @UserIdInt int getCurrentForegroundUserId() {
        try {
            return mInjector.getIActivityManager().getCurrentUser().id;
        } catch (RemoteException e) {
@@ -9064,6 +9064,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        return UserHandle.USER_NULL;
    }
    @Override
    public List<UserHandle> listForegroundAffiliatedUsers() {
        checkIsDeviceOwner(getCallerIdentity());
        int userId = mInjector.binderWithCleanCallingIdentity(() -> getCurrentForegroundUserId());
        boolean isAffiliated;
        synchronized (getLockObject()) {
            isAffiliated = isUserAffiliatedWithDeviceLocked(userId);
        }
        if (!isAffiliated) return Collections.emptyList();
        List<UserHandle> users = new ArrayList<>(1);
        users.add(UserHandle.of(userId));
        return users;
    }
    protected int getProfileParentId(int userHandle) {
        return mInjector.binderWithCleanCallingIdentity(() -> {
            UserInfo parentUser = mUserManager.getProfileParent(userHandle);
@@ -12922,7 +12941,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                    return CODE_NONSYSTEM_USER_EXISTS;
                }
                int currentForegroundUser = getCurrentForegroundUser();
                int currentForegroundUser = getCurrentForegroundUserId();
                if (callingUserId != currentForegroundUser
                        && mInjector.userManagerIsHeadlessSystemUserMode()
                        && currentForegroundUser == UserHandle.USER_SYSTEM) {
@@ -13018,6 +13037,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        return CODE_OK;
    }
    private void checkIsDeviceOwner(CallerIdentity caller) {
        Preconditions.checkCallAuthorization(isDeviceOwner(caller), caller.getUid()
                + " is not device owner");
    }
    private ComponentName getOwnerComponent(String packageName, int userId) {
        if (isDeviceOwnerPackage(packageName, userId)) {
            return mOwners.getDeviceOwnerComponent();
@@ -15514,7 +15538,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
    private boolean isLockTaskFeatureEnabled(int lockTaskFeature) throws RemoteException {
        //TODO(b/175285301): Explicitly get the user's identity to check.
        int lockTaskFeatures =
                getUserData(getCurrentForegroundUser()).mLockTaskFeatures;
                getUserData(getCurrentForegroundUserId()).mLockTaskFeatures;
        return (lockTaskFeatures & lockTaskFeature) == lockTaskFeature;
    }