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 Original line Diff line number Diff line
@@ -2927,6 +2927,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
        final PlatformCompat platformCompat = (PlatformCompat)
        final PlatformCompat platformCompat = (PlatformCompat)
                ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
                ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
        String toggleValue = getNextArgRequired();
        String toggleValue = getNextArgRequired();
        boolean killPackage = !"--no-kill".equals(getNextOption());
        boolean toggleAll = false;
        boolean toggleAll = false;
        int targetSdkVersion = -1;
        int targetSdkVersion = -1;
        long changeId = -1;
        long changeId = -1;
@@ -2978,7 +2979,11 @@ final class ActivityManagerShellCommand extends ShellCommand {
                        CompatibilityChangeConfig overrides =
                        CompatibilityChangeConfig overrides =
                                new CompatibilityChangeConfig(
                                new CompatibilityChangeConfig(
                                        new Compatibility.ChangeConfig(enabled, disabled));
                                        new Compatibility.ChangeConfig(enabled, disabled));
                        if (killPackage) {
                            platformCompat.setOverrides(overrides, packageName);
                            platformCompat.setOverrides(overrides, packageName);
                        } else {
                            platformCompat.setOverridesForTest(overrides, packageName);
                        }
                        pw.println("Enabled change " + changeId + " for " + packageName + ".");
                        pw.println("Enabled change " + changeId + " for " + packageName + ".");
                    }
                    }
                    return 0;
                    return 0;
@@ -2997,13 +3002,21 @@ final class ActivityManagerShellCommand extends ShellCommand {
                        CompatibilityChangeConfig overrides =
                        CompatibilityChangeConfig overrides =
                                new CompatibilityChangeConfig(
                                new CompatibilityChangeConfig(
                                        new Compatibility.ChangeConfig(enabled, disabled));
                                        new Compatibility.ChangeConfig(enabled, disabled));
                        if (killPackage) {
                            platformCompat.setOverrides(overrides, packageName);
                            platformCompat.setOverrides(overrides, packageName);
                        } else {
                            platformCompat.setOverridesForTest(overrides, packageName);
                        }
                        pw.println("Disabled change " + changeId + " for " + packageName + ".");
                        pw.println("Disabled change " + changeId + " for " + packageName + ".");
                    }
                    }
                    return 0;
                    return 0;
                case "reset":
                case "reset":
                    if (toggleAll) {
                    if (toggleAll) {
                        if (killPackage) {
                            platformCompat.clearOverrides(packageName);
                            platformCompat.clearOverrides(packageName);
                        } else {
                            platformCompat.clearOverridesForTest(packageName);
                        }
                        pw.println("Reset all changes for " + packageName + " to default value.");
                        pw.println("Reset all changes for " + packageName + " to default value.");
                        return 0;
                        return 0;
                    }
                    }
@@ -3409,15 +3422,18 @@ final class ActivityManagerShellCommand extends ShellCommand {
            pw.println("  write");
            pw.println("  write");
            pw.println("      Write all pending state to storage.");
            pw.println("      Write all pending state to storage.");
            pw.println("  compat [COMMAND] [...]: sub-commands for toggling app-compat changes.");
            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("            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("            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("            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("            Removes all existing overrides for all changes for ");
            pw.println("            <PACKAGE_NAME> (back to default behaviour).");
            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("  memory-factor [command] [...]: sub-commands for overriding memory pressure factor");
            pw.println("         set <NORMAL|MODERATE|LOW|CRITICAL>");
            pw.println("         set <NORMAL|MODERATE|LOW|CRITICAL>");
            pw.println("            Overrides memory pressure factor. May also supply a raw int level");
            pw.println("            Overrides memory pressure factor. May also supply a raw int level");