From 41a18d334049d2c9d68c6e958b8c0802bf86aa40 Mon Sep 17 00:00:00 2001 From: Oli Lan Date: Mon, 14 Dec 2020 19:14:44 +0000 Subject: [PATCH] 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 --- .../core/java/com/android/server/rollback/Rollback.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/rollback/Rollback.java b/services/core/java/com/android/server/rollback/Rollback.java index d9b67024018b2..e12991a220c96 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.ArrayUtils; 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 @@ class Rollback { PackageInstaller.Session parentSession = packageInstaller.openSession( parentSessionId); + List 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 @@ class Rollback { parentSession.addChildSessionId(sessionId); } + // Clear flags. + RescueParty.resetDeviceConfigForPackages(packageNames); + Consumer onResult = result -> { mHandler.post(() -> { assertInWorkerThread();