summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java76
1 files changed, 35 insertions, 41 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index ec424f03ed75..a4c06557ca8e 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -5104,23 +5104,12 @@ public class PackageManagerService extends IPackageManager.Stub
InstallArgs args = data.args;
PackageInstalledInfo parentRes = data.res;
- final boolean grantPermissions = (args.installFlags
- & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;
final boolean killApp = (args.installFlags
& PackageManager.INSTALL_DONT_KILL_APP) == 0;
final boolean virtualPreload = ((args.installFlags
& PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0);
- final String[] grantedPermissions = args.installGrantPermissions;
- final List<String> whitelistedRestrictedPermissions = ((args.installFlags
- & PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS) != 0
- && parentRes.pkg != null)
- ? parentRes.pkg.getRequestedPermissions()
- : args.whitelistedRestrictedPermissions;
- int autoRevokePermissionsMode = args.autoRevokePermissionsMode;
-
- handlePackagePostInstall(parentRes, grantPermissions,
- killApp, virtualPreload, grantedPermissions,
- whitelistedRestrictedPermissions, autoRevokePermissionsMode,
+
+ handlePackagePostInstall(parentRes, killApp, virtualPreload,
didRestore, args.installSource.installerPackageName, args.observer,
args.mDataLoaderType);
@@ -5399,11 +5388,8 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
- private void handlePackagePostInstall(PackageInstalledInfo res, boolean grantPermissions,
- boolean killApp, boolean virtualPreload,
- String[] grantedPermissions, List<String> allowlistedRestrictedPermissions,
- int autoRevokePermissionsMode,
- boolean launchedForRestore, String installerPackage,
+ private void handlePackagePostInstall(PackageInstalledInfo res, boolean killApp,
+ boolean virtualPreload, boolean launchedForRestore, String installerPackage,
IPackageInstallObserver2 installObserver, int dataLoaderType) {
boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED;
final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null;
@@ -5434,29 +5420,6 @@ public class PackageManagerService extends IPackageManager.Stub
res.removedInfo.sendPackageRemovedBroadcasts(killApp, false /*removedBySystem*/);
}
- final PermissionManagerServiceInternal.PackageInstalledParams.Builder
- permissionParamsBuilder =
- new PermissionManagerServiceInternal.PackageInstalledParams.Builder();
- final List<String> grantedPermissionsList;
- if (grantPermissions) {
- if (grantedPermissions != null) {
- permissionParamsBuilder.setGrantedPermissions(Arrays.asList(
- grantedPermissions));
- } else {
- permissionParamsBuilder.setGrantedPermissions(
- res.pkg.getRequestedPermissions());
- }
- }
- if (allowlistedRestrictedPermissions != null) {
- permissionParamsBuilder.setAllowlistedRestrictedPermissions(
- allowlistedRestrictedPermissions);
- }
- permissionParamsBuilder.setAutoRevokePermissionsMode(autoRevokePermissionsMode);
- for (final int userId : res.newUsers) {
- mPermissionManager.onPackageInstalled(res.pkg, permissionParamsBuilder.build(),
- userId);
- }
-
final String installerPackageName =
res.installerPackageName != null
? res.installerPackageName
@@ -18457,6 +18420,37 @@ public class PackageManagerService extends IPackageManager.Stub
}
mSettings.writeKernelMappingLPr(ps);
+
+ final PermissionManagerServiceInternal.PackageInstalledParams.Builder
+ permissionParamsBuilder =
+ new PermissionManagerServiceInternal.PackageInstalledParams.Builder();
+ final boolean grantPermissions = (installArgs.installFlags
+ & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;
+ if (grantPermissions) {
+ final List<String> grantedPermissions =
+ installArgs.installGrantPermissions != null
+ ? Arrays.asList(installArgs.installGrantPermissions)
+ : pkg.getRequestedPermissions();
+ permissionParamsBuilder.setGrantedPermissions(grantedPermissions);
+ }
+ final boolean allowlistAllRestrictedPermissions =
+ (installArgs.installFlags
+ & PackageManager.INSTALL_ALL_WHITELIST_RESTRICTED_PERMISSIONS) != 0;
+ final List<String> allowlistedRestrictedPermissions =
+ allowlistAllRestrictedPermissions ? pkg.getRequestedPermissions()
+ : installArgs.whitelistedRestrictedPermissions;
+ if (allowlistedRestrictedPermissions != null) {
+ permissionParamsBuilder.setAllowlistedRestrictedPermissions(
+ allowlistedRestrictedPermissions);
+ }
+ final int autoRevokePermissionsMode = installArgs.autoRevokePermissionsMode;
+ permissionParamsBuilder.setAutoRevokePermissionsMode(autoRevokePermissionsMode);
+ for (int currentUserId : allUsersList) {
+ if (ps.getInstalled(currentUserId)) {
+ mPermissionManager.onPackageInstalled(pkg, permissionParamsBuilder.build(),
+ currentUserId);
+ }
+ }
}
res.name = pkgName;
res.uid = pkg.getUid();