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

Commit 1424c6b8 authored by Felipe Leme's avatar Felipe Leme Committed by Automerger Merge Worker
Browse files

Merge changes from topic "cmd_user_refactoring" into tm-dev am: d406f1f7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17199634

Change-Id: I140112af74f245ae27863fd1443eed53fae21706
parents 9b2a8dcf d406f1f7
Loading
Loading
Loading
Loading
+47 −48
Original line number Diff line number Diff line
@@ -5424,32 +5424,62 @@ public class UserManagerService extends IUserManager.Stub {
    private static final String ARG_CRITICAL_ONLY = "--critical-only";
    private static final String ARG_MODE = "--mode";

    private int onShellCommand(Shell shell, String cmd) {
    private final class Shell extends ShellCommand {

    @Override
    public void onHelp() {
        final PrintWriter pw = getOutPrintWriter();
        pw.printf("User manager (user) commands:\n");

        pw.printf("%s%s\n", PREFIX_HELP_COMMAND, CMD_HELP);
        pw.printf("%sPrints this help text.\n\n", PREFIX_HELP_DESCRIPTION);

        pw.printf("%s%s [%s] [%s]\n", PREFIX_HELP_COMMAND, CMD_LIST, ARG_V, ARG_ALL);
        pw.printf("%sPrints all users on the system.\n\n", PREFIX_HELP_DESCRIPTION);

        pw.printf("%s%s [%s | %s] [%s] [%s MODE]\n", PREFIX_HELP_COMMAND,
                CMD_REPORT_SYSTEM_USER_PACKAGE_ALLOWLIST_PROBLEMS,
                ARG_V, ARG_VERBOSE, ARG_CRITICAL_ONLY, ARG_MODE);

        pw.printf("%sReports all issues on user-type package allowlist XML files. Options:\n",
                PREFIX_HELP_DESCRIPTION);
        pw.printf("%s%s | %s: shows extra info, like number of issues\n",
                PREFIX_HELP_DESCRIPTION, ARG_V, ARG_VERBOSE);
        pw.printf("%s%s: show only critical issues, excluding warnings\n",
                PREFIX_HELP_DESCRIPTION, ARG_CRITICAL_ONLY);
        pw.printf("%s%s MODE: shows what errors would be if device used mode MODE\n"
                + "%s(where MODE is the allowlist mode integer as defined by "
                + "config_userTypePackageWhitelistMode)\n\n",
                PREFIX_HELP_DESCRIPTION, ARG_MODE, PREFIX_HELP_DESCRIPTION_EXTRA_LINES);
    }

    @Override
    public int onCommand(String cmd) {
        if (cmd == null) {
            return shell.handleDefaultCommands(cmd);
            return handleDefaultCommands(cmd);
        }

        final PrintWriter pw = shell.getOutPrintWriter();
        try {
            switch(cmd) {
                case CMD_LIST:
                    return runList(pw, shell);
                    return runList();
                case CMD_REPORT_SYSTEM_USER_PACKAGE_ALLOWLIST_PROBLEMS:
                    return runReportPackageWhitelistProblems(pw, shell);
                    return runReportPackageAllowlistProblems();
                default:
                    return shell.handleDefaultCommands(cmd);
                    return handleDefaultCommands(cmd);
            }
        } catch (RemoteException e) {
            pw.println("Remote exception: " + e);
            getOutPrintWriter().println("Remote exception: " + e);
        }
        return -1;
    }

    private int runList(PrintWriter pw, Shell shell) throws RemoteException {
    private int runList() throws RemoteException {
        final PrintWriter pw = getOutPrintWriter();
        boolean all = false;
        boolean verbose = false;
        String opt;
        while ((opt = shell.getNextOption()) != null) {
        while ((opt = getNextOption()) != null) {
            switch (opt) {
                case ARG_V:
                    verbose = true;
@@ -5528,12 +5558,13 @@ public class UserManagerService extends IUserManager.Stub {
        }
    }

    private int runReportPackageWhitelistProblems(PrintWriter pw, Shell shell) {
    private int runReportPackageAllowlistProblems() {
        final PrintWriter pw = getOutPrintWriter();
        boolean verbose = false;
        boolean criticalOnly = false;
        int mode = UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_NONE;
        String opt;
        while ((opt = shell.getNextOption()) != null) {
        while ((opt = getNextOption()) != null) {
            switch (opt) {
                case ARG_V:
                case ARG_VERBOSE:
@@ -5543,7 +5574,7 @@ public class UserManagerService extends IUserManager.Stub {
                    criticalOnly = true;
                    break;
                case ARG_MODE:
                    mode = Integer.parseInt(shell.getNextArgRequired());
                    mode = Integer.parseInt(getNextArgRequired());
                    break;
                default:
                    pw.println("Invalid option: " + opt);
@@ -5551,15 +5582,17 @@ public class UserManagerService extends IUserManager.Stub {
            }
        }

        Slog.d(LOG_TAG, "runReportPackageWhitelistProblems(): verbose=" + verbose
        Slog.d(LOG_TAG, "runReportPackageAllowlistProblems(): verbose=" + verbose
                + ", criticalOnly=" + criticalOnly
                + ", mode=" + UserSystemPackageInstaller.modeToString(mode));

        try (IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ")) {
            mSystemPackageInstaller.dumpPackageWhitelistProblems(ipw, mode, verbose, criticalOnly);
            mSystemPackageInstaller.dumpPackageWhitelistProblems(ipw, mode, verbose,
                    criticalOnly);
        }
        return 0;
    }
    }

    @Override
    protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -6254,40 +6287,6 @@ public class UserManagerService extends IUserManager.Stub {
        }
    }

    private class Shell extends ShellCommand {
        @Override
        public int onCommand(String cmd) {
            return onShellCommand(this, cmd);
        }

        @Override
        public void onHelp() {
            final PrintWriter pw = getOutPrintWriter();
            pw.printf("User manager (user) commands:\n");

            pw.printf("%s%s\n", PREFIX_HELP_COMMAND, CMD_HELP);
            pw.printf("%sPrints this help text.\n\n", PREFIX_HELP_DESCRIPTION);

            pw.printf("%s%s [%s] [%s]\n", PREFIX_HELP_COMMAND, CMD_LIST, ARG_V, ARG_ALL);
            pw.printf("%sPrints all users on the system.\n\n", PREFIX_HELP_DESCRIPTION);

            pw.printf("%s%s [%s | %s] [%s] [%s MODE]\n", PREFIX_HELP_COMMAND,
                    CMD_REPORT_SYSTEM_USER_PACKAGE_ALLOWLIST_PROBLEMS,
                    ARG_V, ARG_VERBOSE, ARG_CRITICAL_ONLY, ARG_MODE);

            pw.printf("%sReports all issues on user-type package allowlist XML files. Options:\n",
                    PREFIX_HELP_DESCRIPTION);
            pw.printf("%s%s | %s: shows extra info, like number of issues\n",
                    PREFIX_HELP_DESCRIPTION, ARG_V, ARG_VERBOSE);
            pw.printf("%s%s: show only critical issues, excluding warnings\n",
                    PREFIX_HELP_DESCRIPTION, ARG_CRITICAL_ONLY);
            pw.printf("%s%s MODE: shows what errors would be if device used mode MODE\n"
                    + "%s(where MODE is the allowlist mode integer as defined by "
                    + "config_userTypePackageWhitelistMode)\n\n",
                    PREFIX_HELP_DESCRIPTION, ARG_MODE, PREFIX_HELP_DESCRIPTION_EXTRA_LINES);
        }
    }

    private static void debug(String message) {
        Slog.d(LOG_TAG, message
                + (DBG_WITH_STACKTRACE ? " called at\n" + Debug.getCallers(10, "  ") : ""));