diff options
| author | 2022-09-26 20:11:44 +0000 | |
|---|---|---|
| committer | 2022-09-26 20:11:44 +0000 | |
| commit | 54084b90648fff334c2b9db3f3106ddb15bf92be (patch) | |
| tree | 58aae545fea3aec4436c41bd737b42f56106bcb8 | |
| parent | 88f99f057ece074ea64bd11bb1b2f8a943a16c38 (diff) | |
| parent | 3e238386a8fb342876b16623b26cc0693565fc04 (diff) | |
Merge "Fix a lot of OVERLAY_CHANGED broadcasts" into tm-qpr-dev am: 3e238386a8
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20016124
Change-Id: I4348747d74b85758a7b0d971ac999e7e85fdf3ab
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e9d54268560a..b7b332621e7f 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -6546,7 +6546,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService if (dependentState == null) { continue; } - if (!Objects.equals(dependentState.getUserStateOrDefault(userId) + if (canSetOverlayPaths(dependentState.getUserStateOrDefault(userId) .getSharedLibraryOverlayPaths() .get(libName), newOverlayPaths)) { String dependentPackageName = dependent.getPackageName(); @@ -6562,7 +6562,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService } } - outUpdatedPackageNames.add(targetPackageName); + if (canSetOverlayPaths(packageState.getUserStateOrDefault(userId).getOverlayPaths(), + newOverlayPaths)) { + outUpdatedPackageNames.add(targetPackageName); + } commitPackageStateMutation(null, mutator -> { mutator.forPackage(targetPackageName) @@ -6593,6 +6596,17 @@ public class PackageManagerService implements PackageSender, TestUtilityService return true; } + private boolean canSetOverlayPaths(OverlayPaths origPaths, OverlayPaths newPaths) { + if (Objects.equals(origPaths, newPaths)) { + return false; + } + if ((origPaths == null && newPaths.isEmpty()) + || (newPaths == null && origPaths.isEmpty())) { + return false; + } + return true; + } + private void maybeUpdateSystemOverlays(String targetPackageName, OverlayPaths newOverlayPaths) { if (!mResolverReplaced) { if (targetPackageName.equals("android")) { |