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

Commit e92d9e11 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

Merge changes from topic "BackupManagerModernInstallInterface"

* changes:
  Disable installation via adb restore
  Use modern install method in backup service
parents f262c7f2 7323eecb
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -1682,22 +1681,6 @@ public class ApplicationPackageManager extends PackageManager {
        return info.loadLabel(this);
    }

    @Override
    public void installPackage(Uri packageURI,
            PackageInstallObserver observer, int flags, String installerPackageName) {
        if (!"file".equals(packageURI.getScheme())) {
            throw new UnsupportedOperationException("Only file:// URIs are supported");
        }

        final String originPath = packageURI.getPath();
        try {
            mPM.installPackageAsUser(originPath, observer.getBinder(), flags, installerPackageName,
                    mContext.getUserId());
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    @Override
    public int installExistingPackage(String packageName) throws NameNotFoundException {
        return installExistingPackage(packageName, PackageManager.INSTALL_REASON_UNKNOWN);
+0 −8
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ import android.content.pm.ChangedPackages;
import android.content.pm.InstantAppInfo;
import android.content.pm.FeatureInfo;
import android.content.pm.IDexModuleRegisterCallback;
import android.content.pm.IPackageInstallObserver2;
import android.content.pm.IPackageInstaller;
import android.content.pm.IPackageDeleteObserver;
import android.content.pm.IPackageDeleteObserver2;
@@ -222,13 +221,6 @@ interface IPackageManager {
    ParceledListSlice queryInstrumentation(
            String targetPackage, int flags);

    /** @deprecated Use PackageInstaller instead */
    void installPackageAsUser(in String originPath,
            in IPackageInstallObserver2 observer,
            int flags,
            in String installerPackageName,
            int userId);

    void finishPackageInstall(int token, boolean didLaunch);

    void setInstallerPackageName(in String targetPackage, in String installerPackageName);
+25 −1
Original line number Diff line number Diff line
@@ -324,7 +324,14 @@ public class PackageInstaller {
     */
    public int createSession(@NonNull SessionParams params) throws IOException {
        try {
            return mInstaller.createSession(params, mInstallerPackageName, mUserId);
            final String installerPackage;
            if (params.installerPackageName == null) {
                installerPackage = mInstallerPackageName;
            } else {
                installerPackage = params.installerPackageName;
            }

            return mInstaller.createSession(params, installerPackage, mUserId);
        } catch (RuntimeException e) {
            ExceptionUtils.maybeUnwrapIOException(e);
            throw e;
@@ -1081,6 +1088,8 @@ public class PackageInstaller {
        public String volumeUuid;
        /** {@hide} */
        public String[] grantedRuntimePermissions;
        /** {@hide} */
        public String installerPackageName;

        /**
         * Construct parameters for a new package install session.
@@ -1109,6 +1118,7 @@ public class PackageInstaller {
            abiOverride = source.readString();
            volumeUuid = source.readString();
            grantedRuntimePermissions = source.readStringArray();
            installerPackageName = source.readString();
        }

        /**
@@ -1304,6 +1314,18 @@ public class PackageInstaller {
            }
        }

        /**
         * Set the installer package for the app.
         *
         * By default this is the app that created the {@link PackageInstaller} object.
         *
         * @param installerPackageName name of the installer package
         * {@hide}
         */
        public void setInstallerPackageName(String installerPackageName) {
            this.installerPackageName = installerPackageName;
        }

        /** {@hide} */
        public void dump(IndentingPrintWriter pw) {
            pw.printPair("mode", mode);
@@ -1319,6 +1341,7 @@ public class PackageInstaller {
            pw.printPair("abiOverride", abiOverride);
            pw.printPair("volumeUuid", volumeUuid);
            pw.printPair("grantedRuntimePermissions", grantedRuntimePermissions);
            pw.printPair("installerPackageName", installerPackageName);
            pw.println();
        }

@@ -1343,6 +1366,7 @@ public class PackageInstaller {
            dest.writeString(abiOverride);
            dest.writeString(volumeUuid);
            dest.writeStringArray(grantedRuntimePermissions);
            dest.writeString(installerPackageName);
        }

        public static final Parcelable.Creator<SessionParams>
+0 −12
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
@@ -4717,17 +4716,6 @@ public abstract class PackageManager {
        }
    }

    /**
     * @deprecated replaced by {@link PackageInstaller}
     * @hide
     */
    @Deprecated
    public abstract void installPackage(
            Uri packageURI,
            PackageInstallObserver observer,
            @InstallFlags int flags,
            String installerPackageName);

    /**
     * If there is already an application with the given package name installed
     * on the system for other users, also install it for the calling user.
+5 −7
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@ public class FullRestoreEngine extends RestoreEngine {
    // Task in charge of monitoring timeouts
    private final BackupRestoreTask mMonitorTask;

    private final RestoreInstallObserver mInstallObserver = new RestoreInstallObserver();
    private final RestoreDeleteObserver mDeleteObserver = new RestoreDeleteObserver();

    // Dedicated observer, if any
@@ -249,13 +248,12 @@ public class FullRestoreEngine extends RestoreEngine {
                                    Slog.d(TAG, "APK file; installing");
                                }
                                // Try to install the app.
                                String installerName = mPackageInstallers.get(pkg);
                                String installerPackageName = mPackageInstallers.get(pkg);
                                boolean isSuccessfullyInstalled = RestoreUtils.installApk(
                                        instream, mBackupManagerService.getPackageManager(),
                                        mInstallObserver, mDeleteObserver, mManifestSignatures,
                                        mPackagePolicies, info, installerName,
                                        bytesReadListener, mBackupManagerService.getDataDir()
                                                                                         );
                                        instream, mBackupManagerService.getContext(),
                                        mDeleteObserver, mManifestSignatures,
                                        mPackagePolicies, info, installerPackageName,
                                        bytesReadListener);
                                // good to go; promote to ACCEPT
                                mPackagePolicies.put(pkg, isSuccessfullyInstalled
                                        ? RestorePolicy.ACCEPT
Loading