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

Commit c97fc0ca authored by Jackal Guo's avatar Jackal Guo Committed by Android (Google) Code Review
Browse files

Merge "Add a switch for pre-approval request"

parents 42c25c53 1d1eb8e6
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -2205,6 +2205,13 @@ public abstract class PackageManager {
     */
     */
    public static final int INSTALL_ACTIVATION_FAILED = -128;
    public static final int INSTALL_ACTIVATION_FAILED = -128;


    /**
     * Installation failed return code: requesting user pre-approval is currently unavailable.
     *
     * @hide
     */
    public static final int INSTALL_FAILED_PRE_APPROVAL_NOT_AVAILABLE = -129;

    /** @hide */
    /** @hide */
    @IntDef(flag = true, prefix = { "DELETE_" }, value = {
    @IntDef(flag = true, prefix = { "DELETE_" }, value = {
            DELETE_KEEP_DATA,
            DELETE_KEEP_DATA,
@@ -9643,6 +9650,7 @@ public abstract class PackageManager {
            case INSTALL_FAILED_NO_MATCHING_ABIS: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_NO_MATCHING_ABIS: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED;
            case INSTALL_FAILED_ABORTED: return PackageInstaller.STATUS_FAILURE_ABORTED;
            case INSTALL_FAILED_MISSING_SPLIT: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_MISSING_SPLIT: return PackageInstaller.STATUS_FAILURE_INCOMPATIBLE;
            case INSTALL_FAILED_PRE_APPROVAL_NOT_AVAILABLE: return PackageInstaller.STATUS_FAILURE_BLOCKED;
            default: return PackageInstaller.STATUS_FAILURE;
            default: return PackageInstaller.STATUS_FAILURE;
        }
        }
    }
    }
+8 −0
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ import static android.content.pm.PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_APK;
import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_APK;
import static android.content.pm.PackageManager.INSTALL_FAILED_MEDIA_UNAVAILABLE;
import static android.content.pm.PackageManager.INSTALL_FAILED_MEDIA_UNAVAILABLE;
import static android.content.pm.PackageManager.INSTALL_FAILED_MISSING_SPLIT;
import static android.content.pm.PackageManager.INSTALL_FAILED_MISSING_SPLIT;
import static android.content.pm.PackageManager.INSTALL_FAILED_PRE_APPROVAL_NOT_AVAILABLE;
import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES;
import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES;
import static android.content.pm.PackageManager.INSTALL_STAGED;
import static android.content.pm.PackageManager.INSTALL_STAGED;
import static android.content.pm.PackageManager.INSTALL_SUCCEEDED;
import static android.content.pm.PackageManager.INSTALL_SUCCEEDED;
@@ -4243,6 +4244,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
    public void requestUserPreapproval(@NonNull PreapprovalDetails details,
    public void requestUserPreapproval(@NonNull PreapprovalDetails details,
            @NonNull IntentSender statusReceiver) {
            @NonNull IntentSender statusReceiver) {
        validatePreapprovalRequest(details, statusReceiver);
        validatePreapprovalRequest(details, statusReceiver);

        if (!mPm.isPreapprovalRequestAvailable()) {
            sendUpdateToRemoteStatusReceiver(INSTALL_FAILED_PRE_APPROVAL_NOT_AVAILABLE,
                    "Request user pre-approval is currently not available.", null /* extras */);
            return;
        }

        dispatchPreapprovalRequest();
        dispatchPreapprovalRequest();
    }
    }


+19 −0
Original line number Original line Diff line number Diff line
@@ -494,6 +494,15 @@ public class PackageManagerService implements PackageSender, TestUtilityService
     */
     */
    private static final String PROPERTY_KNOWN_DIGESTERS_LIST = "known_digesters_list";
    private static final String PROPERTY_KNOWN_DIGESTERS_LIST = "known_digesters_list";


    /**
     * Whether of not requesting the approval before committing sessions is available.
     *
     * Flag type: {@code boolean}
     * Namespace: NAMESPACE_PACKAGE_MANAGER_SERVICE
     */
    private static final String PROPERTY_IS_PRE_APPROVAL_REQUEST_AVAILABLE =
            "is_preapproval_available";

    /**
    /**
     * The default response for package verification timeout.
     * The default response for package verification timeout.
     *
     *
@@ -6894,6 +6903,16 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }
        }
    }
    }


    static boolean isPreapprovalRequestAvailable() {
        final long token = Binder.clearCallingIdentity();
        try {
            return DeviceConfig.getBoolean(NAMESPACE_PACKAGE_MANAGER_SERVICE,
                    PROPERTY_IS_PRE_APPROVAL_REQUEST_AVAILABLE, true /* defaultValue */);
        } finally {
            Binder.restoreCallingIdentity(token);
        }
    }

    /**
    /**
     * Returns the array containing per-uid timeout configuration.
     * Returns the array containing per-uid timeout configuration.
     * This is derived from DeviceConfig flags.
     * This is derived from DeviceConfig flags.