diff options
| author | 2019-04-03 10:50:39 -0700 | |
|---|---|---|
| committer | 2019-04-03 10:50:39 -0700 | |
| commit | 16ee7a1be49f723f2af89b60dade4b911b3d0505 (patch) | |
| tree | ede4e75e53547b53377c03f9ced02b0a2c311424 | |
| parent | 6277c39b0ed061beac01e94cdbd19a7bce469439 (diff) | |
| parent | ecb28c1948f5a46346782dca3467b5f2f010d87a (diff) | |
Merge "Clean up permissions when uids are no longer used" am: 7754d368f4
am: ecb28c1948
Change-Id: I256ca6f16ea1fcd240a1b7cd2b3199d4504e6c33
| -rw-r--r-- | services/core/java/com/android/server/connectivity/PermissionMonitor.java | 14 | ||||
| -rw-r--r-- | tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java | 4 |
2 files changed, 14 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index 31b96ca9e5bf..da1360d59539 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -100,6 +100,9 @@ public class PermissionMonitor { app.requestedPermissionsFlags); } } + } else { + // The last package of this uid is removed from device. Clean the package up. + permission = INetd.PERMISSION_UNINSTALLED; } return permission; } @@ -470,6 +473,7 @@ public class PermissionMonitor { ArrayList<Integer> allPermissionAppIds = new ArrayList<>(); ArrayList<Integer> internetPermissionAppIds = new ArrayList<>(); ArrayList<Integer> updateStatsPermissionAppIds = new ArrayList<>(); + ArrayList<Integer> noPermissionAppIds = new ArrayList<>(); ArrayList<Integer> uninstalledAppIds = new ArrayList<>(); for (int i = 0; i < netdPermissionsAppIds.size(); i++) { int permissions = netdPermissionsAppIds.valueAt(i); @@ -484,8 +488,10 @@ public class PermissionMonitor { updateStatsPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); break; case INetd.NO_PERMISSIONS: - uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); + noPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); break; + case INetd.PERMISSION_UNINSTALLED: + uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); default: Log.e(TAG, "unknown permission type: " + permissions + "for uid: " + netdPermissionsAppIds.keyAt(i)); @@ -506,8 +512,12 @@ public class PermissionMonitor { mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UPDATE_DEVICE_STATS, ArrayUtils.convertToIntArray(updateStatsPermissionAppIds)); } - if (uninstalledAppIds.size() != 0) { + if (noPermissionAppIds.size() != 0) { mNetd.trafficSetNetPermForUids(INetd.NO_PERMISSIONS, + ArrayUtils.convertToIntArray(noPermissionAppIds)); + } + if (uninstalledAppIds.size() != 0) { + mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UNINSTALLED, ArrayUtils.convertToIntArray(uninstalledAppIds)); } } catch (RemoteException e) { diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java index 339cc9d2b76e..106cd1fba869 100644 --- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -501,7 +501,7 @@ public class PermissionMonitorTest { when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); mObserver.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); - mNetdServiceMonitor.expectPermission(INetd.NO_PERMISSIONS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); } @Test @@ -515,7 +515,7 @@ public class PermissionMonitorTest { // Remove and install the same package to simulate the update action when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); mObserver.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); - mNetdServiceMonitor.expectPermission(INetd.NO_PERMISSIONS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1}); |