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

Commit a76070e1 authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

Allow "cmd overlay list" to list all overlays

Listing the overlays using the OMS shell command should print all
overlays (besides static android RROs).

Bug: 132645448
Test: adb shell cmd overlay list
Test: adb shell cmd overlay list android
Change-Id: I17e90e2ad90bce40d3aebed56a429f46f09673db
parent c3e76141
Loading
Loading
Loading
Loading
+47 −24
Original line number Diff line number Diff line
@@ -120,20 +120,49 @@ final class OverlayManagerShellCommand extends ShellCommand {
                    return 1;
            }
        }

        final String packageName = getNextArg();
        if (packageName != null) {
            List<OverlayInfo> overlaysForTarget = mInterface.getOverlayInfosForTarget(
                    packageName, userId);

            // If the package is not targeted by any overlays, check if the package is an overlay.
            if (overlaysForTarget.isEmpty()) {
                final OverlayInfo info = mInterface.getOverlayInfo(packageName, userId);
                if (info != null) {
                    printListOverlay(out, info);
                }
                return 0;
            }

            out.println(packageName);

            // Print the overlays for the target.
            final int n = overlaysForTarget.size();
            for (int i = 0; i < n; i++) {
                printListOverlay(out, overlaysForTarget.get(i));
            }

            return 0;
        }

        // Print all overlays grouped by target package name.
        final Map<String, List<OverlayInfo>> allOverlays = mInterface.getAllOverlays(userId);
        for (final String targetPackageName : allOverlays.keySet()) {
            if (targetPackageName.equals(packageName)) {
            out.println(targetPackageName);
            }

            List<OverlayInfo> overlaysForTarget = allOverlays.get(targetPackageName);
            final int n = overlaysForTarget.size();
            for (int i = 0; i < n; i++) {
                final OverlayInfo oi = overlaysForTarget.get(i);
                if (!targetPackageName.equals(packageName) && !oi.packageName.equals(packageName)) {
                    continue;
                printListOverlay(out, overlaysForTarget.get(i));
            }
            out.println();
        }

        return 0;
    }

    private void printListOverlay(PrintWriter out, OverlayInfo oi) {
        String status;
        switch (oi.state) {
            case OverlayInfo.STATE_ENABLED_STATIC:
@@ -149,12 +178,6 @@ final class OverlayManagerShellCommand extends ShellCommand {
        }
        out.println(String.format("%s %s", status, oi.packageName));
    }
            if (targetPackageName.equals(packageName)) {
                out.println();
            }
        }
        return 0;
    }

    private int runEnableDisable(final boolean enable) throws RemoteException {
        final PrintWriter err = getErrPrintWriter();