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

Commit d0bedecb authored by Harshit Mahajan's avatar Harshit Mahajan
Browse files

Fix intent used in PendingIntents

Need to have unique action name for each RollbackId to receive correct
callbacks from rollbackCommit API.
Need to set flag RECEIVER_REGISTERED_ONLY to receive broadcast before
system is ready

Test: verified that unique broadcast is received for each rollback
Bug: 289203818
Flag: android.crashrecovery.flags.refactor_crashrecovery
Change-Id: I0c8ec52aa02044cd5c4381e370ce807565a34899
parent 223c40c1
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -81,7 +81,7 @@ import java.util.function.Consumer;
public final class RollbackPackageHealthObserver implements PackageHealthObserver {
    private static final String TAG = "RollbackPackageHealthObserver";
    private static final String NAME = "rollback-observer";
    private static final String ACTION_NAME = RollbackPackageHealthObserver.class.getName();
    private static final String CLASS_NAME = RollbackPackageHealthObserver.class.getName();

    private static final int PERSISTENT_MASK = ApplicationInfo.FLAG_PERSISTENT
            | ApplicationInfo.FLAG_SYSTEM;
@@ -610,14 +610,16 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
                }
            };

            String intentActionName = CLASS_NAME + rollback.getRollbackId();
            // Register the BroadcastReceiver
            mContext.registerReceiver(rollbackReceiver,
                    new IntentFilter(ACTION_NAME),
                    new IntentFilter(intentActionName),
                    Context.RECEIVER_NOT_EXPORTED);

            Intent intentReceiver = new Intent(ACTION_NAME);
            Intent intentReceiver = new Intent(intentActionName);
            intentReceiver.putExtra("rollbackId", rollback.getRollbackId());
            intentReceiver.setPackage(mContext.getPackageName());
            intentReceiver.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);

            PendingIntent rollbackPendingIntent = PendingIntent.getBroadcast(mContext,
                    rollback.getRollbackId(),