Merge "Add MATCH_ANY_USER flag to PackageInfo queries" am: 68301eb7cb am: 2b0351ce1e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1689207 Change-Id: I44318046f675749fe056fa253da3d48c88129441
This commit is contained in:
@@ -338,7 +338,8 @@ public class PermissionMonitor {
|
|||||||
return currentPermission;
|
return currentPermission;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
final PackageInfo app = mPackageManager.getPackageInfo(name, GET_PERMISSIONS);
|
final PackageInfo app = mPackageManager.getPackageInfo(name,
|
||||||
|
GET_PERMISSIONS | MATCH_ANY_USER);
|
||||||
final boolean isNetwork = hasNetworkPermission(app);
|
final boolean isNetwork = hasNetworkPermission(app);
|
||||||
final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app);
|
final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app);
|
||||||
if (isNetwork || hasRestrictedPermission) {
|
if (isNetwork || hasRestrictedPermission) {
|
||||||
@@ -664,6 +665,7 @@ public class PermissionMonitor {
|
|||||||
break;
|
break;
|
||||||
case INetd.PERMISSION_UNINSTALLED:
|
case INetd.PERMISSION_UNINSTALLED:
|
||||||
uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i));
|
uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
Log.e(TAG, "unknown permission type: " + permissions + "for uid: "
|
Log.e(TAG, "unknown permission type: " + permissions + "for uid: "
|
||||||
+ netdPermissionsAppIds.keyAt(i));
|
+ netdPermissionsAppIds.keyAt(i));
|
||||||
|
|||||||
@@ -2809,8 +2809,9 @@ public class ConnectivityServiceTest {
|
|||||||
|
|
||||||
private void grantUsingBackgroundNetworksPermissionForUid(
|
private void grantUsingBackgroundNetworksPermissionForUid(
|
||||||
final int uid, final String packageName) throws Exception {
|
final int uid, final String packageName) throws Exception {
|
||||||
when(mPackageManager.getPackageInfo(eq(packageName), eq(GET_PERMISSIONS)))
|
when(mPackageManager.getPackageInfo(
|
||||||
.thenReturn(buildPackageInfo(true, uid));
|
eq(packageName), eq(GET_PERMISSIONS | MATCH_ANY_USER)))
|
||||||
|
.thenReturn(buildPackageInfo(true /* hasSystemPermission */, uid));
|
||||||
mService.mPermissionMonitor.onPackageAdded(packageName, uid);
|
mService.mPermissionMonitor.onPackageAdded(packageName, uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -479,13 +479,14 @@ public class PermissionMonitorTest {
|
|||||||
public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception {
|
public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception {
|
||||||
when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
|
when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
|
||||||
Arrays.asList(new PackageInfo[] {
|
Arrays.asList(new PackageInfo[] {
|
||||||
buildPackageInfo(/* SYSTEM */ true, SYSTEM_UID1, MOCK_USER1),
|
buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1),
|
||||||
buildPackageInfo(/* SYSTEM */ false, MOCK_UID1, MOCK_USER1),
|
buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1),
|
||||||
buildPackageInfo(/* SYSTEM */ false, MOCK_UID2, MOCK_USER1),
|
buildPackageInfo(false /* hasSystemPermission */, MOCK_UID2, MOCK_USER1),
|
||||||
buildPackageInfo(/* SYSTEM */ false, VPN_UID, MOCK_USER1)
|
buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1)
|
||||||
}));
|
}));
|
||||||
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn(
|
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1),
|
||||||
buildPackageInfo(false, MOCK_UID1, MOCK_USER1));
|
eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
|
||||||
|
buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1));
|
||||||
mPermissionMonitor.startMonitoring();
|
mPermissionMonitor.startMonitoring();
|
||||||
// Every app on user 0 except MOCK_UID2 are under VPN.
|
// Every app on user 0 except MOCK_UID2 are under VPN.
|
||||||
final Set<UidRange> vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] {
|
final Set<UidRange> vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] {
|
||||||
@@ -530,11 +531,12 @@ public class PermissionMonitorTest {
|
|||||||
public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception {
|
public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception {
|
||||||
when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
|
when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
|
||||||
Arrays.asList(new PackageInfo[] {
|
Arrays.asList(new PackageInfo[] {
|
||||||
buildPackageInfo(true, SYSTEM_UID1, MOCK_USER1),
|
buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1),
|
||||||
buildPackageInfo(false, VPN_UID, MOCK_USER1)
|
buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1)
|
||||||
}));
|
}));
|
||||||
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn(
|
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1),
|
||||||
buildPackageInfo(false, MOCK_UID1, MOCK_USER1));
|
eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
|
||||||
|
buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1));
|
||||||
|
|
||||||
mPermissionMonitor.startMonitoring();
|
mPermissionMonitor.startMonitoring();
|
||||||
final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1));
|
final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1));
|
||||||
|
|||||||
Reference in New Issue
Block a user