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

Commit 22e048ba authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "OMS: fix broken 'overlay list' output"

parents 9b17f328 5dba5f93
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1481,13 +1481,13 @@ public final class OverlayManagerService extends SystemService {
                    new ArrayMap<>(targetPackageNames.size());
            synchronized (mLock) {
                final OverlayPaths frameworkOverlays =
                        mImpl.getEnabledOverlayPaths("android", userId);
                        mImpl.getEnabledOverlayPaths("android", userId, false);
                for (final String targetPackageName : targetPackageNames) {
                    final OverlayPaths.Builder list = new OverlayPaths.Builder();
                    if (!"android".equals(targetPackageName)) {
                    list.addAll(frameworkOverlays);
                    if (!"android".equals(targetPackageName)) {
                        list.addAll(mImpl.getEnabledOverlayPaths(targetPackageName, userId, true));
                    }
                    list.addAll(mImpl.getEnabledOverlayPaths(targetPackageName, userId));
                    pendingChanges.put(targetPackageName, list.build());
                }
            }
+4 −1
Original line number Diff line number Diff line
@@ -744,7 +744,7 @@ final class OverlayManagerServiceImpl {
    }

    OverlayPaths getEnabledOverlayPaths(@NonNull final String targetPackageName,
            final int userId) {
            final int userId, boolean includeImmutableOverlays) {
        final List<OverlayInfo> overlays = mSettings.getOverlaysForTarget(targetPackageName,
                userId);
        final OverlayPaths.Builder paths = new OverlayPaths.Builder();
@@ -754,6 +754,9 @@ final class OverlayManagerServiceImpl {
            if (!oi.isEnabled()) {
                continue;
            }
            if (!includeImmutableOverlays && !oi.isMutable) {
                continue;
            }
            if (oi.isFabricated()) {
                paths.addNonApkPath(oi.baseCodePath);
            } else {
+0 −10
Original line number Diff line number Diff line
@@ -178,18 +178,12 @@ final class OverlayManagerSettings {

    List<OverlayInfo> getOverlaysForTarget(@NonNull final String targetPackageName,
            final int userId) {
        // Immutable RROs targeting "android" are loaded from AssetManager, and so they should be
        // ignored in OverlayManagerService.
        final List<SettingsItem> items = selectWhereTarget(targetPackageName, userId);
        items.removeIf(OverlayManagerSettings::isImmutableFrameworkOverlay);
        return CollectionUtils.map(items, SettingsItem::getOverlayInfo);
    }

    ArrayMap<String, List<OverlayInfo>> getOverlaysForUser(final int userId) {
        // Immutable RROs targeting "android" are loaded from AssetManager, and so they should be
        // ignored in OverlayManagerService.
        final List<SettingsItem> items = selectWhereUser(userId);
        items.removeIf(OverlayManagerSettings::isImmutableFrameworkOverlay);

        final ArrayMap<String, List<OverlayInfo>> targetInfos = new ArrayMap<>();
        for (int i = 0, n = items.size(); i < n; i++) {
@@ -234,10 +228,6 @@ final class OverlayManagerSettings {
        return mItems.stream().mapToInt(SettingsItem::getUserId).distinct().toArray();
    }

    private static boolean isImmutableFrameworkOverlay(@NonNull SettingsItem item) {
        return !item.isMutable() && "android".equals(item.getTargetPackageName());
    }

    /**
     * Returns true if the settings were modified, false if they remain the same.
     */