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

Commit 5bf3a5c7 authored by Bernardo Rufino's avatar Bernardo Rufino
Browse files

Add '--no-kill' option to 'adb shell am compat'

Option '--no-kill' will call setOverridesForTest() and
clearOverridesForTest() variantes of the methods.

This is useful for debugging locally when you know when the check takes
place and don't want to restart the process (and lose state, etc.).

Test: 1. adb shell am compat enable --no-kill <change> <package>
      2. adb shell am compat disable --no-kill <change> <package>
      3. adb shell am compat reset-all --no-kill <package>
      Verify package wasn't killed
Change-Id: Ibcaed4d0a5e080a9627bb90669b7f8a7f7b31a87
parent c1b0c8bc
Loading
Loading
Loading
Loading
+23 −7
Original line number Diff line number Diff line
@@ -2927,6 +2927,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
        final PlatformCompat platformCompat = (PlatformCompat)
                ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
        String toggleValue = getNextArgRequired();
        boolean killPackage = !"--no-kill".equals(getNextOption());
        boolean toggleAll = false;
        int targetSdkVersion = -1;
        long changeId = -1;
@@ -2978,7 +2979,11 @@ final class ActivityManagerShellCommand extends ShellCommand {
                        CompatibilityChangeConfig overrides =
                                new CompatibilityChangeConfig(
                                        new Compatibility.ChangeConfig(enabled, disabled));
                        if (killPackage) {
                            platformCompat.setOverrides(overrides, packageName);
                        } else {
                            platformCompat.setOverridesForTest(overrides, packageName);
                        }
                        pw.println("Enabled change " + changeId + " for " + packageName + ".");
                    }
                    return 0;
@@ -2997,13 +3002,21 @@ final class ActivityManagerShellCommand extends ShellCommand {
                        CompatibilityChangeConfig overrides =
                                new CompatibilityChangeConfig(
                                        new Compatibility.ChangeConfig(enabled, disabled));
                        if (killPackage) {
                            platformCompat.setOverrides(overrides, packageName);
                        } else {
                            platformCompat.setOverridesForTest(overrides, packageName);
                        }
                        pw.println("Disabled change " + changeId + " for " + packageName + ".");
                    }
                    return 0;
                case "reset":
                    if (toggleAll) {
                        if (killPackage) {
                            platformCompat.clearOverrides(packageName);
                        } else {
                            platformCompat.clearOverridesForTest(packageName);
                        }
                        pw.println("Reset all changes for " + packageName + " to default value.");
                        return 0;
                    }
@@ -3409,15 +3422,18 @@ final class ActivityManagerShellCommand extends ShellCommand {
            pw.println("  write");
            pw.println("      Write all pending state to storage.");
            pw.println("  compat [COMMAND] [...]: sub-commands for toggling app-compat changes.");
            pw.println("         enable|disable|reset <CHANGE_ID|CHANGE_NAME> <PACKAGE_NAME>");
            pw.println("         enable|disable [--no-kill] <CHANGE_ID|CHANGE_NAME> <PACKAGE_NAME>");
            pw.println("            Toggles a change either by id or by name for <PACKAGE_NAME>.");
            pw.println("            It kills <PACKAGE_NAME> (to allow the toggle to take effect) unless --no-kill is provided.");
            pw.println("         reset <CHANGE_ID|CHANGE_NAME> <PACKAGE_NAME>");
            pw.println("            Toggles a change either by id or by name for <PACKAGE_NAME>.");
            pw.println("            It kills <PACKAGE_NAME> (to allow the toggle to take effect).");
            pw.println("         enable-all|disable-all <targetSdkVersion> <PACKAGE_NAME");
            pw.println("         enable-all|disable-all <targetSdkVersion> <PACKAGE_NAME>");
            pw.println("            Toggles all changes that are gated by <targetSdkVersion>.");
            pw.println("         reset-all <PACKAGE_NAME>");
            pw.println("         reset-all [--no-kill] <PACKAGE_NAME>");
            pw.println("            Removes all existing overrides for all changes for ");
            pw.println("            <PACKAGE_NAME> (back to default behaviour).");
            pw.println("            It kills <PACKAGE_NAME> (to allow the toggle to take effect).");
            pw.println("            It kills <PACKAGE_NAME> (to allow the toggle to take effect) unless --no-kill is provided.");
            pw.println("  memory-factor [command] [...]: sub-commands for overriding memory pressure factor");
            pw.println("         set <NORMAL|MODERATE|LOW|CRITICAL>");
            pw.println("            Overrides memory pressure factor. May also supply a raw int level");