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

Commit ddb34908 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add adb command to list valid agents/targets to debugging purposes" into main

parents 2903a64d a7c9fb0f
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ public class AppFunctionManagerServiceShellCommand extends ShellCommand {
        pw.println();

        if (accessCheckFlagsEnabled()) {
            // grant-app-function-access
            pw.println(
                    "  grant-app-function-access --agent-package <AGENT_PACKAGE_NAME> "
                            + "--target-package <TARGET_PACKAGE_NAME> [--agent-user <USER_ID>] "
@@ -125,6 +126,8 @@ public class AppFunctionManagerServiceShellCommand extends ShellCommand {
                    "    --target-user <USER_ID> (optional): The user ID for the target package. "
                            + "Defaults to the current user.");
            pw.println();

            // revoke-app-function-access
            pw.println(
                    "  revoke-app-function-access --agent-package <AGENT_PACKAGE_NAME> "
                            + "--target-package <TARGET_PACKAGE_NAME> [--agent-user <USER_ID>] "
@@ -141,6 +144,24 @@ public class AppFunctionManagerServiceShellCommand extends ShellCommand {
                    "    --target-user <USER_ID> (optional): The user ID for the target package. "
                            + "Defaults to the current user.");
            pw.println();

            // list-valid-agents
            pw.println(
                    "  list-valid-agents [--user <USER_ID>]");
            pw.println("    Lists all valid agents.");
            pw.println(
                    "    --user <USER_ID> (optional): The user ID to list valid agents for. "
                            + "Defaults to the current user.");
            pw.println();

            // list-valid-targets
            pw.println(
                    "  list-valid-targets [--user <USER_ID>]");
            pw.println("    Lists all valid targets.");
            pw.println(
                    "    --user <USER_ID> (optional): The user ID to list valid targets for. "
                            + "Defaults to the current user.");
            pw.println();
        }
    }

@@ -168,6 +189,16 @@ public class AppFunctionManagerServiceShellCommand extends ShellCommand {
                        return -1;
                    }
                    return runRevokeAppFunctionAccess();
                case "list-valid-agents":
                    if (!accessCheckFlagsEnabled()) {
                        return -1;
                    }
                    return listValidAgents();
                case "list-valid-targets":
                    if (!accessCheckFlagsEnabled()) {
                        return -1;
                    }
                    return listValidTargets();
                default:
                    return handleDefaultCommands(cmd);
            }
@@ -511,6 +542,44 @@ public class AppFunctionManagerServiceShellCommand extends ShellCommand {
        return 0;
    }

    private int listValidAgents() throws Exception {
        final PrintWriter pw = getOutPrintWriter();
        int userId = ActivityManager.getCurrentUser();
        String opt;

        while ((opt = getNextOption()) != null) {
            if (opt.equals("--user")) {
                userId = UserHandle.parseUserArg(getNextArgRequired());
            } else {
                pw.println("Unknown option: " + opt);
                return -1;
            }
        }

        final List<String> validAgents = mService.getValidAgents(userId);
        pw.println("Valid agents: " + validAgents.toString());
        return 0;
    }

    private int listValidTargets() throws Exception {
        final PrintWriter pw = getOutPrintWriter();
        int userId = ActivityManager.getCurrentUser();
        String opt;

        while ((opt = getNextOption()) != null) {
            if (opt.equals("--user")) {
                userId = UserHandle.parseUserArg(getNextArgRequired());
            } else {
                pw.println("Unknown option: " + opt);
                return -1;
            }
        }

        final List<String> validTargets = mService.getValidTargets(userId);
        pw.println("Valid targets: " + validTargets.toString());
        return 0;
    }

    private static String getCallingPackage() {
        return switch (Binder.getCallingUid()) {
            case Process.ROOT_UID -> "root";