diff options
| author | 2023-12-21 21:48:14 +0000 | |
|---|---|---|
| committer | 2023-12-21 21:48:14 +0000 | |
| commit | ae95049c72d490803e6ad519e05cf788a68f2f2c (patch) | |
| tree | 242e49e017d10213822c170da984e38da971493b | |
| parent | 7e6f93a656e1dab18e53b291ea242909f2a97d63 (diff) | |
| parent | 6d594dcb17b6ea04b95d6d77e34956727b12b0dd (diff) | |
Merge "Add getPriorSdkVersion to PackageManagerInternal" into main
3 files changed, 16 insertions, 1 deletions
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index cac2efba1c89..08093c0c037f 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -1463,4 +1463,9 @@ public abstract class PackageManagerInternal { */ @NonNull public abstract PackageArchiver getPackageArchiver(); + + /** + * Returns true if the device is upgrading from an SDK version lower than the one specified. + */ + public abstract boolean isUpgradingFromLowerThan(int sdkVersion); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 81d5d8195960..b7deef0e7647 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -607,6 +607,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService private final boolean mIsUpgrade; private final boolean mIsPreNMR1Upgrade; private final boolean mIsPreQUpgrade; + // If mIsUpgrade == true, contains the prior SDK version, else -1. + private final int mPriorSdkVersion; // Used for privilege escalation. MUST NOT BE CALLED WITH mPackages // LOCK HELD. Can be called with mInstallLock held. @@ -1891,6 +1893,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService mInstantAppResolverSettingsComponent = testParams.instantAppResolverSettingsComponent; mIsPreNMR1Upgrade = testParams.isPreNmr1Upgrade; mIsPreQUpgrade = testParams.isPreQupgrade; + mPriorSdkVersion = testParams.priorSdkVersion; mIsUpgrade = testParams.isUpgrade; mMetrics = testParams.Metrics; mModuleInfoProvider = testParams.moduleInfoProvider; @@ -2230,7 +2233,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService "Upgrading from " + ver.fingerprint + " (" + ver.buildFingerprint + ") to " + PackagePartitions.FINGERPRINT + " (" + Build.FINGERPRINT + ")"); } - + mPriorSdkVersion = mIsUpgrade ? ver.sdkVersion : -1; mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper, mInjector.getSystemPartitions()); @@ -7099,6 +7102,12 @@ public class PackageManagerService implements PackageSender, TestUtilityService mPackageMonitorCallbackHelper.notifyPackageMonitorWithIntent(intent, userId, visibilityAllowList, mHandler); } + + @Override + public boolean isUpgradingFromLowerThan(int sdkVersion) { + final boolean isUpgrading = mPriorSdkVersion != -1; + return isUpgrading && mPriorSdkVersion < sdkVersion; + } } private void setEnabledOverlayPackages(@UserIdInt int userId, diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java b/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java index 86d78dce96c3..2d797187b7f1 100644 --- a/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java +++ b/services/core/java/com/android/server/pm/PackageManagerServiceTestParams.java @@ -65,6 +65,7 @@ public final class PackageManagerServiceTestParams { public ComponentName instantAppResolverSettingsComponent; public boolean isPreNmr1Upgrade; public boolean isPreQupgrade; + public int priorSdkVersion = -1; public boolean isUpgrade; public LegacyPermissionManagerInternal legacyPermissionManagerInternal; public DisplayMetrics Metrics; |