Allow ENABLE_ROLLBACK broadcast to be sent before boot complete.
This is needed in the case when we commit the apk session for a staged
session post reboot. The rollback manager registers its receiver early
enough that it will not miss the broadcast.
Bug: 112431924
Test: adb install-multi-package --staged --enable-rollback \
com.android.tests.rollback.testapex.RollbackTestApexV2.apex \
RollbackTestAppAv2.apk ; adb reboot
Change-Id: If070633d761ec673f1dd2753cbb359ca31e53b9c
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index e18da7f..32dc988 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -14613,6 +14613,13 @@
PACKAGE_MIME_TYPE);
enableRollbackIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ // Allow the broadcast to be sent before boot complete.
+ // This is needed when committing the apk part of a staged
+ // session in early boot. The rollback manager registers
+ // its receiver early enough during the boot process that
+ // it will not miss the broadcast.
+ enableRollbackIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+
mContext.sendOrderedBroadcastAsUser(enableRollbackIntent, getUser(),
android.Manifest.permission.PACKAGE_ROLLBACK_AGENT,
new BroadcastReceiver() {