OSDN Git Service

Listen to ACTION_UID_REMOVED only. DO NOT MERGE.
authorFelipe Leme <felipeal@google.com>
Fri, 9 Sep 2016 00:26:00 +0000 (17:26 -0700)
committerFelipe Leme <felipeal@google.com>
Wed, 21 Sep 2016 01:11:26 +0000 (01:11 +0000)
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
(cherry picked from commit fdebbea401dc9d38b0cbea0fdfbd758e16805358)

services/core/java/com/android/server/net/NetworkPolicyManagerService.java

index 3e1c529..a57345e 100644 (file)
@@ -166,7 +166,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;
@@ -407,7 +406,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
 
     private final AppOpsManager mAppOps;
 
-    private final MyPackageMonitor mPackageMonitor;
     private final IPackageManager mIPm;
 
 
@@ -449,8 +447,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());
@@ -582,8 +578,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();
@@ -765,6 +759,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();
@@ -3622,18 +3617,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