Loading boot/hiddenapi/hiddenapi-unsupported.txt +0 −1 Original line number Original line Diff line number Diff line Loading @@ -110,7 +110,6 @@ Landroid/content/pm/IPackageInstallObserver2$Stub;-><init>()V Landroid/content/pm/IPackageInstallObserver2$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver2; Landroid/content/pm/IPackageInstallObserver2$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver2; Landroid/content/pm/IPackageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/content/pm/IPackageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/content/pm/IPackageManager$Stub$Proxy;->checkUidPermission(Ljava/lang/String;I)I Landroid/content/pm/IPackageManager$Stub$Proxy;->checkUidPermission(Ljava/lang/String;I)I Landroid/content/pm/IPackageManager$Stub$Proxy;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String; Landroid/content/pm/IPackageManager$Stub$Proxy;->getInstallLocation()I Landroid/content/pm/IPackageManager$Stub$Proxy;->getInstallLocation()I Landroid/content/pm/IPackageManager$Stub$Proxy;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; Landroid/content/pm/IPackageManager$Stub$Proxy;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String; Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String; Loading core/java/android/content/pm/IPackageManager.aidl +1 −1 Original line number Original line Diff line number Diff line Loading @@ -746,7 +746,7 @@ interface IPackageManager { // We need to keep these in IPackageManager for app compatibility // We need to keep these in IPackageManager for app compatibility //------------------------------------------------------------------------ //------------------------------------------------------------------------ @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) String[] getAppOpPermissionPackages(String permissionName); String[] getAppOpPermissionPackages(String permissionName, int userId); @UnsupportedAppUsage @UnsupportedAppUsage PermissionGroupInfo getPermissionGroupInfo(String name, int flags); PermissionGroupInfo getPermissionGroupInfo(String name, int flags); Loading services/core/java/com/android/server/pm/Computer.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -425,7 +425,7 @@ public interface Computer extends PackageDataSnapshot { boolean isUidPrivileged(int uid); boolean isUidPrivileged(int uid); @NonNull @NonNull String[] getAppOpPermissionPackages(@NonNull String permissionName); String[] getAppOpPermissionPackages(@NonNull String permissionName, int userId); @NonNull @NonNull ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(@NonNull String[] permissions, ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(@NonNull String[] permissions, Loading services/core/java/com/android/server/pm/ComputerEngine.java +7 −8 Original line number Original line Diff line number Diff line Loading @@ -4613,22 +4613,21 @@ public class ComputerEngine implements Computer { // NOTE: Can't remove due to unsupported app usage // NOTE: Can't remove due to unsupported app usage @NonNull @NonNull @Override @Override public String[] getAppOpPermissionPackages(@NonNull String permissionName) { public String[] getAppOpPermissionPackages(@NonNull String permissionName, int userId) { if (permissionName == null) { return EmptyArray.STRING; } final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid(); if (getInstantAppPackageName(callingUid) != null) { enforceCrossUserPermission(callingUid, userId, false /* requireFullPermission */, false /* checkShell */, "getAppOpPermissionPackages"); if (permissionName == null || getInstantAppPackageName(callingUid) != null || !mUserManager.exists(userId)) { return EmptyArray.STRING; return EmptyArray.STRING; } } final int callingUserId = UserHandle.getUserId(callingUid); final ArraySet<String> packageNames = new ArraySet( final ArraySet<String> packageNames = new ArraySet( mPermissionManager.getAppOpPermissionPackages(permissionName)); mPermissionManager.getAppOpPermissionPackages(permissionName)); for (int i = packageNames.size() - 1; i >= 0; i--) { for (int i = packageNames.size() - 1; i >= 0; i--) { final String packageName = packageNames.valueAt(i); final String packageName = packageNames.valueAt(i); if (!shouldFilterApplication(mSettings.getPackage(packageName), callingUid, if (!shouldFilterApplicationIncludingUninstalled( callingUserId)) { mSettings.getPackage(packageName), callingUid, userId)) { continue; continue; } } packageNames.removeAt(i); packageNames.removeAt(i); Loading services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java +8 −6 Original line number Original line Diff line number Diff line Loading @@ -265,8 +265,9 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { } } private boolean canRequestInteractAcrossProfilesUnchecked(String packageName) { private boolean canRequestInteractAcrossProfilesUnchecked(String packageName) { final int callingUserId = mInjector.getCallingUserId(); final int[] enabledProfileIds = final int[] enabledProfileIds = mInjector.getUserManager().getEnabledProfileIds(mInjector.getCallingUserId()); mInjector.getUserManager().getEnabledProfileIds(callingUserId); if (enabledProfileIds.length < 2) { if (enabledProfileIds.length < 2) { return false; return false; } } Loading @@ -274,13 +275,14 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { return false; return false; } } return hasRequestedAppOpPermission( return hasRequestedAppOpPermission( AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName); AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName, callingUserId); } } private boolean hasRequestedAppOpPermission(String permission, String packageName) { private boolean hasRequestedAppOpPermission(String permission, String packageName, int userId) { try { try { String[] packages = String[] packages = mInjector.getIPackageManager().getAppOpPermissionPackages(permission); mInjector.getIPackageManager().getAppOpPermissionPackages(permission, userId); return ArrayUtils.contains(packages, packageName); return ArrayUtils.contains(packages, packageName); } catch (RemoteException exc) { } catch (RemoteException exc) { Slog.e(TAG, "PackageManager dead. Cannot get permission info"); Slog.e(TAG, "PackageManager dead. Cannot get permission info"); Loading Loading @@ -604,7 +606,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { return false; return false; } } if (!hasRequestedAppOpPermission( if (!hasRequestedAppOpPermission( AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName)) { AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName, userId)) { return false; return false; } } return isCrossProfilePackageAllowlisted(packageName); return isCrossProfilePackageAllowlisted(packageName); Loading @@ -627,7 +629,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { return false; return false; } } if (!hasRequestedAppOpPermission( if (!hasRequestedAppOpPermission( AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName)) { AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName, userId)) { return false; return false; } } return !isPlatformSignedAppWithNonUserConfigurablePermission(packageName, profileIds); return !isPlatformSignedAppWithNonUserConfigurablePermission(packageName, profileIds); Loading Loading
boot/hiddenapi/hiddenapi-unsupported.txt +0 −1 Original line number Original line Diff line number Diff line Loading @@ -110,7 +110,6 @@ Landroid/content/pm/IPackageInstallObserver2$Stub;-><init>()V Landroid/content/pm/IPackageInstallObserver2$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver2; Landroid/content/pm/IPackageInstallObserver2$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver2; Landroid/content/pm/IPackageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/content/pm/IPackageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/content/pm/IPackageManager$Stub$Proxy;->checkUidPermission(Ljava/lang/String;I)I Landroid/content/pm/IPackageManager$Stub$Proxy;->checkUidPermission(Ljava/lang/String;I)I Landroid/content/pm/IPackageManager$Stub$Proxy;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String; Landroid/content/pm/IPackageManager$Stub$Proxy;->getInstallLocation()I Landroid/content/pm/IPackageManager$Stub$Proxy;->getInstallLocation()I Landroid/content/pm/IPackageManager$Stub$Proxy;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; Landroid/content/pm/IPackageManager$Stub$Proxy;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String; Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String; Loading
core/java/android/content/pm/IPackageManager.aidl +1 −1 Original line number Original line Diff line number Diff line Loading @@ -746,7 +746,7 @@ interface IPackageManager { // We need to keep these in IPackageManager for app compatibility // We need to keep these in IPackageManager for app compatibility //------------------------------------------------------------------------ //------------------------------------------------------------------------ @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) String[] getAppOpPermissionPackages(String permissionName); String[] getAppOpPermissionPackages(String permissionName, int userId); @UnsupportedAppUsage @UnsupportedAppUsage PermissionGroupInfo getPermissionGroupInfo(String name, int flags); PermissionGroupInfo getPermissionGroupInfo(String name, int flags); Loading
services/core/java/com/android/server/pm/Computer.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -425,7 +425,7 @@ public interface Computer extends PackageDataSnapshot { boolean isUidPrivileged(int uid); boolean isUidPrivileged(int uid); @NonNull @NonNull String[] getAppOpPermissionPackages(@NonNull String permissionName); String[] getAppOpPermissionPackages(@NonNull String permissionName, int userId); @NonNull @NonNull ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(@NonNull String[] permissions, ParceledListSlice<PackageInfo> getPackagesHoldingPermissions(@NonNull String[] permissions, Loading
services/core/java/com/android/server/pm/ComputerEngine.java +7 −8 Original line number Original line Diff line number Diff line Loading @@ -4613,22 +4613,21 @@ public class ComputerEngine implements Computer { // NOTE: Can't remove due to unsupported app usage // NOTE: Can't remove due to unsupported app usage @NonNull @NonNull @Override @Override public String[] getAppOpPermissionPackages(@NonNull String permissionName) { public String[] getAppOpPermissionPackages(@NonNull String permissionName, int userId) { if (permissionName == null) { return EmptyArray.STRING; } final int callingUid = Binder.getCallingUid(); final int callingUid = Binder.getCallingUid(); if (getInstantAppPackageName(callingUid) != null) { enforceCrossUserPermission(callingUid, userId, false /* requireFullPermission */, false /* checkShell */, "getAppOpPermissionPackages"); if (permissionName == null || getInstantAppPackageName(callingUid) != null || !mUserManager.exists(userId)) { return EmptyArray.STRING; return EmptyArray.STRING; } } final int callingUserId = UserHandle.getUserId(callingUid); final ArraySet<String> packageNames = new ArraySet( final ArraySet<String> packageNames = new ArraySet( mPermissionManager.getAppOpPermissionPackages(permissionName)); mPermissionManager.getAppOpPermissionPackages(permissionName)); for (int i = packageNames.size() - 1; i >= 0; i--) { for (int i = packageNames.size() - 1; i >= 0; i--) { final String packageName = packageNames.valueAt(i); final String packageName = packageNames.valueAt(i); if (!shouldFilterApplication(mSettings.getPackage(packageName), callingUid, if (!shouldFilterApplicationIncludingUninstalled( callingUserId)) { mSettings.getPackage(packageName), callingUid, userId)) { continue; continue; } } packageNames.removeAt(i); packageNames.removeAt(i); Loading
services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java +8 −6 Original line number Original line Diff line number Diff line Loading @@ -265,8 +265,9 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { } } private boolean canRequestInteractAcrossProfilesUnchecked(String packageName) { private boolean canRequestInteractAcrossProfilesUnchecked(String packageName) { final int callingUserId = mInjector.getCallingUserId(); final int[] enabledProfileIds = final int[] enabledProfileIds = mInjector.getUserManager().getEnabledProfileIds(mInjector.getCallingUserId()); mInjector.getUserManager().getEnabledProfileIds(callingUserId); if (enabledProfileIds.length < 2) { if (enabledProfileIds.length < 2) { return false; return false; } } Loading @@ -274,13 +275,14 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { return false; return false; } } return hasRequestedAppOpPermission( return hasRequestedAppOpPermission( AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName); AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName, callingUserId); } } private boolean hasRequestedAppOpPermission(String permission, String packageName) { private boolean hasRequestedAppOpPermission(String permission, String packageName, int userId) { try { try { String[] packages = String[] packages = mInjector.getIPackageManager().getAppOpPermissionPackages(permission); mInjector.getIPackageManager().getAppOpPermissionPackages(permission, userId); return ArrayUtils.contains(packages, packageName); return ArrayUtils.contains(packages, packageName); } catch (RemoteException exc) { } catch (RemoteException exc) { Slog.e(TAG, "PackageManager dead. Cannot get permission info"); Slog.e(TAG, "PackageManager dead. Cannot get permission info"); Loading Loading @@ -604,7 +606,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { return false; return false; } } if (!hasRequestedAppOpPermission( if (!hasRequestedAppOpPermission( AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName)) { AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName, userId)) { return false; return false; } } return isCrossProfilePackageAllowlisted(packageName); return isCrossProfilePackageAllowlisted(packageName); Loading @@ -627,7 +629,7 @@ public class CrossProfileAppsServiceImpl extends ICrossProfileApps.Stub { return false; return false; } } if (!hasRequestedAppOpPermission( if (!hasRequestedAppOpPermission( AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName)) { AppOpsManager.opToPermission(OP_INTERACT_ACROSS_PROFILES), packageName, userId)) { return false; return false; } } return !isPlatformSignedAppWithNonUserConfigurablePermission(packageName, profileIds); return !isPlatformSignedAppWithNonUserConfigurablePermission(packageName, profileIds); Loading