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

Commit b71f1d31 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Allow shell notification listener access toggling

For cts tests

Bug: 62815965
Test: cts
Change-Id: Ida801c05b84362b61c87398c999308cebb5bd969
parent 68263d1d
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -5679,11 +5679,14 @@ public class NotificationManagerService extends SystemService {

    private class ShellCmd extends ShellCommand {
        public static final String USAGE = "help\n"
                + "allow_listener COMPONENT\n"
                + "disallow_listener COMPONENT\n"
                + "allow_dnd PACKAGE\n"
                + "disallow_dnd PACKAGE";

        @Override
        public int onCommand(String cmd) {
            final PrintWriter pw = getOutPrintWriter();
            try {
                switch (cmd) {
                    case "allow_dnd": {
@@ -5697,11 +5700,30 @@ public class NotificationManagerService extends SystemService {
                                getNextArgRequired(), false);
                    }
                    break;
                    case "allow_listener": {
                        ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired());
                        if (cn == null) {
                            pw.println("Invalid listener - must be a ComponentName");
                            return -1;
                        }
                        getBinderService().setNotificationListenerAccessGranted(cn, true);
                    }
                    break;
                    case "disallow_listener": {
                        ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired());
                        if (cn == null) {
                            pw.println("Invalid listener - must be a ComponentName");
                            return -1;
                        }
                        getBinderService().setNotificationListenerAccessGranted(cn, false);
                    }
                    break;

                    default:
                        return handleDefaultCommands(cmd);
                }
            } catch (RemoteException e) {
            } catch (Exception e) {
                pw.println("Error occurred. Check logcat for details. " + e.getMessage());
                Slog.e(TAG, "Error running shell command", e);
            }
            return 0;