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

Commit 65ffdba7 authored by Todd Kennedy's avatar Todd Kennedy Committed by Android (Google) Code Review
Browse files

Merge "Track both framework and app overlays per package" into oc-dev

parents f0bdfbc5 560830c9
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -714,11 +714,17 @@ public final class OverlayManagerService extends SystemService {

        final Map<String, List<String>> pendingChanges = new ArrayMap<>(targetPackageNames.size());
        synchronized (mLock) {
            final List<String> frameworkOverlays =
                mImpl.getEnabledOverlayPackageNames("android", userId);
            final int N = targetPackageNames.size();
            for (int i = 0; i < N; i++) {
                final String targetPackageName = targetPackageNames.get(i);
                pendingChanges.put(targetPackageName,
                        mImpl.getEnabledOverlayPackageNames(targetPackageName, userId));
                List<String> list = new ArrayList<>();
                if (!"android".equals(targetPackageName)) {
                    list.addAll(frameworkOverlays);
                }
                list.addAll(mImpl.getEnabledOverlayPackageNames(targetPackageName, userId));
                pendingChanges.put(targetPackageName, list);
            }
        }

+10 −3
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ final class OverlayManagerServiceImpl {

        final PackageInfo targetPackage = mPackageManager.getPackageInfo(packageName, userId);
        updateAllOverlaysForTarget(packageName, userId, targetPackage);
        mListener.onOverlaysChanged(packageName, userId);
    }

    void onTargetPackageChanged(@NonNull final String packageName, final int userId) {
@@ -178,7 +179,9 @@ final class OverlayManagerServiceImpl {
        }

        final PackageInfo targetPackage = mPackageManager.getPackageInfo(packageName, userId);
        updateAllOverlaysForTarget(packageName, userId, targetPackage);
        if (updateAllOverlaysForTarget(packageName, userId, targetPackage)) {
            mListener.onOverlaysChanged(packageName, userId);
        }
    }

    void onTargetPackageUpgrading(@NonNull final String packageName, final int userId) {
@@ -186,7 +189,9 @@ final class OverlayManagerServiceImpl {
            Slog.d(TAG, "onTargetPackageUpgrading packageName=" + packageName + " userId=" + userId);
        }

        updateAllOverlaysForTarget(packageName, userId, null);
        if (updateAllOverlaysForTarget(packageName, userId, null)) {
            mListener.onOverlaysChanged(packageName, userId);
        }
    }

    void onTargetPackageUpgraded(@NonNull final String packageName, final int userId) {
@@ -195,7 +200,9 @@ final class OverlayManagerServiceImpl {
        }

        final PackageInfo targetPackage = mPackageManager.getPackageInfo(packageName, userId);
        updateAllOverlaysForTarget(packageName, userId, targetPackage);
        if (updateAllOverlaysForTarget(packageName, userId, targetPackage)) {
            mListener.onOverlaysChanged(packageName, userId);
        }
    }

    void onTargetPackageRemoved(@NonNull final String packageName, final int userId) {
+2 −10
Original line number Diff line number Diff line
@@ -21587,8 +21587,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
        public static final int DUMP_FROZEN = 1 << 19;
        public static final int DUMP_DEXOPT = 1 << 20;
        public static final int DUMP_COMPILER_STATS = 1 << 21;
        public static final int DUMP_ENABLED_OVERLAYS = 1 << 22;
        public static final int DUMP_CHANGES = 1 << 23;
        public static final int DUMP_CHANGES = 1 << 22;
        public static final int OPTION_SHOW_FILTERS = 1 << 0;
@@ -21832,8 +21831,6 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
                dumpState.setDump(DumpState.DUMP_DEXOPT);
            } else if ("compiler-stats".equals(cmd)) {
                dumpState.setDump(DumpState.DUMP_COMPILER_STATS);
            } else if ("enabled-overlays".equals(cmd)) {
                dumpState.setDump(DumpState.DUMP_ENABLED_OVERLAYS);
            } else if ("changes".equals(cmd)) {
                dumpState.setDump(DumpState.DUMP_CHANGES);
            } else if ("write".equals(cmd)) {
@@ -24610,12 +24607,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
                }
                final PackageSetting ps = mSettings.mPackages.get(targetPackageName);
                String[] frameworkOverlayPaths = null;
                if (!"android".equals(targetPackageName)) {
                    frameworkOverlayPaths =
                            mSettings.mPackages.get("android").getOverlayPaths(userId);
                }
                ps.setOverlayPaths(overlayPaths, frameworkOverlayPaths, userId);
                ps.setOverlayPaths(overlayPaths, userId);
                return true;
            }
        }
+3 −15
Original line number Diff line number Diff line
@@ -330,21 +330,9 @@ abstract class PackageSettingBase extends SettingBase {
        modifyUserState(userId).installReason = installReason;
    }

    void setOverlayPaths(List<String> overlayPaths, String[] frameworkOverlayPaths, int userId) {
        if (overlayPaths == null && frameworkOverlayPaths == null) {
            modifyUserState(userId).overlayPaths = null;
            return;
        }
        final List<String> paths;
        if (frameworkOverlayPaths == null) {
            paths = overlayPaths;
        } else {
            paths = Lists.newArrayList(frameworkOverlayPaths);
            if (overlayPaths != null) {
                paths.addAll(overlayPaths);
            }
        }
        modifyUserState(userId).overlayPaths = paths.toArray(new String[paths.size()]);
    void setOverlayPaths(List<String> overlayPaths, int userId) {
        modifyUserState(userId).overlayPaths = overlayPaths == null ? null :
            overlayPaths.toArray(new String[overlayPaths.size()]);
    }

    String[] getOverlayPaths(int userId) {
+2 −2
Original line number Diff line number Diff line
@@ -4861,9 +4861,9 @@ final class Settings {

            String[] overlayPaths = ps.getOverlayPaths(user.id);
            if (overlayPaths != null && overlayPaths.length > 0) {
                pw.println("Overlay paths:");
                pw.print(prefix); pw.println("  overlay paths:");
                for (String path : overlayPaths) {
                    pw.println(path);
                    pw.print(prefix); pw.print("    "); pw.println(path);
                }
            }