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

Commit 1ee03248 authored by Neha Jain's avatar Neha Jain Committed by Android (Google) Code Review
Browse files

Revert "[PM] Support sdkVersionFull in PackageManager"

This reverts commit a308929b.

Reason for revert: b/406671643

Change-Id: I38b1bb6716eab737c108b2a231ed187d986eef02
parent a308929b
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -1442,10 +1442,4 @@ public abstract class PackageManagerInternal {
     * Returns true if the device is upgrading from an SDK version lower than the one specified.
     */
    public abstract boolean isUpgradingFromLowerThan(int sdkVersion);

    /**
     * Returns true if the device is upgrading from an SDK version lower than the one specified by
     * checking a full SDK version (includes major version and minor version)
     */
    public abstract boolean isUpgradingFromLowerThanBySdkVersionFull(int sdkVersionFull);
}
+2 −25
Original line number Diff line number Diff line
@@ -605,7 +605,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    final ProcessLoggingHandler mProcessLoggingHandler;

    private final int mSdkVersion;
    private final int mSdkVersionFull;
    final Context mContext;
    final boolean mFactoryTest;
    final DisplayMetrics mMetrics;
@@ -616,8 +615,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    private final boolean mIsPreQUpgrade;
    // If mIsUpgrade == true, contains the prior SDK version, else -1.
    private final int mPriorSdkVersion;
    // If mIsUpgrade == true, contains the prior full SDK version, else -1.
    private final int mPriorSdkVersionFull;

    // Used for privilege escalation. MUST NOT BE CALLED WITH mPackages
    // LOCK HELD.  Can be called with mInstallLock held.
@@ -1759,12 +1756,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            Slog.w(TAG, "**** ro.build.version.sdk not set!");
        }

        final int sdkVersionFull = android.sdk.Flags.majorMinorVersioningScheme()
                ? Build.VERSION.SDK_INT_FULL : 0;
        PackageManagerService m = new PackageManagerService(injector, factoryTest,
                PackagePartitions.FINGERPRINT, Build.IS_ENG, Build.IS_USERDEBUG,
                Build.VERSION.SDK_INT, Build.VERSION.INCREMENTAL, sdkVersionFull);

                Build.VERSION.SDK_INT, Build.VERSION.INCREMENTAL);
        t.traceEnd(); // "create package manager"

        final CompatChange.ChangeListener selinuxChangeListener = packageName -> {
@@ -1907,7 +1901,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        mIsPreNMR1Upgrade = testParams.isPreNmr1Upgrade;
        mIsPreQUpgrade = testParams.isPreQupgrade;
        mPriorSdkVersion = testParams.priorSdkVersion;
        mPriorSdkVersionFull = testParams.priorSdkVersionFull;
        mIsUpgrade = testParams.isUpgrade;
        mMetrics = testParams.Metrics;
        mModuleInfoProvider = testParams.moduleInfoProvider;
@@ -1949,7 +1942,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        mPackages.putAll(testParams.packages);
        mFreeStorageHelper = testParams.freeStorageHelper;
        mSdkVersion = testParams.sdkVersion;
        mSdkVersionFull = testParams.sdkVersionFull;
        mAppInstallDir = testParams.appInstallDir;
        mIsEngBuild = testParams.isEngBuild;
        mIsUserDebugBuild = testParams.isUserDebugBuild;
@@ -1979,12 +1971,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService

    public PackageManagerService(PackageManagerServiceInjector injector, boolean factoryTest,
            final String partitionsFingerprint, final boolean isEngBuild,
            final boolean isUserDebugBuild, final int sdkVersion, final String incrementalVersion,
            final int sdkVersionFull) {
            final boolean isUserDebugBuild, final int sdkVersion, final String incrementalVersion) {
        mIsEngBuild = isEngBuild;
        mIsUserDebugBuild = isUserDebugBuild;
        mSdkVersion = sdkVersion;
        mSdkVersionFull = sdkVersionFull;
        mIncrementalVersion = incrementalVersion;
        mInjector = injector;
        mInjector.getSystemWrapper().disablePackageCaches();
@@ -2257,8 +2247,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                                + PackagePartitions.FINGERPRINT + " (" + Build.FINGERPRINT + ")");
            }
            mPriorSdkVersion = mIsUpgrade ? ver.sdkVersion : -1;
            mPriorSdkVersionFull = (android.sdk.Flags.majorMinorVersioningScheme() && mIsUpgrade)
                    ? ver.sdkVersionFull : -1;
            mInitAppsHelper = new InitAppsHelper(this, mApexManager, mInstallPackageHelper,
                    mInjector.getSystemPartitions());

@@ -2387,7 +2375,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            mPermissionManager.onStorageVolumeMounted(
                    StorageManager.UUID_PRIVATE_INTERNAL, mIsUpgrade);
            ver.sdkVersion = mSdkVersion;
            ver.sdkVersionFull = mSdkVersionFull;

            // If this is the first boot or an update from pre-M, then we need to initialize the
            // default preferred apps across all defined users.
@@ -7315,12 +7302,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            final boolean isUpgrading = mPriorSdkVersion != -1;
            return isUpgrading && mPriorSdkVersion < sdkVersion;
        }

        @Override
        public boolean isUpgradingFromLowerThanBySdkVersionFull(int sdkVersionFull) {
            final boolean isUpgrading = mPriorSdkVersionFull != -1;
            return isUpgrading && (mPriorSdkVersionFull < sdkVersionFull);
        }
    }

    private void setEnabledOverlayPackages(@UserIdInt int userId,
@@ -7893,10 +7874,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        return mSdkVersion;
    }

    int getSdkVersionFull() {
        return mSdkVersionFull;
    }

    void addAllPackageProperties(@NonNull AndroidPackage pkg) {
        mPackageProperty.addAllProperties(pkg);
    }
+0 −2
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ public final class PackageManagerServiceTestParams {
    public boolean isPreNmr1Upgrade;
    public boolean isPreQupgrade;
    public int priorSdkVersion = -1;
    public int priorSdkVersionFull = -1;
    public boolean isUpgrade;
    public LegacyPermissionManagerInternal legacyPermissionManagerInternal;
    public DisplayMetrics Metrics;
@@ -101,7 +100,6 @@ public final class PackageManagerServiceTestParams {
    public ComponentName resolveComponentName;
    public ArrayMap<String, AndroidPackage> packages;
    public int sdkVersion;
    public int sdkVersionFull;
    public File appInstallDir;
    public File appLib32InstallDir;
    public boolean isEngBuild;
+0 −16
Original line number Diff line number Diff line
@@ -374,7 +374,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
    private static final String ATTR_FINGERPRINT = "fingerprint";
    private static final String ATTR_VOLUME_UUID = "volumeUuid";
    private static final String ATTR_SDK_VERSION = "sdkVersion";
    private static final String ATTR_SDK_VERSION_FULL = "sdkVersionFull";
    private static final String ATTR_DATABASE_VERSION = "databaseVersion";
    private static final String ATTR_VALUE = "value";
    private static final String ATTR_FIRST_INSTALL_TIME = "first-install-time";
@@ -455,14 +454,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
     * Version details for a storage volume that may hold apps.
     */
    public static class VersionInfo {
        /**
         * These are the last platform API version we were using for the apps
         * installed on internal and external storage. It is used to grant newer
         * permissions one time during a system upgrade. The full SDK version includes a
         * major version and a minor version.
         */
        int sdkVersionFull;

        /**
         * These are the last platform API version we were using for the apps
         * installed on internal and external storage. It is used to grant newer
@@ -493,10 +484,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
         * typically after resolving any required upgrade steps.
         */
        public void forceCurrent() {
            if (android.sdk.Flags.majorMinorVersioningScheme()) {
                sdkVersionFull = Build.VERSION.SDK_INT_FULL;
            }

            sdkVersion = Build.VERSION.SDK_INT;
            databaseVersion = CURRENT_DATABASE_VERSION;
            buildFingerprint = Build.FINGERPRINT;
@@ -2845,7 +2832,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
                    serializer.startTag(null, TAG_VERSION);
                    XmlUtils.writeStringAttribute(serializer, ATTR_VOLUME_UUID, volumeUuid);
                    serializer.attributeInt(null, ATTR_SDK_VERSION, ver.sdkVersion);
                    serializer.attributeInt(null, ATTR_SDK_VERSION_FULL, ver.sdkVersionFull);
                    serializer.attributeInt(null, ATTR_DATABASE_VERSION, ver.databaseVersion);
                    XmlUtils.writeStringAttribute(serializer, ATTR_BUILD_FINGERPRINT,
                            ver.buildFingerprint);
@@ -3511,7 +3497,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
                                ATTR_VOLUME_UUID);
                        final VersionInfo ver = findOrCreateVersion(volumeUuid);
                        ver.sdkVersion = parser.getAttributeInt(null, ATTR_SDK_VERSION);
                        ver.sdkVersionFull = parser.getAttributeInt(null, ATTR_SDK_VERSION_FULL);
                        ver.databaseVersion = parser.getAttributeInt(null, ATTR_DATABASE_VERSION);
                        ver.buildFingerprint = XmlUtils.readStringAttribute(parser,
                                ATTR_BUILD_FINGERPRINT);
@@ -5061,7 +5046,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
            }
            pw.increaseIndent();
            pw.printPair("sdkVersion", ver.sdkVersion);
            pw.printPair("sdkVersionFull", ver.sdkVersionFull);
            pw.printPair("databaseVersion", ver.databaseVersion);
            pw.println();
            pw.printPair("buildFingerprint", ver.buildFingerprint);
+17 −73
Original line number Diff line number Diff line
@@ -53,13 +53,11 @@ import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
import android.content.pm.UserPackage;
import android.os.BaseBundle;
import android.os.Build;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.RequiresFlagsDisabled;
import android.platform.test.annotations.RequiresFlagsEnabled;
import android.platform.test.flag.junit.CheckFlagsRule;
import android.platform.test.flag.junit.DeviceFlagsValueProvider;
@@ -69,9 +67,9 @@ import android.util.ArraySet;
import android.util.AtomicFile;
import android.util.LongSparseArray;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;

import com.android.internal.pm.parsing.pkg.PackageImpl;
import com.android.internal.pm.parsing.pkg.ParsedPackage;
@@ -166,7 +164,7 @@ public class PackageManagerSettingsTests {
            try {
                // unregister the user manager from the local service
                LocalServices.removeServiceForTest(UserManagerInternal.class);
                new UserManagerService(InstrumentationRegistry.getInstrumentation().getContext());
                new UserManagerService(InstrumentationRegistry.getContext());
            } catch (Exception e) {
                e.printStackTrace();
                fail("Could not create user manager service; " + e);
@@ -176,7 +174,7 @@ public class PackageManagerSettingsTests {

    @After
    public void tearDown() throws Exception {
        deleteFolder(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir());
        deleteFolder(InstrumentationRegistry.getContext().getFilesDir());
    }

    @Test
@@ -339,7 +337,7 @@ public class PackageManagerSettingsTests {
        // write out
        settings.writeLPr(computer, /*sync=*/true);

        File filesDir = InstrumentationRegistry.getInstrumentation().getContext().getFilesDir();
        File filesDir = InstrumentationRegistry.getContext().getFilesDir();
        File packageXml = new File(filesDir, "system/packages.xml");
        File packagesReserveCopyXml = new File(filesDir, "system/packages.xml.reservecopy");
        // Primary.
@@ -679,49 +677,6 @@ public class PackageManagerSettingsTests {
        assertThat(readPus3.getDistractionFlags(), is(distractionFlags3));
    }

    @Test
    public void testReadWriteSettingsVersionCodeWithSdkVersionFull() {
        final Settings settingsUnderTest = makeSettings();
        final String uuid = UUID.randomUUID().toString();
        final int sdkVersionFull = 100000;
        final int sdkVersion = 40;

        Settings.VersionInfo versionInfo = settingsUnderTest.findOrCreateVersion(uuid);
        versionInfo.sdkVersionFull = sdkVersionFull;
        versionInfo.sdkVersion = sdkVersion;

        settingsUnderTest.writeLPr(computer, /*sync=*/ true);
        settingsUnderTest.onVolumeForgotten(uuid);

        assertThat(settingsUnderTest.readLPw(computer, createFakeUsers()), is(true));
        Settings.VersionInfo readVersionInfo = settingsUnderTest.findOrCreateVersion(uuid);
        assertThat(readVersionInfo.sdkVersionFull, is(sdkVersionFull));
        assertThat(readVersionInfo.sdkVersion, is(sdkVersion));
    }

    @RequiresFlagsDisabled(android.sdk.Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME)
    @Test
    public void testSettingsGetInternalVersionNoSdkVersionFull() {
        final Settings settingsUnderTest = makeSettings();
        settingsUnderTest.writeLPr(computer, /*sync=*/ true);
        assertThat(settingsUnderTest.readLPw(computer, createFakeUsers()), is(true));
        assertThat(settingsUnderTest.getInternalVersion().sdkVersionFull, is(0));
        assertThat(settingsUnderTest.getInternalVersion().sdkVersion,
                is(Build.VERSION.SDK_INT));
    }

    @RequiresFlagsEnabled(android.sdk.Flags.FLAG_MAJOR_MINOR_VERSIONING_SCHEME)
    @Test
    public void testSettingsGetInternalVersionWithSdkVersionFull() {
        final Settings settingsUnderTest = makeSettings();
        settingsUnderTest.writeLPr(computer, /*sync=*/ true);
        assertThat(settingsUnderTest.readLPw(computer, createFakeUsers()), is(true));
        assertThat(settingsUnderTest.getInternalVersion().sdkVersionFull,
                is(Build.VERSION.SDK_INT_FULL));
        assertThat(settingsUnderTest.getInternalVersion().sdkVersion,
                is(Build.VERSION.SDK_INT));
    }

    @Test
    public void testReadWritePackageRestrictions_distractionFlags() {
        final Settings settingsUnderTest = makeSettings();
@@ -1427,14 +1382,11 @@ public class PackageManagerSettingsTests {
    private static final String PACKAGE_NAME = "com.android.bar";
    private static final String REAL_PACKAGE_NAME = "com.android.foo";
    private static final File INITIAL_CODE_PATH =
            new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                    "com.android.bar-1");
            new File(InstrumentationRegistry.getContext().getFilesDir(), "com.android.bar-1");
    private static final File UPDATED_CODE_PATH =
            new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                    "com.android.bar-2");
            new File(InstrumentationRegistry.getContext().getFilesDir(), "com.android.bar-2");
    private static final File UPDATED_CODE_PATH2 =
            new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                    "com.android.bar-3");
            new File(InstrumentationRegistry.getContext().getFilesDir(), "com.android.bar-3");
    private static final long INITIAL_VERSION_CODE = 10023L;
    private static final long UPDATED_VERSION_CODE = 10025L;

@@ -2340,8 +2292,7 @@ public class PackageManagerSettingsTests {
    }

    private void writeCorruptedPackagesXml() {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        "system/packages.xml"),
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), "system/packages.xml"),
                ("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
                        + "<packages>"
                        + "<last-platform-version internal=\"15\" external=\"0\" />"
@@ -2351,8 +2302,7 @@ public class PackageManagerSettingsTests {
    }

    static void writePackagesXml(String fileName) {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        fileName),
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), fileName),
                ("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
                + "<packages>"
                + "<last-platform-version internal=\"15\" external=\"0\" fingerprint=\"foo\" />"
@@ -2421,8 +2371,7 @@ public class PackageManagerSettingsTests {
    }

    private void writePackageRestrictions_noSuspendingPackageXml(final int userId) {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        "system/users/"
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), "system/users/"
                        + userId + "/package-restrictions.xml"),
                ("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
                        + "<package-restrictions>\n"
@@ -2437,8 +2386,7 @@ public class PackageManagerSettingsTests {
    }

    private void writePackageRestrictions_noSuspendParamsMapXml(final int userId) {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        "system/users/"
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), "system/users/"
                        + userId + "/package-restrictions.xml"),
                ("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
                        + "<package-restrictions>\n"
@@ -2462,8 +2410,7 @@ public class PackageManagerSettingsTests {
    }

    private void writeCorruptedPackageRestrictions(final int userId) {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        "system/users/"
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), "system/users/"
                        + userId + "/package-restrictions.xml"),
                ("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
                        + "<package-restrictions>\n"
@@ -2471,8 +2418,7 @@ public class PackageManagerSettingsTests {
    }

    private static void writeStoppedPackagesXml() {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        "system/packages-stopped.xml"),
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), "system/packages-stopped.xml"),
                ( "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
                + "<stopped-packages>"
                + "<pkg name=\"com.android.app1\" nl=\"1\" />"
@@ -2482,8 +2428,7 @@ public class PackageManagerSettingsTests {
    }

    private static void writePackagesList() {
        writeFile(new File(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
                        "system/packages.list"),
        writeFile(new File(InstrumentationRegistry.getContext().getFilesDir(), "system/packages.list"),
                ( "com.android.app1 11000 0 /data/data/com.android.app1 seinfo1"
                + "com.android.app2 11001 0 /data/data/com.android.app2 seinfo2"
                + "com.android.app3 11030 0 /data/data/com.android.app3 seinfo3")
@@ -2491,8 +2436,7 @@ public class PackageManagerSettingsTests {
    }

    private static void deleteSystemFolder() {
        File systemFolder = new File(
                InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(), "system");
        File systemFolder = new File(InstrumentationRegistry.getContext().getFilesDir(), "system");
        deleteFolder(systemFolder);
    }

@@ -2521,7 +2465,7 @@ public class PackageManagerSettingsTests {
    }

    private Settings makeSettings() {
        return new Settings(InstrumentationRegistry.getInstrumentation().getContext().getFilesDir(),
        return new Settings(InstrumentationRegistry.getContext().getFilesDir(),
                mRuntimePermissionsPersistence, mPermissionDataProvider,
                mDomainVerificationManager, mHandler,
                new PackageManagerTracedLock());
Loading