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

Commit 40e456fe authored by Makoto Onuki's avatar Makoto Onuki Committed by android-build-merger
Browse files

Merge "If package has no active admins, just uninstall right away" into nyc-dev am: 5f05cf96

am: f70d16f3

* commit 'f70d16f3':
  If package has no active admins, just uninstall right away
parents 91a84852 f70d16f3
Loading
Loading
Loading
Loading
+22 −16
Original line number Diff line number Diff line
@@ -8533,27 +8533,33 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            mPackagesToRemove.add(packageUserPair);
        }

        final List<ComponentName> activeAdminsList = getActiveAdmins(userId);
        if (activeAdminsList == null || activeAdminsList.size() == 0) {
            startUninstallIntent(packageName, userId);
            return;
        }
        // All active admins on the user.
        final List<ComponentName> allActiveAdmins = getActiveAdmins(userId);

        for (ComponentName activeAdmin : activeAdminsList) {
        // Active admins in the target package.
        final List<ComponentName> packageActiveAdmins = new ArrayList<>();
        if (allActiveAdmins != null) {
            for (ComponentName activeAdmin : allActiveAdmins) {
                if (packageName.equals(activeAdmin.getPackageName())) {
                    packageActiveAdmins.add(activeAdmin);
                    removeActiveAdmin(activeAdmin, userId);
                }
            }
        }
        if (packageActiveAdmins.size() == 0) {
            startUninstallIntent(packageName, userId);
        } else {
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                for (ComponentName activeAdmin : activeAdminsList) {
                    for (ComponentName activeAdmin : packageActiveAdmins) {
                        removeAdminArtifacts(activeAdmin, userId);
                    }
                    startUninstallIntent(packageName, userId);
                }
            }, DEVICE_ADMIN_DEACTIVATE_TIMEOUT); // Start uninstall after timeout anyway.
        }
    }

    private void removePackageIfRequired(final String packageName, final int userId) {
        if (!packageHasActiveAdmins(packageName, userId)) {