Loading services/core/java/android/content/pm/PackageManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -667,6 +667,12 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP */ public abstract @Nullable AndroidPackage getPackage(int uid); /** * Returns all packages for the given app ID. */ public abstract @NonNull List<AndroidPackage> getPackagesForAppId(int appId); /** * Returns a list without a change observer. * Loading services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.parsing.ParsingPackageUtils; import android.os.Environment; import android.os.Process; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; Loading Loading @@ -575,6 +576,7 @@ public class InitAndSystemPackageHelper { Slog.w(TAG, "updateAllSharedLibrariesLPw failed: ", e); } mPm.mPermissionManager.onPackageInstalled(pkg, Process.INVALID_UID /* previousAppId */, PermissionManagerServiceInternal.PackageInstalledParams.DEFAULT, UserHandle.USER_ALL); mPm.writeSettingsLPrTEMP(); Loading Loading @@ -907,6 +909,7 @@ public class InitAndSystemPackageHelper { // The method below will take care of removing obsolete permissions and granting // install permissions. mPm.mPermissionManager.onPackageInstalled(pkg, Process.INVALID_UID /* previousAppId */, PermissionManagerServiceInternal.PackageInstalledParams.DEFAULT, UserHandle.USER_ALL); for (final int userId : allUserHandles) { Loading services/core/java/com/android/server/pm/InstallParams.java +8 −6 Original line number Diff line number Diff line Loading @@ -1622,7 +1622,7 @@ final class InstallParams extends HandlerParams { AndroidPackage pkg = mPm.commitReconciledScanResultLocked(reconciledPkg, request.mAllUsers); updateSettingsLI(pkg, reconciledPkg.mInstallArgs, request.mAllUsers, res); updateSettingsLI(pkg, reconciledPkg, request.mAllUsers, res); final PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); if (ps != null) { Loading @@ -1642,17 +1642,18 @@ final class InstallParams extends HandlerParams { return mPm.mSettings.disableSystemPackageLPw(oldPkg.getPackageName(), true); } private void updateSettingsLI(AndroidPackage newPackage, InstallArgs installArgs, private void updateSettingsLI(AndroidPackage newPackage, ReconciledPackage reconciledPkg, int[] allUsers, PackageInstalledInfo res) { updateSettingsInternalLI(newPackage, installArgs, allUsers, res); updateSettingsInternalLI(newPackage, reconciledPkg, allUsers, res); } private void updateSettingsInternalLI(AndroidPackage pkg, InstallArgs installArgs, private void updateSettingsInternalLI(AndroidPackage pkg, ReconciledPackage reconciledPkg, int[] allUsers, PackageInstalledInfo res) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "updateSettings"); final String pkgName = pkg.getPackageName(); final int[] installedForUsers = res.mOrigUsers; final InstallArgs installArgs = reconciledPkg.mInstallArgs; final int installReason = installArgs.mInstallReason; InstallSource installSource = installArgs.mInstallSource; final String installerPackageName = installSource.installerPackageName; Loading Loading @@ -1808,8 +1809,9 @@ final class InstallParams extends HandlerParams { } final int autoRevokePermissionsMode = installArgs.mAutoRevokePermissionsMode; permissionParamsBuilder.setAutoRevokePermissionsMode(autoRevokePermissionsMode); mPm.mPermissionManager.onPackageInstalled(pkg, permissionParamsBuilder.build(), userId); final ScanResult scanResult = reconciledPkg.mScanResult; mPm.mPermissionManager.onPackageInstalled(pkg, scanResult.mPreviousAppId, permissionParamsBuilder.build(), userId); } res.mName = pkgName; res.mUid = pkg.getUid(); Loading services/core/java/com/android/server/pm/PackageManagerService.java +18 −0 Original line number Diff line number Diff line Loading @@ -13106,6 +13106,7 @@ public class PackageManagerService extends IPackageManager.Stub pkgSetting.pkg.getRequestedPermissions()); } mPermissionManager.onPackageInstalled(pkgSetting.pkg, Process.INVALID_UID /* previousAppId */, permissionParamsBuilder.build(), userId); } Loading Loading @@ -20010,6 +20011,23 @@ public class PackageManagerService extends IPackageManager.Stub return PackageManagerService.this.getPackage(uid); } @Override public List<AndroidPackage> getPackagesForAppId(int appId) { final Object obj; synchronized (mLock) { obj = mSettings.getSettingLPr(appId); } if (obj instanceof SharedUserSetting) { final SharedUserSetting sus = (SharedUserSetting) obj; return sus.getPackages(); } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; return List.of(ps.getPkg()); } else { return Collections.emptyList(); } } @Nullable @Override public PackageSetting getPackageSetting(String packageName) { services/core/java/com/android/server/pm/ScanPackageHelper.java +10 −7 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ import android.content.pm.parsing.component.ParsedService; import android.content.pm.parsing.result.ParseResult; import android.content.pm.parsing.result.ParseTypeImpl; import android.os.Build; import android.os.Process; import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; Loading Loading @@ -130,10 +131,12 @@ public final class ScanPackageHelper { */ public boolean optimisticallyRegisterAppId(@NonNull ScanResult result) throws PackageManagerException { if (!result.mExistingSettingCopied || result.mNeedsNewAppId) { if (!result.mExistingSettingCopied || result.needsNewAppId()) { synchronized (mPm.mLock) { // THROWS: when we can't allocate a user id. add call to check if there's // enough space to ensure we won't throw; otherwise, don't modify state return mPm.mSettings.registerAppIdLPw(result.mPkgSetting, result.mNeedsNewAppId); return mPm.mSettings.registerAppIdLPw(result.mPkgSetting, result.needsNewAppId()); } } return false; } Loading Loading @@ -337,11 +340,11 @@ public final class ScanPackageHelper { } } boolean leavingSharedUser = false; int previousAppId = Process.INVALID_UID; if (pkgSetting != null && pkgSetting.sharedUser != sharedUserSetting) { if (pkgSetting.sharedUser != null && sharedUserSetting == null) { leavingSharedUser = true; previousAppId = pkgSetting.appId; // Log that something is leaving shareduid and keep going Slog.i(TAG, "Package " + parsedPackage.getPackageName() + " shared user changed from " Loading Loading @@ -630,7 +633,7 @@ public final class ScanPackageHelper { return new ScanResult(request, true, pkgSetting, changedAbiCodePath, !createNewPackage /* existingSettingCopied */, leavingSharedUser /* needsNewAppId */, staticSharedLibraryInfo, previousAppId, staticSharedLibraryInfo, dynamicSharedLibraryInfos); } Loading Loading
services/core/java/android/content/pm/PackageManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -667,6 +667,12 @@ public abstract class PackageManagerInternal implements PackageSettingsSnapshotP */ public abstract @Nullable AndroidPackage getPackage(int uid); /** * Returns all packages for the given app ID. */ public abstract @NonNull List<AndroidPackage> getPackagesForAppId(int appId); /** * Returns a list without a change observer. * Loading
services/core/java/com/android/server/pm/InitAndSystemPackageHelper.java +3 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.parsing.ParsingPackageUtils; import android.os.Environment; import android.os.Process; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; Loading Loading @@ -575,6 +576,7 @@ public class InitAndSystemPackageHelper { Slog.w(TAG, "updateAllSharedLibrariesLPw failed: ", e); } mPm.mPermissionManager.onPackageInstalled(pkg, Process.INVALID_UID /* previousAppId */, PermissionManagerServiceInternal.PackageInstalledParams.DEFAULT, UserHandle.USER_ALL); mPm.writeSettingsLPrTEMP(); Loading Loading @@ -907,6 +909,7 @@ public class InitAndSystemPackageHelper { // The method below will take care of removing obsolete permissions and granting // install permissions. mPm.mPermissionManager.onPackageInstalled(pkg, Process.INVALID_UID /* previousAppId */, PermissionManagerServiceInternal.PackageInstalledParams.DEFAULT, UserHandle.USER_ALL); for (final int userId : allUserHandles) { Loading
services/core/java/com/android/server/pm/InstallParams.java +8 −6 Original line number Diff line number Diff line Loading @@ -1622,7 +1622,7 @@ final class InstallParams extends HandlerParams { AndroidPackage pkg = mPm.commitReconciledScanResultLocked(reconciledPkg, request.mAllUsers); updateSettingsLI(pkg, reconciledPkg.mInstallArgs, request.mAllUsers, res); updateSettingsLI(pkg, reconciledPkg, request.mAllUsers, res); final PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); if (ps != null) { Loading @@ -1642,17 +1642,18 @@ final class InstallParams extends HandlerParams { return mPm.mSettings.disableSystemPackageLPw(oldPkg.getPackageName(), true); } private void updateSettingsLI(AndroidPackage newPackage, InstallArgs installArgs, private void updateSettingsLI(AndroidPackage newPackage, ReconciledPackage reconciledPkg, int[] allUsers, PackageInstalledInfo res) { updateSettingsInternalLI(newPackage, installArgs, allUsers, res); updateSettingsInternalLI(newPackage, reconciledPkg, allUsers, res); } private void updateSettingsInternalLI(AndroidPackage pkg, InstallArgs installArgs, private void updateSettingsInternalLI(AndroidPackage pkg, ReconciledPackage reconciledPkg, int[] allUsers, PackageInstalledInfo res) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "updateSettings"); final String pkgName = pkg.getPackageName(); final int[] installedForUsers = res.mOrigUsers; final InstallArgs installArgs = reconciledPkg.mInstallArgs; final int installReason = installArgs.mInstallReason; InstallSource installSource = installArgs.mInstallSource; final String installerPackageName = installSource.installerPackageName; Loading Loading @@ -1808,8 +1809,9 @@ final class InstallParams extends HandlerParams { } final int autoRevokePermissionsMode = installArgs.mAutoRevokePermissionsMode; permissionParamsBuilder.setAutoRevokePermissionsMode(autoRevokePermissionsMode); mPm.mPermissionManager.onPackageInstalled(pkg, permissionParamsBuilder.build(), userId); final ScanResult scanResult = reconciledPkg.mScanResult; mPm.mPermissionManager.onPackageInstalled(pkg, scanResult.mPreviousAppId, permissionParamsBuilder.build(), userId); } res.mName = pkgName; res.mUid = pkg.getUid(); Loading
services/core/java/com/android/server/pm/PackageManagerService.java +18 −0 Original line number Diff line number Diff line Loading @@ -13106,6 +13106,7 @@ public class PackageManagerService extends IPackageManager.Stub pkgSetting.pkg.getRequestedPermissions()); } mPermissionManager.onPackageInstalled(pkgSetting.pkg, Process.INVALID_UID /* previousAppId */, permissionParamsBuilder.build(), userId); } Loading Loading @@ -20010,6 +20011,23 @@ public class PackageManagerService extends IPackageManager.Stub return PackageManagerService.this.getPackage(uid); } @Override public List<AndroidPackage> getPackagesForAppId(int appId) { final Object obj; synchronized (mLock) { obj = mSettings.getSettingLPr(appId); } if (obj instanceof SharedUserSetting) { final SharedUserSetting sus = (SharedUserSetting) obj; return sus.getPackages(); } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; return List.of(ps.getPkg()); } else { return Collections.emptyList(); } } @Nullable @Override public PackageSetting getPackageSetting(String packageName) {
services/core/java/com/android/server/pm/ScanPackageHelper.java +10 −7 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ import android.content.pm.parsing.component.ParsedService; import android.content.pm.parsing.result.ParseResult; import android.content.pm.parsing.result.ParseTypeImpl; import android.os.Build; import android.os.Process; import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; Loading Loading @@ -130,10 +131,12 @@ public final class ScanPackageHelper { */ public boolean optimisticallyRegisterAppId(@NonNull ScanResult result) throws PackageManagerException { if (!result.mExistingSettingCopied || result.mNeedsNewAppId) { if (!result.mExistingSettingCopied || result.needsNewAppId()) { synchronized (mPm.mLock) { // THROWS: when we can't allocate a user id. add call to check if there's // enough space to ensure we won't throw; otherwise, don't modify state return mPm.mSettings.registerAppIdLPw(result.mPkgSetting, result.mNeedsNewAppId); return mPm.mSettings.registerAppIdLPw(result.mPkgSetting, result.needsNewAppId()); } } return false; } Loading Loading @@ -337,11 +340,11 @@ public final class ScanPackageHelper { } } boolean leavingSharedUser = false; int previousAppId = Process.INVALID_UID; if (pkgSetting != null && pkgSetting.sharedUser != sharedUserSetting) { if (pkgSetting.sharedUser != null && sharedUserSetting == null) { leavingSharedUser = true; previousAppId = pkgSetting.appId; // Log that something is leaving shareduid and keep going Slog.i(TAG, "Package " + parsedPackage.getPackageName() + " shared user changed from " Loading Loading @@ -630,7 +633,7 @@ public final class ScanPackageHelper { return new ScanResult(request, true, pkgSetting, changedAbiCodePath, !createNewPackage /* existingSettingCopied */, leavingSharedUser /* needsNewAppId */, staticSharedLibraryInfo, previousAppId, staticSharedLibraryInfo, dynamicSharedLibraryInfos); } Loading