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

Commit b05c9b15 authored by Winson Chiu's avatar Winson Chiu Committed by Android (Google) Code Review
Browse files

Merge "Fix a lot of OVERLAY_CHANGED broadcasts"

parents 5dcb70d8 a3adecc4
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -6539,7 +6539,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();
@@ -6563,8 +6563,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                    }
                }

                if (canSetOverlayPaths(packageState.getUserStateOrDefault(userId).getOverlayPaths(),
                        newOverlayPaths)) {
                    outUpdatedPackageNames.add(targetPackageName);
                }
            }

            commitPackageStateMutation(null, mutator -> {
                for (int i = 0; i < numberOfPendingChanges; i++) {
@@ -6614,6 +6617,17 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        invalidatePackageInfoCache();
    }

    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")) {