diff --git a/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java index a9749c4a04..31f65d794c 100644 --- a/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -60,7 +60,6 @@ import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -83,9 +82,12 @@ import android.provider.Settings; import android.util.ArraySet; import android.util.SparseIntArray; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; +import com.android.net.module.util.CollectionUtils; import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRunner; @@ -98,6 +100,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -161,20 +164,17 @@ public class PermissionMonitorTest { doReturn(UserHandle.ALL).when(asUserCtx).getUser(); when(mContext.createContextAsUser(eq(UserHandle.ALL), anyInt())).thenReturn(asUserCtx); when(mDeps.getUidsAllowedOnRestrictedNetworks(any())).thenReturn(new ArraySet<>()); + // Set DEVICE_INITIAL_SDK_INT to Q that SYSTEM_UID won't have restricted network permission + // by default. + doReturn(VERSION_Q).when(mDeps).getDeviceFirstSdkInt(); - mPermissionMonitor = spy(new PermissionMonitor(mContext, mNetdService, mDeps)); + mPermissionMonitor = new PermissionMonitor(mContext, mNetdService, mDeps); mNetdMonitor = new NetdMonitor(mNetdService); when(mPackageManager.getInstalledPackages(anyInt())).thenReturn(/* empty app list */ null); mPermissionMonitor.startMonitoring(); } - private boolean hasRestrictedNetworkPermission(String partition, int targetSdkVersion, int uid, - String... permissions) { - return hasRestrictedNetworkPermission( - partition, targetSdkVersion, "" /* packageName */, uid, permissions); - } - private boolean hasRestrictedNetworkPermission(String partition, int targetSdkVersion, String packageName, int uid, String... permissions) { final PackageInfo packageInfo = @@ -223,13 +223,44 @@ public class PermissionMonitorTest { private static PackageInfo buildPackageInfo(String packageName, int uid, String... permissions) { - final PackageInfo pkgInfo; - pkgInfo = systemPackageInfoWithPermissions(permissions); + final PackageInfo pkgInfo = systemPackageInfoWithPermissions(permissions); pkgInfo.packageName = packageName; pkgInfo.applicationInfo.uid = uid; return pkgInfo; } + // TODO: Move this method to static lib. + private static @NonNull T[] appendElement(Class kind, @Nullable T[] array, T element) { + final T[] result; + if (array != null) { + result = Arrays.copyOf(array, array.length + 1); + } else { + result = (T[]) Array.newInstance(kind, 1); + } + result[result.length - 1] = element; + return result; + } + + private void buildAndMockPackageInfoWithPermissions(String packageName, int uid, + String... permissions) throws Exception { + final PackageInfo packageInfo = buildPackageInfo(packageName, uid, permissions); + // This will return the wrong UID for the package when queried with other users. + doReturn(packageInfo).when(mPackageManager) + .getPackageInfo(eq(packageName), anyInt() /* flag */); + final String[] oldPackages = mPackageManager.getPackagesForUid(uid); + // If it's duplicated package, no need to set it again. + if (CollectionUtils.contains(oldPackages, packageName)) return; + + // Combine the package if this uid is shared with other packages. + final String[] newPackages = appendElement(String.class, oldPackages, packageName); + doReturn(newPackages).when(mPackageManager).getPackagesForUid(eq(uid)); + } + + private void addPackage(String packageName, int uid, String... permissions) throws Exception { + buildAndMockPackageInfoWithPermissions(packageName, uid, permissions); + mPermissionMonitor.onPackageAdded(packageName, uid); + } + @Test public void testHasPermission() { PackageInfo app = systemPackageInfoWithPermissions(); @@ -298,67 +329,77 @@ public class PermissionMonitorTest { @Test public void testHasRestrictedNetworkPermission() { - assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE)); - assertTrue(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, MOCK_UID1, NETWORK_STACK)); + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL)); + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, CHANGE_NETWORK_STATE)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, NETWORK_STACK)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE)); + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, CONNECTIVITY_INTERNAL)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, MOCK_UID1, PERMISSION_MAINLINE_NETWORK_STACK)); + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, + CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, CHANGE_WIFI_STATE)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, + PERMISSION_MAINLINE_NETWORK_STACK)); - assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_Q, MOCK_UID1, CONNECTIVITY_INTERNAL)); + PARTITION_SYSTEM, VERSION_Q, MOCK_PACKAGE1, MOCK_UID1)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_Q, MOCK_PACKAGE1, MOCK_UID1, CONNECTIVITY_INTERNAL)); } @Test public void testHasRestrictedNetworkPermissionSystemUid() { doReturn(VERSION_P).when(mDeps).getDeviceFirstSdkInt(); - assertTrue(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CONNECTIVITY_INTERNAL)); + PARTITION_SYSTEM, VERSION_P, SYSTEM_PACKAGE1, SYSTEM_UID)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + PARTITION_SYSTEM, VERSION_P, SYSTEM_PACKAGE1, SYSTEM_UID, CONNECTIVITY_INTERNAL)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, SYSTEM_PACKAGE1, SYSTEM_UID, + CONNECTIVITY_USE_RESTRICTED_NETWORKS)); doReturn(VERSION_Q).when(mDeps).getDeviceFirstSdkInt(); - assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CONNECTIVITY_INTERNAL)); + PARTITION_SYSTEM, VERSION_Q, SYSTEM_PACKAGE1, SYSTEM_UID)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_Q, SYSTEM_PACKAGE1, SYSTEM_UID, CONNECTIVITY_INTERNAL)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + PARTITION_SYSTEM, VERSION_Q, SYSTEM_PACKAGE1, SYSTEM_UID, + CONNECTIVITY_USE_RESTRICTED_NETWORKS)); } @Test public void testHasRestrictedNetworkPermissionVendorApp() { - assertTrue(hasRestrictedNetworkPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE)); + PARTITION_VENDOR, VERSION_P, MOCK_PACKAGE1, MOCK_UID1)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_P, MOCK_UID1, NETWORK_STACK)); + PARTITION_VENDOR, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, CHANGE_NETWORK_STATE)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL)); + PARTITION_VENDOR, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, NETWORK_STACK)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + PARTITION_VENDOR, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, CONNECTIVITY_INTERNAL)); assertTrue(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE)); + PARTITION_VENDOR, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, + CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_P, MOCK_PACKAGE1, MOCK_UID1, CHANGE_WIFI_STATE)); - assertFalse(hasRestrictedNetworkPermission(PARTITION_VENDOR, VERSION_Q, MOCK_UID1)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CONNECTIVITY_INTERNAL)); + PARTITION_VENDOR, VERSION_Q, MOCK_PACKAGE1, MOCK_UID1)); assertFalse(hasRestrictedNetworkPermission( - PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CHANGE_NETWORK_STATE)); + PARTITION_VENDOR, VERSION_Q, MOCK_PACKAGE1, MOCK_UID1, CONNECTIVITY_INTERNAL)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_Q, MOCK_PACKAGE1, MOCK_UID1, CHANGE_NETWORK_STATE)); } @Test public void testHasRestrictedNetworkPermissionUidAllowedOnRestrictedNetworks() { - mPermissionMonitor.updateUidsAllowedOnRestrictedNetworks( - new ArraySet<>(new Integer[] { MOCK_UID1 })); + mPermissionMonitor.updateUidsAllowedOnRestrictedNetworks(Set.of(MOCK_UID1)); assertTrue(hasRestrictedNetworkPermission( PARTITION_VENDOR, VERSION_Q, MOCK_PACKAGE1, MOCK_UID1)); assertTrue(hasRestrictedNetworkPermission( @@ -441,10 +482,7 @@ public class PermissionMonitorTest { private void assertBackgroundPermission(boolean hasPermission, String name, int uid, String... permissions) throws Exception { - when(mPackageManager.getPackageInfo(eq(name), anyInt())) - .thenReturn(packageInfoWithPermissions( - REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM)); - mPermissionMonitor.onPackageAdded(name, uid); + addPackage(name, uid, permissions); assertEquals(hasPermission, mPermissionMonitor.hasUseBackgroundNetworksPermission(uid)); } @@ -556,13 +594,10 @@ public class PermissionMonitorTest { // MOCK_UID1: MOCK_PACKAGE1 only has network permission. // SYSTEM_UID: SYSTEM_PACKAGE1 has system permission. // SYSTEM_UID: SYSTEM_PACKAGE2 only has network permission. - doReturn(SYSTEM).when(mPermissionMonitor).highestPermissionForUid(any(), - eq(SYSTEM_PACKAGE1)); - doReturn(NETWORK).when(mPermissionMonitor).highestPermissionForUid(any(), - eq(SYSTEM_PACKAGE2)); - doReturn(NETWORK).when(mPermissionMonitor).highestPermissionForUid(any(), - eq(MOCK_PACKAGE1)); - doReturn(SYSTEM).when(mPermissionMonitor).highestPermissionForUid(eq(SYSTEM), anyString()); + buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE1, MOCK_UID1, CHANGE_NETWORK_STATE); + buildAndMockPackageInfoWithPermissions(SYSTEM_PACKAGE1, SYSTEM_UID, + CONNECTIVITY_USE_RESTRICTED_NETWORKS); + buildAndMockPackageInfoWithPermissions(SYSTEM_PACKAGE2, SYSTEM_UID, CHANGE_NETWORK_STATE); // Add SYSTEM_PACKAGE2, expect only have network permission. mPermissionMonitor.onUserAdded(MOCK_USER1); @@ -603,7 +638,6 @@ public class PermissionMonitorTest { .thenReturn(new String[]{}); when(mPackageManager.getPackagesForUid(MOCK_USER2.getUid(MOCK_UID1))) .thenReturn(new String[]{}); - mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); removePackageForUsers(new UserHandle[]{MOCK_USER1, MOCK_USER2}, MOCK_PACKAGE1, MOCK_UID1); mNetdMonitor.expectNoNetworkPerm(new UserHandle[]{MOCK_USER1, MOCK_USER2}, MOCK_UID1); @@ -751,50 +785,29 @@ public class PermissionMonitorTest { mNetdMonitor.expectTrafficPerm(PERMISSION_NONE, SYSTEM_UID1); } - private PackageInfo setPackagePermissions(String packageName, int uid, String[] permissions) - throws Exception { - PackageInfo packageInfo = packageInfoWithPermissions( - REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM); - when(mPackageManager.getPackageInfo(eq(packageName), anyInt())).thenReturn(packageInfo); - when(mPackageManager.getPackagesForUid(eq(uid))).thenReturn(new String[]{packageName}); - return packageInfo; - } - - private PackageInfo addPackage(String packageName, int uid, String[] permissions) - throws Exception { - PackageInfo packageInfo = setPackagePermissions(packageName, uid, permissions); - mPermissionMonitor.onPackageAdded(packageName, uid); - return packageInfo; - } - @Test public void testPackageInstall() throws Exception { - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET, UPDATE_DEVICE_STATS); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); - addPackage(MOCK_PACKAGE2, MOCK_UID2, new String[] {INTERNET}); + addPackage(MOCK_PACKAGE2, MOCK_UID2, INTERNET); mNetdMonitor.expectTrafficPerm(PERMISSION_INTERNET, MOCK_UID2); } @Test public void testPackageInstallSharedUid() throws Exception { - PackageInfo packageInfo1 = addPackage(MOCK_PACKAGE1, MOCK_UID1, - new String[] {INTERNET, UPDATE_DEVICE_STATS}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET, UPDATE_DEVICE_STATS); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); // Install another package with the same uid and no permissions should not cause the UID to // lose permissions. - PackageInfo packageInfo2 = systemPackageInfoWithPermissions(); - when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE2), anyInt())).thenReturn(packageInfo2); - when(mPackageManager.getPackagesForUid(MOCK_UID1)) - .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); - mPermissionMonitor.onPackageAdded(MOCK_PACKAGE2, MOCK_UID1); + addPackage(MOCK_PACKAGE2, MOCK_UID1); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); } @Test public void testPackageUninstallBasic() throws Exception { - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET, UPDATE_DEVICE_STATS); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); @@ -804,37 +817,38 @@ public class PermissionMonitorTest { @Test public void testPackageRemoveThenAdd() throws Exception { - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET, UPDATE_DEVICE_STATS); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mNetdMonitor.expectTrafficPerm(PERMISSION_UNINSTALLED, MOCK_UID1); - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET); mNetdMonitor.expectTrafficPerm(PERMISSION_INTERNET, MOCK_UID1); } @Test public void testPackageUpdate() throws Exception { - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {}); + addPackage(MOCK_PACKAGE1, MOCK_UID1); mNetdMonitor.expectTrafficPerm(PERMISSION_NONE, MOCK_UID1); - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET); mNetdMonitor.expectTrafficPerm(PERMISSION_INTERNET, MOCK_UID1); } @Test public void testPackageUninstallWithMultiplePackages() throws Exception { - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); + addPackage(MOCK_PACKAGE1, MOCK_UID1, INTERNET, UPDATE_DEVICE_STATS); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); - // Mock another package with the same uid but different permissions. - PackageInfo packageInfo2 = systemPackageInfoWithPermissions(INTERNET); - when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE2), anyInt())).thenReturn(packageInfo2); - when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{ - MOCK_PACKAGE2}); + // Install another package with the same uid but different permissions. + addPackage(MOCK_PACKAGE2, MOCK_UID1, INTERNET); + mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); + // Uninstall MOCK_PACKAGE1 and expect only INTERNET permission left. + when(mPackageManager.getPackagesForUid(eq(MOCK_UID1))) + .thenReturn(new String[]{MOCK_PACKAGE2}); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mNetdMonitor.expectTrafficPerm(PERMISSION_INTERNET, MOCK_UID1); } @@ -888,8 +902,8 @@ public class PermissionMonitorTest { final Intent addedIntent = new Intent(Intent.ACTION_PACKAGE_ADDED, Uri.fromParts("package", MOCK_PACKAGE1, null /* fragment */)); addedIntent.putExtra(Intent.EXTRA_UID, MOCK_UID1); - setPackagePermissions(MOCK_PACKAGE1, MOCK_UID1, - new String[] { INTERNET, UPDATE_DEVICE_STATS }); + buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE1, MOCK_UID1, INTERNET, + UPDATE_DEVICE_STATS); receiver.onReceive(mContext, addedIntent); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1); @@ -910,13 +924,6 @@ public class PermissionMonitorTest { return captor.getValue(); } - private void buildAndMockPackageInfoWithPermissions(String packageName, int uid, - String... permissions) throws Exception { - final PackageInfo packageInfo = setPackagePermissions(packageName, uid, permissions); - packageInfo.packageName = packageName; - packageInfo.applicationInfo.uid = uid; - } - @Test public void testUidsAllowedOnRestrictedNetworksChanged() throws Exception { final ContentObserver contentObserver = expectRegisterContentObserver( @@ -957,8 +964,6 @@ public class PermissionMonitorTest { mPermissionMonitor.onUserAdded(MOCK_USER1); buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE1, MOCK_UID1, CHANGE_NETWORK_STATE); buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE2, MOCK_UID1); - when(mPackageManager.getPackagesForUid(MOCK_UID1)) - .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); // MOCK_PACKAGE1 have CHANGE_NETWORK_STATE, MOCK_UID1 should have NETWORK permission. addPackageForUsers(new UserHandle[]{MOCK_USER1}, MOCK_PACKAGE1, MOCK_UID1); @@ -1105,8 +1110,6 @@ public class PermissionMonitorTest { externalIntent.putExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST, new String[] {MOCK_PACKAGE1}); buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE1, MOCK_UID1, CHANGE_NETWORK_STATE); buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE2, MOCK_UID1, UPDATE_DEVICE_STATS); - when(mPackageManager.getPackagesForUid(MOCK_UID1)) - .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); receiver.onReceive(mContext, externalIntent); mNetdMonitor.expectNetworkPerm(NETWORK, new UserHandle[]{MOCK_USER1}, MOCK_UID1); mNetdMonitor.expectTrafficPerm(PERMISSION_UPDATE_DEVICE_STATS, MOCK_UID1); @@ -1137,8 +1140,6 @@ public class PermissionMonitorTest { CONNECTIVITY_USE_RESTRICTED_NETWORKS, UPDATE_DEVICE_STATS); buildAndMockPackageInfoWithPermissions(MOCK_PACKAGE2, MOCK_UID1, CHANGE_NETWORK_STATE, INTERNET); - when(mPackageManager.getPackagesForUid(MOCK_UID1)) - .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); receiver.onReceive(mContext, externalIntent); mNetdMonitor.expectNetworkPerm(SYSTEM, new UserHandle[]{MOCK_USER1}, MOCK_UID1); mNetdMonitor.expectTrafficPerm(PERMISSION_TRAFFIC_ALL, MOCK_UID1);