Loading services/core/java/com/android/server/pm/PackageManagerService.java +10 −2 Original line number Original line Diff line number Diff line Loading @@ -4110,7 +4110,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService final int livingUserCount = livingUsers.size(); final int livingUserCount = livingUsers.size(); for (int i = 0; i < livingUserCount; i++) { for (int i = 0; i < livingUserCount; i++) { final int userId = livingUsers.get(i).id; final int userId = livingUsers.get(i).id; if (mSettings.isPermissionUpgradeNeeded(userId)) { final boolean isPermissionUpgradeNeeded = !Objects.equals( mPermissionManager.getDefaultPermissionGrantFingerprint(userId), Build.FINGERPRINT); if (isPermissionUpgradeNeeded) { grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds, userId); grantPermissionsUserIds, userId); } } Loading @@ -4118,6 +4121,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService // If we upgraded grant all default permissions before kicking off. // If we upgraded grant all default permissions before kicking off. for (int userId : grantPermissionsUserIds) { for (int userId : grantPermissionsUserIds) { mLegacyPermissionManager.grantDefaultPermissions(userId); mLegacyPermissionManager.grantDefaultPermissions(userId); mPermissionManager.setDefaultPermissionGrantFingerprint(Build.FINGERPRINT, userId); } } if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { // If we did not grant default permissions, we preload from this the // If we did not grant default permissions, we preload from this the Loading Loading @@ -4286,6 +4290,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) { if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) { mPermissionManager.onUserCreated(userId); mPermissionManager.onUserCreated(userId); mLegacyPermissionManager.grantDefaultPermissions(userId); mLegacyPermissionManager.grantDefaultPermissions(userId); mPermissionManager.setDefaultPermissionGrantFingerprint(Build.FINGERPRINT, userId); mDomainVerificationManager.clearUser(userId); mDomainVerificationManager.clearUser(userId); } } } } Loading @@ -4295,7 +4300,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService mPermissionManager.writeLegacyPermissionStateTEMP(); mPermissionManager.writeLegacyPermissionStateTEMP(); mSettings.readPermissionStateForUserSyncLPr(userId); mSettings.readPermissionStateForUserSyncLPr(userId); mPermissionManager.readLegacyPermissionStateTEMP(); mPermissionManager.readLegacyPermissionStateTEMP(); return mSettings.isPermissionUpgradeNeeded(userId); final boolean isPermissionUpgradeNeeded = !Objects.equals( mPermissionManager.getDefaultPermissionGrantFingerprint(userId), Build.FINGERPRINT); return isPermissionUpgradeNeeded; } } } } Loading services/core/java/com/android/server/pm/permission/PermissionManagerService.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -687,6 +687,18 @@ public class PermissionManagerService extends IPermissionManager.Stub { mPermissionManagerServiceImpl.writeLegacyPermissionsTEMP(legacyPermissionSettings); mPermissionManagerServiceImpl.writeLegacyPermissionsTEMP(legacyPermissionSettings); } } @Nullable @Override public String getDefaultPermissionGrantFingerprint(@UserIdInt int userId) { return mPermissionManagerServiceImpl.getDefaultPermissionGrantFingerprint(userId); } @Override public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId) { mPermissionManagerServiceImpl.setDefaultPermissionGrantFingerprint(fingerprint, userId); } @Override @Override public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp, public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp, @Nullable AndroidPackage oldPkg) { @Nullable AndroidPackage oldPkg) { Loading services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -4599,6 +4599,19 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt } } } } @Nullable @Override public String getDefaultPermissionGrantFingerprint(@UserIdInt int userId) { return mPackageManagerInt.isPermissionUpgradeNeeded(userId) ? null : Build.FINGERPRINT; } @Override public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId) { // Ignored - default permission grant here shares the same version with runtime permission // upgrade, and the new version is set by that later. } private void onPackageAddedInternal(@NonNull PackageState packageState, private void onPackageAddedInternal(@NonNull PackageState packageState, @NonNull AndroidPackage pkg, boolean isInstantApp, @Nullable AndroidPackage oldPkg) { @NonNull AndroidPackage pkg, boolean isInstantApp, @Nullable AndroidPackage oldPkg) { if (!pkg.getAdoptPermissions().isEmpty()) { if (!pkg.getAdoptPermissions().isEmpty()) { Loading services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java +12 −1 Original line number Original line Diff line number Diff line Loading @@ -522,6 +522,17 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte */ */ void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); /** * Get the fingerprint for default permission grants. */ @Nullable String getDefaultPermissionGrantFingerprint(@UserIdInt int userId); /** * Set the fingerprint for default permission grants. */ void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId); /** /** * Callback when the system is ready. * Callback when the system is ready. */ */ Loading Loading @@ -603,6 +614,6 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte * @param userId the user ID the package is uninstalled for * @param userId the user ID the package is uninstalled for */ */ void onPackageUninstalled(@NonNull String packageName, int appId, void onPackageUninstalled(@NonNull String packageName, int appId, @NonNull PackageState packageState, @NonNull AndroidPackage pkg, @NonNull PackageState packageState, @Nullable AndroidPackage pkg, @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId); @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId); } } services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -214,6 +214,17 @@ public interface PermissionManagerServiceInternal extends PermissionManagerInter */ */ void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); /** * Get the fingerprint for default permission grants. */ @Nullable String getDefaultPermissionGrantFingerprint(@UserIdInt int userId); /** * Set the fingerprint for default permission grants. */ void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId); /** /** * Callback when the system is ready. * Callback when the system is ready. */ */ Loading Loading
services/core/java/com/android/server/pm/PackageManagerService.java +10 −2 Original line number Original line Diff line number Diff line Loading @@ -4110,7 +4110,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService final int livingUserCount = livingUsers.size(); final int livingUserCount = livingUsers.size(); for (int i = 0; i < livingUserCount; i++) { for (int i = 0; i < livingUserCount; i++) { final int userId = livingUsers.get(i).id; final int userId = livingUsers.get(i).id; if (mSettings.isPermissionUpgradeNeeded(userId)) { final boolean isPermissionUpgradeNeeded = !Objects.equals( mPermissionManager.getDefaultPermissionGrantFingerprint(userId), Build.FINGERPRINT); if (isPermissionUpgradeNeeded) { grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds = ArrayUtils.appendInt( grantPermissionsUserIds, userId); grantPermissionsUserIds, userId); } } Loading @@ -4118,6 +4121,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService // If we upgraded grant all default permissions before kicking off. // If we upgraded grant all default permissions before kicking off. for (int userId : grantPermissionsUserIds) { for (int userId : grantPermissionsUserIds) { mLegacyPermissionManager.grantDefaultPermissions(userId); mLegacyPermissionManager.grantDefaultPermissions(userId); mPermissionManager.setDefaultPermissionGrantFingerprint(Build.FINGERPRINT, userId); } } if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { // If we did not grant default permissions, we preload from this the // If we did not grant default permissions, we preload from this the Loading Loading @@ -4286,6 +4290,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) { if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) { mPermissionManager.onUserCreated(userId); mPermissionManager.onUserCreated(userId); mLegacyPermissionManager.grantDefaultPermissions(userId); mLegacyPermissionManager.grantDefaultPermissions(userId); mPermissionManager.setDefaultPermissionGrantFingerprint(Build.FINGERPRINT, userId); mDomainVerificationManager.clearUser(userId); mDomainVerificationManager.clearUser(userId); } } } } Loading @@ -4295,7 +4300,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService mPermissionManager.writeLegacyPermissionStateTEMP(); mPermissionManager.writeLegacyPermissionStateTEMP(); mSettings.readPermissionStateForUserSyncLPr(userId); mSettings.readPermissionStateForUserSyncLPr(userId); mPermissionManager.readLegacyPermissionStateTEMP(); mPermissionManager.readLegacyPermissionStateTEMP(); return mSettings.isPermissionUpgradeNeeded(userId); final boolean isPermissionUpgradeNeeded = !Objects.equals( mPermissionManager.getDefaultPermissionGrantFingerprint(userId), Build.FINGERPRINT); return isPermissionUpgradeNeeded; } } } } Loading
services/core/java/com/android/server/pm/permission/PermissionManagerService.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -687,6 +687,18 @@ public class PermissionManagerService extends IPermissionManager.Stub { mPermissionManagerServiceImpl.writeLegacyPermissionsTEMP(legacyPermissionSettings); mPermissionManagerServiceImpl.writeLegacyPermissionsTEMP(legacyPermissionSettings); } } @Nullable @Override public String getDefaultPermissionGrantFingerprint(@UserIdInt int userId) { return mPermissionManagerServiceImpl.getDefaultPermissionGrantFingerprint(userId); } @Override public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId) { mPermissionManagerServiceImpl.setDefaultPermissionGrantFingerprint(fingerprint, userId); } @Override @Override public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp, public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp, @Nullable AndroidPackage oldPkg) { @Nullable AndroidPackage oldPkg) { Loading
services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -4599,6 +4599,19 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt } } } } @Nullable @Override public String getDefaultPermissionGrantFingerprint(@UserIdInt int userId) { return mPackageManagerInt.isPermissionUpgradeNeeded(userId) ? null : Build.FINGERPRINT; } @Override public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId) { // Ignored - default permission grant here shares the same version with runtime permission // upgrade, and the new version is set by that later. } private void onPackageAddedInternal(@NonNull PackageState packageState, private void onPackageAddedInternal(@NonNull PackageState packageState, @NonNull AndroidPackage pkg, boolean isInstantApp, @Nullable AndroidPackage oldPkg) { @NonNull AndroidPackage pkg, boolean isInstantApp, @Nullable AndroidPackage oldPkg) { if (!pkg.getAdoptPermissions().isEmpty()) { if (!pkg.getAdoptPermissions().isEmpty()) { Loading
services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java +12 −1 Original line number Original line Diff line number Diff line Loading @@ -522,6 +522,17 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte */ */ void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); /** * Get the fingerprint for default permission grants. */ @Nullable String getDefaultPermissionGrantFingerprint(@UserIdInt int userId); /** * Set the fingerprint for default permission grants. */ void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId); /** /** * Callback when the system is ready. * Callback when the system is ready. */ */ Loading Loading @@ -603,6 +614,6 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte * @param userId the user ID the package is uninstalled for * @param userId the user ID the package is uninstalled for */ */ void onPackageUninstalled(@NonNull String packageName, int appId, void onPackageUninstalled(@NonNull String packageName, int appId, @NonNull PackageState packageState, @NonNull AndroidPackage pkg, @NonNull PackageState packageState, @Nullable AndroidPackage pkg, @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId); @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId); } }
services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -214,6 +214,17 @@ public interface PermissionManagerServiceInternal extends PermissionManagerInter */ */ void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings); /** * Get the fingerprint for default permission grants. */ @Nullable String getDefaultPermissionGrantFingerprint(@UserIdInt int userId); /** * Set the fingerprint for default permission grants. */ void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId); /** /** * Callback when the system is ready. * Callback when the system is ready. */ */ Loading