Merge "Revert "[RFPM05] Add UidNetdPermissionInfo class"" am: 07c54c9804

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

Change-Id: I8cef4a21aa8fd1923334c2a99e4ff2e864f516a5
This commit is contained in:
Paul Hu
2020-08-20 06:44:04 +00:00
committed by Automerger Merge Worker
2 changed files with 80 additions and 122 deletions

View File

@@ -56,6 +56,7 @@ import android.system.OsConstants;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.util.SparseIntArray;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
@@ -129,42 +130,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
} }
} }
/** public PermissionMonitor(@NonNull final Context context, @NonNull final INetd netd) {
* A data class to store each uid Netd permission information. Netd permissions includes
* PERMISSION_NETWORK, PERMISSION_SYSTEM, PERMISSION_INTERNET, PERMISSION_UPDATE_DEVICE_STATS
* and OR'd with the others. Default permission is PERMISSION_NONE and PERMISSION_UNINSTALLED
* will be set if all packages are removed from the uid.
*/
public static class UidNetdPermissionInfo {
private final int mNetdPermissions;
UidNetdPermissionInfo() {
this(PERMISSION_NONE);
}
UidNetdPermissionInfo(int permissions) {
mNetdPermissions = permissions;
}
/** Plus given permissions and return new UidNetdPermissionInfo instance. */
public UidNetdPermissionInfo plusNetdPermissions(int permissions) {
return new UidNetdPermissionInfo(mNetdPermissions | permissions);
}
/** Return whether package is uninstalled. */
public boolean isPackageUninstalled() {
return mNetdPermissions == PERMISSION_UNINSTALLED;
}
/** Check that uid has given permissions */
public boolean hasNetdPermissions(final int permissions) {
if (isPackageUninstalled()) return false;
if (permissions == PERMISSION_NONE) return true;
return (mNetdPermissions & permissions) == permissions;
}
}
public PermissionMonitor(Context context, INetd netd) {
this(context, netd, new Dependencies()); this(context, netd, new Dependencies());
} }
@@ -195,7 +161,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
return; return;
} }
final SparseArray<UidNetdPermissionInfo> netdPermsUids = new SparseArray<>(); SparseIntArray netdPermsUids = new SparseIntArray();
for (PackageInfo app : apps) { for (PackageInfo app : apps) {
int uid = app.applicationInfo != null ? app.applicationInfo.uid : INVALID_UID; int uid = app.applicationInfo != null ? app.applicationInfo.uid : INVALID_UID;
@@ -217,13 +183,9 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
} }
} }
// Skip already checked uid.
if (netdPermsUids.get(uid) != null) continue;
//TODO: unify the management of the permissions into one codepath. //TODO: unify the management of the permissions into one codepath.
final UidNetdPermissionInfo permInfo = final int otherNetdPerms = getNetdPermissionMask(uid);
new UidNetdPermissionInfo(getNetdPermissionMask(uid)); netdPermsUids.put(uid, netdPermsUids.get(uid) | otherNetdPerms);
netdPermsUids.put(uid, permInfo);
} }
List<UserInfo> users = mUserManager.getUsers(true); // exclude dying users List<UserInfo> users = mUserManager.getUsers(true); // exclude dying users
@@ -245,10 +207,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
? PERMISSION_UPDATE_DEVICE_STATS : 0; ? PERMISSION_UPDATE_DEVICE_STATS : 0;
netdPermission |= perms.contains(INTERNET) ? PERMISSION_INTERNET : 0; netdPermission |= perms.contains(INTERNET) ? PERMISSION_INTERNET : 0;
} }
final UidNetdPermissionInfo permInfo = netdPermsUids.get(uid); netdPermsUids.put(uid, netdPermsUids.get(uid) | netdPermission);
netdPermsUids.put(uid, permInfo != null
? permInfo.plusNetdPermissions(netdPermission)
: new UidNetdPermissionInfo(netdPermission));
} }
log("Users: " + mUsers.size() + ", Apps: " + mApps.size()); log("Users: " + mUsers.size() + ", Apps: " + mApps.size());
update(mUsers, mApps, true); update(mUsers, mApps, true);
@@ -382,15 +341,15 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
return currentPermission; return currentPermission;
} }
private UidNetdPermissionInfo getPermissionForUid(final int uid) { private int getPermissionForUid(final int uid) {
// Check all the packages for this UID. The UID has the permission if any of the // Check all the packages for this UID. The UID has the permission if any of the
// packages in it has the permission. // packages in it has the permission.
final String[] packages = mPackageManager.getPackagesForUid(uid); final String[] packages = mPackageManager.getPackagesForUid(uid);
if (packages == null || packages.length <= 0) { if (packages == null || packages.length <= 0) {
// The last package of this uid is removed from device. Clean the package up. // The last package of this uid is removed from device. Clean the package up.
return new UidNetdPermissionInfo(PERMISSION_UNINSTALLED); return PERMISSION_UNINSTALLED;
} }
return new UidNetdPermissionInfo(getNetdPermissionMask(uid)); return getNetdPermissionMask(uid);
} }
/** /**
@@ -640,28 +599,28 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
* permission information to netd. * permission information to netd.
* *
* @param uid the app uid of the package installed * @param uid the app uid of the package installed
* @param permissionInfo the permission info of given uid. * @param permissions the permissions the app requested and netd cares about.
* *
* @hide * @hide
*/ */
@VisibleForTesting @VisibleForTesting
void sendPackagePermissionsForUid(int uid, UidNetdPermissionInfo permissionInfo) { void sendPackagePermissionsForUid(int uid, int permissions) {
final SparseArray<UidNetdPermissionInfo> uidsPermInfo = new SparseArray<>(); SparseIntArray netdPermissionsAppIds = new SparseIntArray();
uidsPermInfo.put(uid, permissionInfo); netdPermissionsAppIds.put(uid, permissions);
sendPackagePermissionsToNetd(uidsPermInfo); sendPackagePermissionsToNetd(netdPermissionsAppIds);
} }
/** /**
* Called by packageManagerService to send IPC to netd. Grant or revoke the INTERNET * Called by packageManagerService to send IPC to netd. Grant or revoke the INTERNET
* and/or UPDATE_DEVICE_STATS permission of the uids in array. * and/or UPDATE_DEVICE_STATS permission of the uids in array.
* *
* @param uidsPermInfo permission info array generated from each uid. If the uid permission is * @param netdPermissionsAppIds integer pairs of uids and the permission granted to it. If the
* PERMISSION_NONE or PERMISSION_UNINSTALLED, revoke all permissions of that * permission is 0, revoke all permissions of that uid.
* uid. *
* @hide * @hide
*/ */
@VisibleForTesting @VisibleForTesting
void sendPackagePermissionsToNetd(final SparseArray<UidNetdPermissionInfo> uidsPermInfo) { void sendPackagePermissionsToNetd(SparseIntArray netdPermissionsAppIds) {
if (mNetd == null) { if (mNetd == null) {
Log.e(TAG, "Failed to get the netd service"); Log.e(TAG, "Failed to get the netd service");
return; return;
@@ -671,20 +630,26 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse
ArrayList<Integer> updateStatsPermissionAppIds = new ArrayList<>(); ArrayList<Integer> updateStatsPermissionAppIds = new ArrayList<>();
ArrayList<Integer> noPermissionAppIds = new ArrayList<>(); ArrayList<Integer> noPermissionAppIds = new ArrayList<>();
ArrayList<Integer> uninstalledAppIds = new ArrayList<>(); ArrayList<Integer> uninstalledAppIds = new ArrayList<>();
for (int i = 0; i < uidsPermInfo.size(); i++) { for (int i = 0; i < netdPermissionsAppIds.size(); i++) {
final int uid = uidsPermInfo.keyAt(i); int permissions = netdPermissionsAppIds.valueAt(i);
final UidNetdPermissionInfo permInfo = uidsPermInfo.valueAt(i); switch(permissions) {
if (permInfo.hasNetdPermissions( case (PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS):
PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS)) { allPermissionAppIds.add(netdPermissionsAppIds.keyAt(i));
allPermissionAppIds.add(uid); break;
} else if (permInfo.hasNetdPermissions(PERMISSION_INTERNET)) { case PERMISSION_INTERNET:
internetPermissionAppIds.add(uid); internetPermissionAppIds.add(netdPermissionsAppIds.keyAt(i));
} else if (permInfo.hasNetdPermissions(PERMISSION_UPDATE_DEVICE_STATS)) { break;
updateStatsPermissionAppIds.add(uid); case PERMISSION_UPDATE_DEVICE_STATS:
} else if (permInfo.isPackageUninstalled()) { updateStatsPermissionAppIds.add(netdPermissionsAppIds.keyAt(i));
uninstalledAppIds.add(uid); break;
} else { case PERMISSION_NONE:
noPermissionAppIds.add(uid); noPermissionAppIds.add(netdPermissionsAppIds.keyAt(i));
break;
case PERMISSION_UNINSTALLED:
uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i));
default:
Log.e(TAG, "unknown permission type: " + permissions + "for uid: "
+ netdPermissionsAppIds.keyAt(i));
} }
} }
try { try {

View File

@@ -28,17 +28,11 @@ import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRODUCT;
import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR;
import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.GET_PERMISSIONS;
import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.MATCH_ANY_USER;
import static android.net.INetd.PERMISSION_INTERNET;
import static android.net.INetd.PERMISSION_NONE;
import static android.net.INetd.PERMISSION_SYSTEM;
import static android.net.INetd.PERMISSION_UNINSTALLED;
import static android.net.INetd.PERMISSION_UPDATE_DEVICE_STATS;
import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK; import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
import static android.os.Process.SYSTEM_UID; import static android.os.Process.SYSTEM_UID;
import static com.android.server.connectivity.PermissionMonitor.NETWORK; import static com.android.server.connectivity.PermissionMonitor.NETWORK;
import static com.android.server.connectivity.PermissionMonitor.SYSTEM; import static com.android.server.connectivity.PermissionMonitor.SYSTEM;
import static com.android.server.connectivity.PermissionMonitor.UidNetdPermissionInfo;
import static junit.framework.Assert.fail; import static junit.framework.Assert.fail;
@@ -70,7 +64,7 @@ import android.net.UidRange;
import android.os.Build; import android.os.Build;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.util.SparseArray; import android.util.SparseIntArray;
import androidx.test.InstrumentationRegistry; import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
@@ -318,7 +312,7 @@ public class PermissionMonitorTest {
// Add hook to verify and track result of setPermission. // Add hook to verify and track result of setPermission.
doAnswer((InvocationOnMock invocation) -> { doAnswer((InvocationOnMock invocation) -> {
final Object[] args = invocation.getArguments(); final Object[] args = invocation.getArguments();
final Boolean isSystem = args[0].equals(PERMISSION_SYSTEM); final Boolean isSystem = args[0].equals(INetd.PERMISSION_SYSTEM);
for (final int uid : (int[]) args[1]) { for (final int uid : (int[]) args[1]) {
// TODO: Currently, permission monitor will send duplicate commands for each uid // TODO: Currently, permission monitor will send duplicate commands for each uid
// corresponding to each user. Need to fix that and uncomment below test. // corresponding to each user. Need to fix that and uncomment below test.
@@ -561,40 +555,39 @@ public class PermissionMonitorTest {
// SYSTEM_UID1: SYSTEM_PACKAGE1 has internet permission and update device stats permission. // SYSTEM_UID1: SYSTEM_PACKAGE1 has internet permission and update device stats permission.
// SYSTEM_UID2: SYSTEM_PACKAGE2 has only update device stats permission. // SYSTEM_UID2: SYSTEM_PACKAGE2 has only update device stats permission.
final SparseArray<UidNetdPermissionInfo> uidsPermInfo = new SparseArray<>(); SparseIntArray netdPermissionsAppIds = new SparseIntArray();
uidsPermInfo.put(MOCK_UID1, new UidNetdPermissionInfo(PERMISSION_INTERNET)); netdPermissionsAppIds.put(MOCK_UID1, INetd.PERMISSION_INTERNET);
uidsPermInfo.put(MOCK_UID2, new UidNetdPermissionInfo(PERMISSION_NONE)); netdPermissionsAppIds.put(MOCK_UID2, INetd.PERMISSION_NONE);
uidsPermInfo.put(SYSTEM_UID1, new UidNetdPermissionInfo( netdPermissionsAppIds.put(SYSTEM_UID1, INetd.PERMISSION_INTERNET
PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS)); | INetd.PERMISSION_UPDATE_DEVICE_STATS);
uidsPermInfo.put(SYSTEM_UID2, new UidNetdPermissionInfo(PERMISSION_UPDATE_DEVICE_STATS)); netdPermissionsAppIds.put(SYSTEM_UID2, INetd.PERMISSION_UPDATE_DEVICE_STATS);
// Send the permission information to netd, expect permission updated. // Send the permission information to netd, expect permission updated.
mPermissionMonitor.sendPackagePermissionsToNetd(uidsPermInfo); mPermissionMonitor.sendPackagePermissionsToNetd(netdPermissionsAppIds);
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET,
new int[]{MOCK_UID1}); new int[]{MOCK_UID1});
mNetdServiceMonitor.expectPermission(PERMISSION_NONE, new int[]{MOCK_UID2}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_NONE, new int[]{MOCK_UID2});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{SYSTEM_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{SYSTEM_UID1});
mNetdServiceMonitor.expectPermission(PERMISSION_UPDATE_DEVICE_STATS, mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UPDATE_DEVICE_STATS,
new int[]{SYSTEM_UID2}); new int[]{SYSTEM_UID2});
// Update permission of MOCK_UID1, expect new permission show up. // Update permission of MOCK_UID1, expect new permission show up.
mPermissionMonitor.sendPackagePermissionsForUid(MOCK_UID1, new UidNetdPermissionInfo( mPermissionMonitor.sendPackagePermissionsForUid(MOCK_UID1,
PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS)); INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS);
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
// Change permissions of SYSTEM_UID2, expect new permission show up and old permission // Change permissions of SYSTEM_UID2, expect new permission show up and old permission
// revoked. // revoked.
mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID2, new UidNetdPermissionInfo( mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID2,
PERMISSION_INTERNET)); INetd.PERMISSION_INTERNET);
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{SYSTEM_UID2}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{SYSTEM_UID2});
// Revoke permission from SYSTEM_UID1, expect no permission stored. // Revoke permission from SYSTEM_UID1, expect no permission stored.
mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID1, new UidNetdPermissionInfo( mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID1, INetd.PERMISSION_NONE);
PERMISSION_NONE)); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_NONE, new int[]{SYSTEM_UID1});
mNetdServiceMonitor.expectPermission(PERMISSION_NONE, new int[]{SYSTEM_UID1});
} }
private PackageInfo setPackagePermissions(String packageName, int uid, String[] permissions) private PackageInfo setPackagePermissions(String packageName, int uid, String[] permissions)
@@ -618,11 +611,11 @@ public class PermissionMonitorTest {
final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService);
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
addPackage(MOCK_PACKAGE2, MOCK_UID2, new String[] {INTERNET}); addPackage(MOCK_PACKAGE2, MOCK_UID2, new String[] {INTERNET});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID2}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID2});
} }
@Test @Test
@@ -630,8 +623,8 @@ public class PermissionMonitorTest {
final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService);
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
// Install another package with the same uid and no permissions should not cause the UID to // Install another package with the same uid and no permissions should not cause the UID to
// lose permissions. // lose permissions.
@@ -640,8 +633,8 @@ public class PermissionMonitorTest {
when(mPackageManager.getPackagesForUid(MOCK_UID1)) when(mPackageManager.getPackagesForUid(MOCK_UID1))
.thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2});
mPermissionMonitor.onPackageAdded(MOCK_PACKAGE2, MOCK_UID1); mPermissionMonitor.onPackageAdded(MOCK_PACKAGE2, MOCK_UID1);
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
} }
@Test @Test
@@ -649,12 +642,12 @@ public class PermissionMonitorTest {
final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService);
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{});
mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1);
mNetdServiceMonitor.expectPermission(PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1});
} }
@Test @Test
@@ -662,16 +655,16 @@ public class PermissionMonitorTest {
final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService);
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{});
removeAllPermissions(MOCK_UID1); removeAllPermissions(MOCK_UID1);
mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1);
mNetdServiceMonitor.expectPermission(PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1});
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID1}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1});
} }
@Test @Test
@@ -679,10 +672,10 @@ public class PermissionMonitorTest {
final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService);
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {});
mNetdServiceMonitor.expectPermission(PERMISSION_NONE, new int[]{MOCK_UID1}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_NONE, new int[]{MOCK_UID1});
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID1}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1});
} }
@Test @Test
@@ -690,8 +683,8 @@ public class PermissionMonitorTest {
final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService);
addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS});
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET
| PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1});
// Mock another package with the same uid but different permissions. // Mock another package with the same uid but different permissions.
final PackageInfo packageInfo2 = buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1); final PackageInfo packageInfo2 = buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1);
@@ -702,7 +695,7 @@ public class PermissionMonitorTest {
addPermissions(MOCK_UID1, INTERNET); addPermissions(MOCK_UID1, INTERNET);
mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1);
mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID1}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1});
} }
@Test @Test