Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d594dcb authored by Shawn Willden's avatar Shawn Willden
Browse files

Add getPriorSdkVersion to PackageManagerInternal

This enables system components to test whether the device just
upgraded from a previous version (without wiping /data), and if so
which version.

Bug: 290312729
Test: atest PackageManagerTest
Change-Id: I6669f56b80ebef3709e300cd2c8d98d4ffe46434
parent 4f76add4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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);
}
+10 −1
Original line number Diff line number Diff line
@@ -606,6 +606,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.
@@ -1890,6 +1892,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;
@@ -2229,7 +2232,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());

@@ -7098,6 +7101,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,
+1 −0
Original line number Diff line number Diff line
@@ -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;