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

Commit 36a832dd authored by Todd Kennedy's avatar Todd Kennedy Committed by Android (Google) Code Review
Browse files

Merge "revert quick install"

parents c75fa4a5 373f0b43
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -9656,7 +9656,6 @@ package android.content.pm {
    method public void setAppLabel(java.lang.CharSequence);
    method public void setAppPackageName(java.lang.String);
    method public void setGrantedRuntimePermissions(java.lang.String[]);
    method public void setInstallFlagsQuick();
    method public void setInstallLocation(int);
    method public void setOriginatingUid(int);
    method public void setOriginatingUri(android.net.Uri);
+0 −6
Original line number Diff line number Diff line
@@ -1041,12 +1041,6 @@ public class PackageInstaller {
            installFlags |= PackageManager.INSTALL_FORCE_PERMISSION_PROMPT;
        }

        /** {@hide} */
        @SystemApi
        public void setInstallFlagsQuick() {
            installFlags |= PackageManager.INSTALL_QUICK;
        }

        /** {@hide} */
        public void dump(IndentingPrintWriter pw) {
            pw.printPair("mode", mode);
+1 −9
Original line number Diff line number Diff line
@@ -455,21 +455,13 @@ public abstract class PackageManager {
     */
    public static final int INSTALL_FORCE_PERMISSION_PROMPT = 0x00000400;

    /**
     * Flag parameter for {@link #installPackage} to indicate that this package is
     * to be installed quickly.
     *
     * @hide
     */
    public static final int INSTALL_QUICK = 0x00000800;

    /**
     * Flag parameter for {@link #installPackage} to indicate that this package is
     * to be installed as a lightweight "ephemeral" app.
     *
     * @hide
     */
    public static final int INSTALL_EPHEMERAL = 0x00001000;
    public static final int INSTALL_EPHEMERAL = 0x00000800;

    /**
     * Flag parameter for
+5 −15
Original line number Diff line number Diff line
@@ -625,9 +625,7 @@ public class PackageParser {
    public final static int PARSE_COLLECT_CERTIFICATES = 1<<8;
    public final static int PARSE_TRUSTED_OVERLAY = 1<<9;
    public final static int PARSE_ENFORCE_CODE = 1<<10;
    // TODO: fix b/25118622; remove this entirely once signature processing is quick
    public final static int PARSE_SKIP_VERIFICATION = 1<<11;
    public final static int PARSE_IS_EPHEMERAL = 1<<12;
    public final static int PARSE_IS_EPHEMERAL = 1<<11;

    private static final Comparator<String> sSplitNameComparator = new SplitNameComparator();

@@ -1060,8 +1058,7 @@ public class PackageParser {

    /**
     * Collect certificates from all the APKs described in the given package,
     * populating {@link Package#mSignatures}.
     * <p>Depending upon the parser flags, this may also asserts that all APK
     * populating {@link Package#mSignatures}. Also asserts that all APK
     * contents are signed correctly and consistently.
     */
    public void collectCertificates(Package pkg, int parseFlags) throws PackageParserException {
@@ -1084,10 +1081,8 @@ public class PackageParser {
        final boolean hasCode = (apkFlags & ApplicationInfo.FLAG_HAS_CODE) != 0;
        final boolean requireCode = ((parseFlags & PARSE_ENFORCE_CODE) != 0) && hasCode;
        final String apkPath = apkFile.getAbsolutePath();
        final boolean skipVerification = Build.IS_DEBUGGABLE
                && ((parseFlags & PARSE_SKIP_VERIFICATION) != 0);

        boolean codeFound = skipVerification;
        boolean codeFound = false;
        StrictJarFile jarFile = null;
        try {
            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "strictJarFileCtor");
@@ -1106,7 +1101,7 @@ public class PackageParser {
            toVerify.add(manifestEntry);

            // If we're parsing an untrusted package, verify all contents
            if (!skipVerification && (parseFlags & PARSE_IS_SYSTEM) == 0) {
            if ((parseFlags & PARSE_IS_SYSTEM) == 0) {
                final Iterator<ZipEntry> i = jarFile.iterator();
                while (i.hasNext()) {
                    final ZipEntry entry = i.next();
@@ -1150,9 +1145,6 @@ public class PackageParser {
                    for (int i=0; i < entryCerts.length; i++) {
                        pkg.mSigningKeys.add(entryCerts[i][0].getPublicKey());
                    }
                    if (skipVerification) {
                        break;
                    }
                } else {
                    if (!Signature.areExactMatch(pkg.mSignatures, entrySignatures)) {
                        throw new PackageParserException(
@@ -1218,9 +1210,7 @@ public class PackageParser {
            if ((flags & PARSE_COLLECT_CERTIFICATES) != 0) {
                // TODO: factor signature related items out of Package object
                final Package tempPkg = new Package(null);
                // TODO: fix b/25118622; pass in '0' for parse flags
                collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/,
                        flags & PARSE_SKIP_VERIFICATION);
                collectCertificates(tempPkg, apkFile, 0 /*apkFlags*/, 0 /*flags*/);
                signatures = tempPkg.mSignatures;
            } else {
                signatures = null;
+3 −12
Original line number Diff line number Diff line
@@ -482,7 +482,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR,
                    "Failed to resolve stage location", e);
        }
        final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;

        // Verify that stage looks sane with respect to existing application.
        // This currently only ensures packageName, versionCode, and certificate
@@ -490,10 +489,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
        validateInstallLocked();

        Preconditions.checkNotNull(mPackageName);
        // TODO: fix b/25118622; don't bypass signature check
        if (!quickInstall) {
        Preconditions.checkNotNull(mSignatures);
        }
        Preconditions.checkNotNull(mResolvedBaseFile);

        if (!mPermissionsAccepted) {
@@ -603,7 +599,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
     * {@link PackageManagerService}.
     */
    private void validateInstallLocked() throws PackageManagerException {
        final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
        mPackageName = null;
        mVersionCode = -1;
        mSignatures = null;
@@ -627,9 +622,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {

            final ApkLite apk;
            try {
                // TODO: fix b/25118622; always use PARSE_COLLECT_CERTIFICATES
                final int parseFlags = quickInstall ? 0 : PackageParser.PARSE_COLLECT_CERTIFICATES;
                apk = PackageParser.parseApkLite(file, parseFlags);
                apk = PackageParser.parseApkLite(file, PackageParser.PARSE_COLLECT_CERTIFICATES);
            } catch (PackageParserException e) {
                throw PackageManagerException.from(e);
            }
@@ -750,7 +743,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
    }

    private void assertApkConsistent(String tag, ApkLite apk) throws PackageManagerException {
        final boolean quickInstall = (params.installFlags & PackageManager.INSTALL_QUICK) != 0;
        if (!mPackageName.equals(apk.packageName)) {
            throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, tag + " package "
                    + apk.packageName + " inconsistent with " + mPackageName);
@@ -760,8 +752,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
                    + " version code " + apk.versionCode + " inconsistent with "
                    + mVersionCode);
        }
        // TODO: fix b/25118622; don't bypass signature check
        if (!quickInstall && !Signature.areExactMatch(mSignatures, apk.signatures)) {
        if (!Signature.areExactMatch(mSignatures, apk.signatures)) {
            throw new PackageManagerException(INSTALL_FAILED_INVALID_APK,
                    tag + " signatures are inconsistent");
        }
Loading