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

Commit fdebbea4 authored by Felipe Leme's avatar Felipe Leme
Browse files

Listen to ACTION_UID_REMOVED only.

NMPS was listening to both ACTION_UID_REMOVED and
ACTION_PACKAGE_REMOVED, which not only was redundant but would also
cause problems when a package with shared UIDs was removed.

Fixes: 31375684

Change-Id: Iec006dbbec0e6298f1e568cbf81ed3672f61b7d2
parent 7bdc0c21
Loading
Loading
Loading
Loading
+1 −18
Original line number Diff line number Diff line
@@ -168,7 +168,6 @@ import android.util.Xml;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.IndentingPrintWriter;
@@ -402,7 +401,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {

    private final AppOpsManager mAppOps;

    private final MyPackageMonitor mPackageMonitor;
    private final IPackageManager mIPm;


@@ -445,8 +443,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {

        mAppOps = context.getSystemService(AppOpsManager.class);

        mPackageMonitor = new MyPackageMonitor();

        // Expose private service for system components to use.
        LocalServices.addService(NetworkPolicyManagerInternal.class,
                new NetworkPolicyManagerInternalImpl());
@@ -578,8 +574,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {

            mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);

            mPackageMonitor.register(mContext, mHandler.getLooper(), UserHandle.ALL, true);

            synchronized (mUidRulesFirstLock) {
                synchronized (mNetworkPoliciesSecondLock) {
                    updatePowerSaveWhitelistUL();
@@ -761,6 +755,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
            if (LOGV) Slog.v(TAG, "ACTION_UID_REMOVED for uid=" + uid);
            synchronized (mUidRulesFirstLock) {
                mUidPolicy.delete(uid);
                removeRestrictBackgroundWhitelistedUidUL(uid, true, true);
                updateRestrictionRulesForUidUL(uid);
                synchronized (mNetworkPoliciesSecondLock) {
                    writePolicyAL();
@@ -3511,18 +3506,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        }
    }

    private class MyPackageMonitor extends PackageMonitor {

        @Override
        public void onPackageRemoved(String packageName, int uid) {
            if (LOGV) Slog.v(TAG, "onPackageRemoved: " + packageName + " ->" + uid);
            synchronized (mUidRulesFirstLock) {
                removeRestrictBackgroundWhitelistedUidUL(uid, true, true);
                updateRestrictionRulesForUidUL(uid);
            }
        }
    }

    private class NetworkPolicyManagerInternalImpl extends NetworkPolicyManagerInternal {

        @Override