Clear flags when a rollback is committed.

This adds a call into RescueParty to clear flags relating to all
packages included in a rollback. This is done before the commit occurs
to ensure that the flags are cleared before the rolled-back version of
the package starts up.

Bug: 173120414
Test: atest RollbackManagerTest
Change-Id: I155cba0afc8a77517baa331b801c14ed11c50693
diff --git a/services/core/java/com/android/server/rollback/Rollback.java b/services/core/java/com/android/server/rollback/Rollback.java
index d9b6702..e12991a 100644
--- a/services/core/java/com/android/server/rollback/Rollback.java
+++ b/services/core/java/com/android/server/rollback/Rollback.java
@@ -51,6 +51,7 @@
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.Preconditions;
 import com.android.server.LocalServices;
+import com.android.server.RescueParty;
 import com.android.server.pm.parsing.pkg.AndroidPackage;
 
 import java.io.File;
@@ -540,7 +541,10 @@
             PackageInstaller.Session parentSession = packageInstaller.openSession(
                     parentSessionId);
 
+            List<String> packageNames = new ArrayList<>(info.getPackages().size());
             for (PackageRollbackInfo pkgRollbackInfo : info.getPackages()) {
+                packageNames.add(pkgRollbackInfo.getPackageName());
+
                 if (pkgRollbackInfo.isApkInApex()) {
                     // No need to issue a downgrade install request for apk-in-apex. It will
                     // be rolled back when its parent apex is downgraded.
@@ -601,6 +605,9 @@
                 parentSession.addChildSessionId(sessionId);
             }
 
+            // Clear flags.
+            RescueParty.resetDeviceConfigForPackages(packageNames);
+
             Consumer<Intent> onResult = result -> {
                 mHandler.post(() -> {
                     assertInWorkerThread();