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

Commit 8bea73e5 authored by Suprabh Shukla's avatar Suprabh Shukla
Browse files

Calling method in DPMS after resolving userId

ActivityManagerService was calling
hasDeviceOwnerOrProfileOwner in DevicePolicyManagerService.LocalService
before resolving negative userIds to a real user. Moved the call to a point
when userId is already resolved.

bug: b/27538249
Change-Id: I760412978b3260523e9abcfe59d8e100ec4af12f
parent 83620211
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.app.admin;

import android.os.UserHandle;

import java.util.List;

/**
@@ -71,8 +73,8 @@ public abstract class DevicePolicyManagerInternal {
    public abstract boolean isActiveAdminWithPolicy(int uid, int reqPolicy);

    /**
     * Checks if a given package has a device or a profile owner for the given user
     *
     * Checks if a given package has a device or a profile owner for the given user.
     * </br><em>Does <b>not</b> support negative userIds like {@link UserHandle#USER_ALL}</em>
     * @param packageName The package to check
     * @param userId the userId to check for.
     * @return true if package has a device or profile owner, false otherwise.
+4 −4
Original line number Diff line number Diff line
@@ -5270,6 +5270,10 @@ public final class ActivityManagerService extends ActivityManagerNative
    public boolean clearApplicationUserData(final String packageName,
            final IPackageDataObserver observer, int userId) {
        enforceNotIsolatedCaller("clearApplicationUserData");
        int uid = Binder.getCallingUid();
        int pid = Binder.getCallingPid();
        userId = mUserController.handleIncomingUser(pid, uid, userId, false,
                ALLOW_FULL_ONLY, "clearApplicationUserData", null);
        final DevicePolicyManagerInternal dpmi = LocalServices
                .getService(DevicePolicyManagerInternal.class);
@@ -5277,10 +5281,6 @@ public final class ActivityManagerService extends ActivityManagerNative
            throw new SecurityException("Cannot clear data for a device owner or a profile owner");
        }
        int uid = Binder.getCallingUid();
        int pid = Binder.getCallingPid();
        userId = mUserController.handleIncomingUser(pid, uid, userId, false,
                ALLOW_FULL_ONLY, "clearApplicationUserData", null);
        long callingId = Binder.clearCallingIdentity();
        try {
            IPackageManager pm = AppGlobals.getPackageManager();