Loading core/java/android/content/pm/PackageManager.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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, Loading Loading @@ -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; } } } } Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } Loading services/core/java/com/android/server/pm/PackageManagerService.java +19 −0 Original line number Original line Diff line number Diff line Loading @@ -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. * * Loading Loading @@ -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. Loading Loading
core/java/android/content/pm/PackageManager.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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, Loading Loading @@ -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; } } } } Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +19 −0 Original line number Original line Diff line number Diff line Loading @@ -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. * * Loading Loading @@ -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. Loading