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_CRITICAL_ONLY = "--critical-only";
|
||||||
private static final String ARG_MODE = "--mode";
|
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) {
|
if (cmd == null) {
|
||||||
return shell.handleDefaultCommands(cmd);
|
return handleDefaultCommands(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
final PrintWriter pw = shell.getOutPrintWriter();
|
|
||||||
try {
|
try {
|
||||||
switch(cmd) {
|
switch(cmd) {
|
||||||
case CMD_LIST:
|
case CMD_LIST:
|
||||||
return runList(pw, shell);
|
return runList();
|
||||||
case CMD_REPORT_SYSTEM_USER_PACKAGE_ALLOWLIST_PROBLEMS:
|
case CMD_REPORT_SYSTEM_USER_PACKAGE_ALLOWLIST_PROBLEMS:
|
||||||
return runReportPackageWhitelistProblems(pw, shell);
|
return runReportPackageAllowlistProblems();
|
||||||
default:
|
default:
|
||||||
return shell.handleDefaultCommands(cmd);
|
return handleDefaultCommands(cmd);
|
||||||
}
|
}
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
pw.println("Remote exception: " + e);
|
getOutPrintWriter().println("Remote exception: " + e);
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int runList(PrintWriter pw, Shell shell) throws RemoteException {
|
private int runList() throws RemoteException {
|
||||||
|
final PrintWriter pw = getOutPrintWriter();
|
||||||
boolean all = false;
|
boolean all = false;
|
||||||
boolean verbose = false;
|
boolean verbose = false;
|
||||||
String opt;
|
String opt;
|
||||||
while ((opt = shell.getNextOption()) != null) {
|
while ((opt = getNextOption()) != null) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case ARG_V:
|
case ARG_V:
|
||||||
verbose = true;
|
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 verbose = false;
|
||||||
boolean criticalOnly = false;
|
boolean criticalOnly = false;
|
||||||
int mode = UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_NONE;
|
int mode = UserSystemPackageInstaller.USER_TYPE_PACKAGE_WHITELIST_MODE_NONE;
|
||||||
String opt;
|
String opt;
|
||||||
while ((opt = shell.getNextOption()) != null) {
|
while ((opt = getNextOption()) != null) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case ARG_V:
|
case ARG_V:
|
||||||
case ARG_VERBOSE:
|
case ARG_VERBOSE:
|
||||||
@@ -5543,7 +5574,7 @@ public class UserManagerService extends IUserManager.Stub {
|
|||||||
criticalOnly = true;
|
criticalOnly = true;
|
||||||
break;
|
break;
|
||||||
case ARG_MODE:
|
case ARG_MODE:
|
||||||
mode = Integer.parseInt(shell.getNextArgRequired());
|
mode = Integer.parseInt(getNextArgRequired());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pw.println("Invalid option: " + opt);
|
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
|
+ ", criticalOnly=" + criticalOnly
|
||||||
+ ", mode=" + UserSystemPackageInstaller.modeToString(mode));
|
+ ", mode=" + UserSystemPackageInstaller.modeToString(mode));
|
||||||
|
|
||||||
try (IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ")) {
|
try (IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ")) {
|
||||||
mSystemPackageInstaller.dumpPackageWhitelistProblems(ipw, mode, verbose, criticalOnly);
|
mSystemPackageInstaller.dumpPackageWhitelistProblems(ipw, mode, verbose,
|
||||||
|
criticalOnly);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
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) {
|
private static void debug(String message) {
|
||||||
Slog.d(LOG_TAG, message
|
Slog.d(LOG_TAG, message
|
||||||
+ (DBG_WITH_STACKTRACE ? " called at\n" + Debug.getCallers(10, " ") : ""));
|
+ (DBG_WITH_STACKTRACE ? " called at\n" + Debug.getCallers(10, " ") : ""));
|
||||||
|
|||||||
Reference in New Issue
Block a user