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

Commit e41cd54b authored by Ayush Sharma's avatar Ayush Sharma Committed by Automerger Merge Worker
Browse files

Merge "Fix deadlock in DPMS" into tm-dev am: e0934dad

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

Change-Id: Idb75a63befa7af067e9979a8390608447e4a0284
parents 07ebc3b7 e0934dad
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -1163,7 +1163,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                            policy.mAdminList.remove(i);
                            policy.mAdminMap.remove(aa.info.getComponent());
                            pushActiveAdminPackagesLocked(userHandle);
                            pushMeteredDisabledPackagesLocked(userHandle);
                            pushMeteredDisabledPackages(userHandle);
                        }
                    }
                } catch (RemoteException re) {
@@ -3570,7 +3570,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
            for (int i = users.size() - 1; i >= 0; --i) {
                final int userId = users.get(i).id;
                mInjector.getNetworkPolicyManagerInternal().setMeteredRestrictedPackagesAsync(
                        getMeteredDisabledPackagesLocked(userId), userId);
                        getMeteredDisabledPackages(userId), userId);
            }
        }
    }
@@ -14703,7 +14703,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                final List<String> excludedPkgs = removeInvalidPkgsForMeteredDataRestriction(
                        caller.getUserId(), packageNames);
                admin.meteredDisabledPackages = packageNames;
                pushMeteredDisabledPackagesLocked(caller.getUserId());
                pushMeteredDisabledPackages(caller.getUserId());
                saveSettingsLocked(caller.getUserId());
                return excludedPkgs;
            });
@@ -14855,22 +14855,23 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                isProfileOwnerOnOrganizationOwnedDevice);
    }
    private void pushMeteredDisabledPackagesLocked(int userId) {
    private void pushMeteredDisabledPackages(int userId) {
        wtfIfInLock();
        mInjector.getNetworkPolicyManagerInternal().setMeteredRestrictedPackages(
                getMeteredDisabledPackagesLocked(userId), userId);
                getMeteredDisabledPackages(userId), userId);
    }
    private Set<String> getMeteredDisabledPackagesLocked(int userId) {
        final ComponentName who = getOwnerComponent(userId);
    private Set<String> getMeteredDisabledPackages(int userId) {
        synchronized (getLockObject()) {
            final Set<String> restrictedPkgs = new ArraySet<>();
        if (who != null) {
            final ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userId);
            final ActiveAdmin admin = getDeviceOrProfileOwnerAdminLocked(userId);
            if (admin != null && admin.meteredDisabledPackages != null) {
                restrictedPkgs.addAll(admin.meteredDisabledPackages);
            }
        }
            return restrictedPkgs;
        }
    }
    @Override
    public void setAffiliationIds(ComponentName admin, List<String> ids) {
@@ -15313,13 +15314,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                resetGlobalProxyLocked(policy);
            }
            pushActiveAdminPackagesLocked(userHandle);
            pushMeteredDisabledPackagesLocked(userHandle);
            saveSettingsLocked(userHandle);
            updateMaximumTimeToLockLocked(userHandle);
            policy.mRemovingAdmins.remove(adminReceiver);
            Slogf.i(LOG_TAG, "Device admin " + adminReceiver + " removed from user " + userHandle);
        }
        pushMeteredDisabledPackages(userHandle);
        // The removed admin might have disabled camera, so update user
        // restrictions.
        pushUserRestrictions(userHandle);