From 5aa617a3daf6d59f545a5c79079925ca72595472 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 19 May 2020 12:13:43 -0700 Subject: [PATCH] Invalidate PackageInfo cache when overlays change When overlays for a target package change, invalidate PackageInfo caches across all processes. Overlay paths are not persisted in PMS's settings, so no need to commit to package settings. Bug: 156743293 Test: presubmit Change-Id: I193544abe29cff07dda76a75376961d0d51d9c95 --- .../android/overlaytest/remounted/PackagedUpgradedTest.java | 3 +++ .../java/com/android/server/pm/PackageManagerService.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java index 70e342370545c..a4656403b03fd 100644 --- a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java @@ -47,6 +47,7 @@ public class PackagedUpgradedTest extends OverlayRemountedTestBase { @Test public void testTargetRelocated() throws Exception { final String targetOverlaid = resourceName(TARGET_PACKAGE, "bool", "target_overlaid"); + final String targetReference = resourceName(TARGET_PACKAGE, "bool", "target_reference"); final String originalPath = "/product/app/OverlayTarget.apk"; mPreparer.pushResourceFile(TARGET_APK, originalPath) @@ -54,6 +55,7 @@ public class PackagedUpgradedTest extends OverlayRemountedTestBase { .installResourceApk(OVERLAY_APK, OVERLAY_PACKAGE) .setOverlayEnabled(OVERLAY_PACKAGE, true); + assertResource(targetReference, "@" + 0x7f010000 + " -> true"); assertResource(targetOverlaid, "true"); mPreparer.remount(); @@ -61,6 +63,7 @@ public class PackagedUpgradedTest extends OverlayRemountedTestBase { mPreparer.pushResourceFile(TARGET_UPGRADE_APK, "/product/app/OverlayTarget2.apk") .reboot(); + assertResource(targetReference, "@" + 0x7f0100ff + " -> true"); assertResource(targetOverlaid, "true"); } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 3e587bf01521f..69f286ba87531 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -24508,9 +24508,10 @@ public class PackageManagerService extends IPackageManager.Stub if (updatedPackageNames != null) { outUpdatedPackageNames.addAll(updatedPackageNames); } - - return true; } + + PackageManager.invalidatePackageInfoCache(); + return true; } @Override