Merge "Use apex name when querying privapp allowlists" into tm-dev

This commit is contained in:
Andrei-Valentin Onea
2022-03-14 15:11:28 +00:00
committed by Android (Google) Code Review
3 changed files with 16 additions and 9 deletions

View File

@@ -435,15 +435,15 @@ public class SystemConfig {
}
/** Get privapp permission allowlist for an apk-in-apex. */
public ArraySet<String> getApexPrivAppPermissions(String module, String packageName) {
return mApexPrivAppPermissions.getOrDefault(module, EMPTY_PERMISSIONS)
.get(packageName);
public ArraySet<String> getApexPrivAppPermissions(String apexName, String apkPackageName) {
return mApexPrivAppPermissions.getOrDefault(apexName, EMPTY_PERMISSIONS)
.get(apkPackageName);
}
/** Get privapp permissions denylist for an apk-in-apex. */
public ArraySet<String> getApexPrivAppDenyPermissions(String module, String packageName) {
return mApexPrivAppDenyPermissions.getOrDefault(module, EMPTY_PERMISSIONS)
.get(packageName);
public ArraySet<String> getApexPrivAppDenyPermissions(String apexName, String apkPackageName) {
return mApexPrivAppDenyPermissions.getOrDefault(apexName, EMPTY_PERMISSIONS)
.get(apkPackageName);
}
public ArraySet<String> getVendorPrivAppPermissions(String packageName) {

View File

@@ -2540,8 +2540,10 @@ class PackageManagerShellCommand extends ShellCommand {
privAppPermissions = SystemConfig.getInstance()
.getSystemExtPrivAppPermissions(pkg);
} else if (isApexApp(pkg)) {
final String apexName = ApexManager.getInstance().getApexModuleNameForPackageName(
getApexPackageNameContainingPackage(pkg));
privAppPermissions = SystemConfig.getInstance()
.getApexPrivAppPermissions(getApexPackageNameContainingPackage(pkg), pkg);
.getApexPrivAppPermissions(apexName, pkg);
} else {
privAppPermissions = SystemConfig.getInstance().getPrivAppPermissions(pkg);
}
@@ -2567,8 +2569,10 @@ class PackageManagerShellCommand extends ShellCommand {
privAppPermissions = SystemConfig.getInstance()
.getSystemExtPrivAppDenyPermissions(pkg);
} else if (isApexApp(pkg)) {
final String apexName = ApexManager.getInstance().getApexModuleNameForPackageName(
getApexPackageNameContainingPackage(pkg));
privAppPermissions = SystemConfig.getInstance()
.getApexPrivAppDenyPermissions(getApexPackageNameContainingPackage(pkg), pkg);
.getApexPrivAppDenyPermissions(apexName, pkg);
} else {
privAppPermissions = SystemConfig.getInstance().getPrivAppDenyPermissions(pkg);
}

View File

@@ -3291,10 +3291,13 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
} else if (pkg.isSystemExt()) {
permissions = systemConfig.getSystemExtPrivAppPermissions(pkg.getPackageName());
} else if (containingApexPackageName != null) {
final ApexManager apexManager = ApexManager.getInstance();
final String apexName = apexManager.getApexModuleNameForPackageName(
containingApexPackageName);
final Set<String> privAppPermissions = systemConfig.getPrivAppPermissions(
pkg.getPackageName());
final Set<String> apexPermissions = systemConfig.getApexPrivAppPermissions(
containingApexPackageName, pkg.getPackageName());
apexName, pkg.getPackageName());
if (privAppPermissions != null) {
// TODO(andreionea): Remove check as soon as all apk-in-apex
// permission allowlists are migrated.