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

Commit e8714795 authored by Song Chun Fan's avatar Song Chun Fan
Browse files

Revert "[4/N] APIs for verification policy and failure reasons"

This reverts commit d6c8e39f.

BUG: 374797861
Test: n/a
FLAG: android.content.pm.verification_service

Change-Id: Ifb693b04c34f8a4f87b95eba6ec0fd86daf30144
parent 88fffe82
Loading
Loading
Loading
Loading
+1 −12
Original line number Diff line number Diff line
@@ -4221,11 +4221,9 @@ package android.content.pm {
  }
  public class PackageInstaller {
    method @FlaggedApi("android.content.pm.verification_service") @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public final int getVerificationPolicy();
    method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull java.io.File, int) throws android.content.pm.PackageInstaller.PackageParsingException;
    method @FlaggedApi("android.content.pm.read_install_info") @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull android.os.ParcelFileDescriptor, @Nullable String, int) throws android.content.pm.PackageInstaller.PackageParsingException;
    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
    method @FlaggedApi("android.content.pm.verification_service") @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public final boolean setVerificationPolicy(int);
    field public static final String ACTION_CONFIRM_INSTALL = "android.content.pm.action.CONFIRM_INSTALL";
    field public static final String ACTION_CONFIRM_PRE_APPROVAL = "android.content.pm.action.CONFIRM_PRE_APPROVAL";
    field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
@@ -4236,20 +4234,12 @@ package android.content.pm {
    field @FlaggedApi("android.content.pm.archiving") public static final String EXTRA_DELETE_FLAGS = "android.content.pm.extra.DELETE_FLAGS";
    field public static final String EXTRA_LEGACY_STATUS = "android.content.pm.extra.LEGACY_STATUS";
    field @Deprecated public static final String EXTRA_RESOLVED_BASE_PATH = "android.content.pm.extra.RESOLVED_BASE_PATH";
    field @FlaggedApi("android.content.pm.verification_service") public static final String EXTRA_VERIFICATION_FAILURE_REASON = "android.content.pm.extra.VERIFICATION_FAILURE_REASON";
    field public static final int LOCATION_DATA_APP = 0; // 0x0
    field public static final int LOCATION_MEDIA_DATA = 2; // 0x2
    field public static final int LOCATION_MEDIA_OBB = 1; // 0x1
    field public static final int REASON_CONFIRM_PACKAGE_CHANGE = 0; // 0x0
    field public static final int REASON_OWNERSHIP_CHANGED = 1; // 0x1
    field public static final int REASON_REMIND_OWNERSHIP = 2; // 0x2
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_FAILED_REASON_NETWORK_UNAVAILABLE = 1; // 0x1
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_FAILED_REASON_PACKAGE_BLOCKED = 2; // 0x2
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_FAILED_REASON_UNKNOWN = 0; // 0x0
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_POLICY_BLOCK_FAIL_CLOSED = 3; // 0x3
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_POLICY_BLOCK_FAIL_OPEN = 1; // 0x1
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_POLICY_BLOCK_FAIL_WARN = 2; // 0x2
    field @FlaggedApi("android.content.pm.verification_service") public static final int VERIFICATION_POLICY_NONE = 0; // 0x0
  }
  public static class PackageInstaller.InstallInfo {
@@ -4714,13 +4704,12 @@ package android.content.pm.verify.pkg {
    method @NonNull public android.content.pm.SigningInfo getSigningInfo();
    method @NonNull public android.net.Uri getStagedPackageUri();
    method @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public long getTimeoutTime();
    method public int getVerificationPolicy();
    method @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public void reportVerificationComplete(@NonNull android.content.pm.verify.pkg.VerificationStatus);
    method @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public void reportVerificationComplete(@NonNull android.content.pm.verify.pkg.VerificationStatus, @NonNull android.os.PersistableBundle);
    method @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public void reportVerificationIncomplete(int);
    method @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT) public boolean setVerificationPolicy(int);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.verify.pkg.VerificationSession> CREATOR;
    field public static final int VERIFICATION_INCOMPLETE_NETWORK_LIMITED = 2; // 0x2
    field public static final int VERIFICATION_INCOMPLETE_NETWORK_UNAVAILABLE = 1; // 0x1
    field public static final int VERIFICATION_INCOMPLETE_UNKNOWN = 0; // 0x0
  }
+0 −6
Original line number Diff line number Diff line
@@ -93,10 +93,4 @@ interface IPackageInstaller {

    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES,android.Manifest.permission.REQUEST_INSTALL_PACKAGES})")
    void reportUnarchivalStatus(int unarchiveId, int status, long requiredStorageBytes, in PendingIntent userActionIntent, in UserHandle userHandle);

    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
    int getVerificationPolicy();

    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
    boolean setVerificationPolicy(int policy);
}
+0 −135
Original line number Diff line number Diff line
@@ -62,8 +62,6 @@ import android.content.pm.parsing.PackageLite;
import android.content.pm.parsing.result.ParseResult;
import android.content.pm.parsing.result.ParseTypeImpl;
import android.content.pm.verify.domain.DomainSet;
import android.content.pm.verify.pkg.VerificationSession;
import android.content.pm.verify.pkg.VerificationStatus;
import android.graphics.Bitmap;
import android.icu.util.ULocale;
import android.net.Uri;
@@ -419,21 +417,6 @@ public class PackageInstaller {
     */
    public static final String EXTRA_WARNINGS = "android.content.pm.extra.WARNINGS";

    /**
     * When verification is blocked as part of the installation, additional reason for the block
     * will be provided to the installer with a {@link VerificationFailedReason} as part of the
     * installation result returned via the {@link IntentSender} in
     * {@link Session#commit(IntentSender)}. This extra is provided only when the installation has
     * failed. Installers can use this extra to check if the installation failure was caused by a
     * verification failure.
     *
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final String EXTRA_VERIFICATION_FAILURE_REASON =
            "android.content.pm.extra.VERIFICATION_FAILURE_REASON";

    /**
     * Streaming installation pending.
     * Caller should make sure DataLoader is able to prepare image and reinitiate the operation.
@@ -777,90 +760,6 @@ public class PackageInstaller {
    @Retention(RetentionPolicy.SOURCE)
    public @interface UnarchivalStatus {}

    /**
     * Verification failed because of unknown reasons, such as when the verifier times out or cannot
     * be connected. It can also corresponds to the status of
     * {@link VerificationSession#VERIFICATION_INCOMPLETE_UNKNOWN} reported by the verifier via
     * {@link VerificationSession#reportVerificationIncomplete(int)}.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_FAILED_REASON_UNKNOWN = 0;

    /**
     * Verification failed because the network is unavailable. This corresponds to the status of
     * {@link VerificationSession#VERIFICATION_INCOMPLETE_NETWORK_UNAVAILABLE} reported by the
     * verifier via {@link VerificationSession#reportVerificationIncomplete(int)}.
     *
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_FAILED_REASON_NETWORK_UNAVAILABLE = 1;

    /**
     * Verification failed because the package is blocked, as reported by the verifier via
     * {@link VerificationSession#reportVerificationComplete(VerificationStatus)} or
     * {@link VerificationSession#reportVerificationComplete(VerificationStatus, PersistableBundle)}
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_FAILED_REASON_PACKAGE_BLOCKED = 2;

    /**
     * @hide
     */
    @IntDef(value = {
            VERIFICATION_FAILED_REASON_UNKNOWN,
            VERIFICATION_FAILED_REASON_NETWORK_UNAVAILABLE,
            VERIFICATION_FAILED_REASON_PACKAGE_BLOCKED,
    })
    public @interface VerificationFailedReason {
    }

    /**
     * Do not block installs, regardless of verification status.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_POLICY_NONE = 0; // platform default
    /**
     * Only block installations on {@link #VERIFICATION_FAILED_REASON_PACKAGE_BLOCKED}.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_POLICY_BLOCK_FAIL_OPEN = 1;
    /**
     * Only block installations on {@link #VERIFICATION_FAILED_REASON_PACKAGE_BLOCKED} and ask the
     * user if they'd like to install anyway when the verification is blocked for other reason.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_POLICY_BLOCK_FAIL_WARN = 2;
    /**
     * Block installations whose verification status is blocked for any reason.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    public static final int VERIFICATION_POLICY_BLOCK_FAIL_CLOSED = 3;
    /**
     * @hide
     */
    @IntDef(value = {
            VERIFICATION_POLICY_NONE,
            VERIFICATION_POLICY_BLOCK_FAIL_OPEN,
            VERIFICATION_POLICY_BLOCK_FAIL_WARN,
            VERIFICATION_POLICY_BLOCK_FAIL_CLOSED,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface VerificationPolicy {
    }

    /** Default set of checksums - includes all available checksums.
     * @see Session#requestChecksums  */
@@ -1603,40 +1502,6 @@ public class PackageInstaller {
        }
    }

    /**
     * Return the current verification enforcement policy. This may only be called by the
     * package currently set by the system as the verifier agent.
     * @hide
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    public final @VerificationPolicy int getVerificationPolicy() {
        try {
            return mInstaller.getVerificationPolicy();
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Set the current verification enforcement policy which will be applied to all the future
     * installation sessions. This may only be called by the package currently set by the system as
     * the verifier agent.
     * @hide
     * @return whether the new policy was successfully set.
     */
    @FlaggedApi(Flags.FLAG_VERIFICATION_SERVICE)
    @SystemApi
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    public final boolean setVerificationPolicy(@VerificationPolicy int policy) {
        try {
            return mInstaller.setVerificationPolicy(policy);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * An installation that is being actively staged. For an install to succeed,
     * all existing and new packages must have identical package names, version
+0 −2
Original line number Diff line number Diff line
@@ -25,6 +25,4 @@ interface IVerificationSessionInterface {
    long getTimeoutTime(int verificationId);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
    long extendTimeRemaining(int verificationId, long additionalMs);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)")
    boolean setVerificationPolicy(int verificationId, int policy);
}
 No newline at end of file
+6 −48
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.pm.Flags;
import android.content.pm.PackageInstaller;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.SigningInfo;
import android.net.Uri;
@@ -53,12 +52,17 @@ public final class VerificationSession implements Parcelable {
     * The verification cannot be completed because the network is unavailable.
     */
    public static final int VERIFICATION_INCOMPLETE_NETWORK_UNAVAILABLE = 1;
    /**
     * The verification cannot be completed because the network is limited.
     */
    public static final int VERIFICATION_INCOMPLETE_NETWORK_LIMITED = 2;

    /**
     * @hide
     */
    @IntDef(prefix = {"VERIFICATION_INCOMPLETE_"}, value = {
            VERIFICATION_INCOMPLETE_NETWORK_UNAVAILABLE,
            VERIFICATION_INCOMPLETE_NETWORK_LIMITED,
            VERIFICATION_INCOMPLETE_UNKNOWN,
    })
    @Retention(RetentionPolicy.SOURCE)
@@ -81,15 +85,6 @@ public final class VerificationSession implements Parcelable {
    private final IVerificationSessionInterface mSession;
    @NonNull
    private final IVerificationSessionCallback mCallback;
    /**
     * The current policy that is active for the session. It might not be
     * the same as the original policy that was initially assigned for this verification session,
     * because the active policy can be overridden by {@link #setVerificationPolicy(int)}.
     * <p>To improve the latency, store the original policy value and any changes made to it,
     * so that {@link #getVerificationPolicy()} does not need to make a binder call to retrieve the
     * currently active policy.</p>
     */
    private volatile @PackageInstaller.VerificationPolicy int mVerificationPolicy;

    /**
     * Constructor used by the system to describe the details of a verification session.
@@ -99,7 +94,6 @@ public final class VerificationSession implements Parcelable {
            @NonNull Uri stagedPackageUri, @NonNull SigningInfo signingInfo,
            @NonNull List<SharedLibraryInfo> declaredLibraries,
            @NonNull PersistableBundle extensionParams,
            @PackageInstaller.VerificationPolicy int defaultPolicy,
            @NonNull IVerificationSessionInterface session,
            @NonNull IVerificationSessionCallback callback) {
        mId = id;
@@ -109,7 +103,6 @@ public final class VerificationSession implements Parcelable {
        mSigningInfo = signingInfo;
        mDeclaredLibraries = declaredLibraries;
        mExtensionParams = extensionParams;
        mVerificationPolicy = defaultPolicy;
        mSession = session;
        mCallback = callback;
    }
@@ -151,7 +144,7 @@ public final class VerificationSession implements Parcelable {

    /**
     * Returns a mapping of any shared libraries declared in the manifest
     * to the {@link SharedLibraryInfo.Type} that is declared. This will be an empty
     * to the {@link SharedLibraryInfo#Type} that is declared. This will be an empty
     * map if no shared libraries are declared by the package.
     */
    @NonNull
@@ -180,39 +173,6 @@ public final class VerificationSession implements Parcelable {
        }
    }

    /**
     * Return the current policy that is active for this session.
     * <p>If the policy for this session has been changed by {@link #setVerificationPolicy},
     * the return value of this method is the current policy that is active for this session.
     * Otherwise, the return value is the same as the initial policy that was assigned to the
     * session when it was first created.</p>
     */
    public @PackageInstaller.VerificationPolicy int getVerificationPolicy() {
        return mVerificationPolicy;
    }

    /**
     * Override the verification policy for this session.
     * @return True if the override was successful, False otherwise.
     */
    @RequiresPermission(android.Manifest.permission.VERIFICATION_AGENT)
    public boolean setVerificationPolicy(@PackageInstaller.VerificationPolicy int policy) {
        if (mVerificationPolicy == policy) {
            // No effective policy change
            return true;
        }
        try {
            if (mSession.setVerificationPolicy(mId, policy)) {
                mVerificationPolicy = policy;
                return true;
            } else {
                return false;
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Extend the timeout for this session by the provided additionalMs to
     * fetch relevant information over the network or wait for the network.
@@ -279,7 +239,6 @@ public final class VerificationSession implements Parcelable {
        mSigningInfo = SigningInfo.CREATOR.createFromParcel(in);
        mDeclaredLibraries = in.createTypedArrayList(SharedLibraryInfo.CREATOR);
        mExtensionParams = in.readPersistableBundle(getClass().getClassLoader());
        mVerificationPolicy = in.readInt();
        mSession = IVerificationSessionInterface.Stub.asInterface(in.readStrongBinder());
        mCallback = IVerificationSessionCallback.Stub.asInterface(in.readStrongBinder());
    }
@@ -298,7 +257,6 @@ public final class VerificationSession implements Parcelable {
        mSigningInfo.writeToParcel(dest, flags);
        dest.writeTypedList(mDeclaredLibraries);
        dest.writePersistableBundle(mExtensionParams);
        dest.writeInt(mVerificationPolicy);
        dest.writeStrongBinder(mSession.asBinder());
        dest.writeStrongBinder(mCallback.asBinder());
    }
Loading