Merge changes from topic "cmd_user_refactoring" into tm-dev
* changes: Improvements on UserManagerService ShellCommand implementation (3/4). Improvements on UserManagerService ShellCommand implementation (2/4).
This commit is contained in:
@@ -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, " ") : ""));
|
||||
|
||||
Reference in New Issue
Block a user