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

Commit 5f05cf96 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

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

parents 635f7192 ed9fa2ca
Loading
Loading
Loading
Loading
+22 −16
Original line number Original line Diff line number Diff line
@@ -8533,27 +8533,33 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            mPackagesToRemove.add(packageUserPair);
            mPackagesToRemove.add(packageUserPair);
        }
        }


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


        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())) {
                if (packageName.equals(activeAdmin.getPackageName())) {
                    packageActiveAdmins.add(activeAdmin);
                    removeActiveAdmin(activeAdmin, userId);
                    removeActiveAdmin(activeAdmin, userId);
                }
                }
            }
            }
        }
        if (packageActiveAdmins.size() == 0) {
            startUninstallIntent(packageName, userId);
        } else {
            mHandler.postDelayed(new Runnable() {
            mHandler.postDelayed(new Runnable() {
                @Override
                @Override
                public void run() {
                public void run() {
                for (ComponentName activeAdmin : activeAdminsList) {
                    for (ComponentName activeAdmin : packageActiveAdmins) {
                        removeAdminArtifacts(activeAdmin, userId);
                        removeAdminArtifacts(activeAdmin, userId);
                    }
                    }
                    startUninstallIntent(packageName, userId);
                    startUninstallIntent(packageName, userId);
                }
                }
            }, DEVICE_ADMIN_DEACTIVATE_TIMEOUT); // Start uninstall after timeout anyway.
            }, DEVICE_ADMIN_DEACTIVATE_TIMEOUT); // Start uninstall after timeout anyway.
        }
        }
    }


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