From 5bf3a5c7ca0a77ca5ecfcccdc387b5bf6fbf2e11 Mon Sep 17 00:00:00 2001 From: Bernardo Rufino Date: Mon, 30 Nov 2020 15:05:00 +0000 Subject: [PATCH] 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 2. adb shell am compat disable --no-kill 3. adb shell am compat reset-all --no-kill Verify package wasn't killed Change-Id: Ibcaed4d0a5e080a9627bb90669b7f8a7f7b31a87 --- .../am/ActivityManagerShellCommand.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index e3c071fe10e22..ca9211ac3e81c 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -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)); - platformCompat.setOverrides(overrides, packageName); + 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)); - platformCompat.setOverrides(overrides, packageName); + if (killPackage) { + platformCompat.setOverrides(overrides, packageName); + } else { + platformCompat.setOverridesForTest(overrides, packageName); + } pw.println("Disabled change " + changeId + " for " + packageName + "."); } return 0; case "reset": if (toggleAll) { - platformCompat.clearOverrides(packageName); + 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 "); + pw.println(" enable|disable [--no-kill] "); + pw.println(" Toggles a change either by id or by name for ."); + pw.println(" It kills (to allow the toggle to take effect) unless --no-kill is provided."); + pw.println(" reset "); pw.println(" Toggles a change either by id or by name for ."); pw.println(" It kills (to allow the toggle to take effect)."); - pw.println(" enable-all|disable-all "); pw.println(" Toggles all changes that are gated by ."); - pw.println(" reset-all "); + pw.println(" reset-all [--no-kill] "); pw.println(" Removes all existing overrides for all changes for "); pw.println(" (back to default behaviour)."); - pw.println(" It kills (to allow the toggle to take effect)."); + pw.println(" It kills (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 "); pw.println(" Overrides memory pressure factor. May also supply a raw int level");