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

Commit d1886c8e authored by Ayush Sharma's avatar Ayush Sharma Committed by Android (Google) Code Review
Browse files

Merge "Fix deadlock between NPMS and DPMS"

parents b303221f 9df1e0a7
Loading
Loading
Loading
Loading
+29 −26
Original line number Diff line number Diff line
@@ -1413,7 +1413,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                            policy.mAdminList.remove(i);
                            policy.mAdminMap.remove(aa.info.getComponent());
                            pushActiveAdminPackagesLocked(userHandle);
                            pushMeteredDisabledPackages(userHandle);
                        }
                    }
                } catch (RemoteException re) {
@@ -1454,6 +1453,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        if (removedAdmin) {
            // The removed admin might have disabled camera, so update user restrictions.
            pushUserRestrictions(userHandle);
            pushMeteredDisabledPackages(userHandle);
        }
    }
@@ -17882,21 +17882,23 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        if (!mHasFeature) {
            return packageNames;
        }
        synchronized (getLockObject()) {
            final ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(caller.getUserId());
        return mInjector.binderWithCleanCallingIdentity(() -> {
            final List<String> excludedPkgs = removeInvalidPkgsForMeteredDataRestriction(
                    caller.getUserId(), packageNames);
            synchronized (getLockObject()) {
                final ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(caller.getUserId());
                admin.meteredDisabledPackages = packageNames;
                pushMeteredDisabledPackages(caller.getUserId());
                saveSettingsLocked(caller.getUserId());
            }
            pushMeteredDisabledPackages(caller.getUserId());
            return excludedPkgs;
        });
    }
    }
    private List<String> removeInvalidPkgsForMeteredDataRestriction(
            int userId, List<String> pkgNames) {
        synchronized (getLockObject()) {
            final Set<String> activeAdmins = getActiveAdminPackagesLocked(userId);
            final List<String> excludedPkgs = new ArrayList<>();
            for (int i = pkgNames.size() - 1; i >= 0; --i) {
@@ -17918,6 +17920,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
            pkgNames.removeAll(excludedPkgs);
            return excludedPkgs;
        }
    }
    @Override
    public List<String> getMeteredDataDisabledPackages(ComponentName who) {