Merge "Kill the app once a compat change override is changed." am: 9ff2a6a098

am: 0f2b207397

Change-Id: If92301128dc1cb31ee6b0e8fdf7b2b05c75c9ade
This commit is contained in:
Anna Trostanetski
2019-10-03 02:47:35 -07:00
committed by android-build-merger

View File

@@ -2868,7 +2868,21 @@ final class ActivityManagerShellCommand extends ShellCommand {
return 0; return 0;
} }
private int runCompat(PrintWriter pw) { private void killPackage(String packageName, PrintWriter pw) throws RemoteException {
int uid = mPm.getPackageUid(packageName, 0, mUserId);
if (uid < 0) {
// uid is negative if the package wasn't found.
pw.println("Didn't find package " + packageName + " on device.");
} else {
pw.println("Killing package " + packageName + " (UID " + uid + ").");
final long origId = Binder.clearCallingIdentity();
mInterface.killUid(UserHandle.getAppId(uid),
UserHandle.USER_ALL, "killPackage");
Binder.restoreCallingIdentity(origId);
}
}
private int runCompat(PrintWriter pw) throws RemoteException {
final CompatConfig config = CompatConfig.get(); final CompatConfig config = CompatConfig.get();
String toggleValue = getNextArgRequired(); String toggleValue = getNextArgRequired();
long changeId; long changeId;
@@ -2882,13 +2896,14 @@ final class ActivityManagerShellCommand extends ShellCommand {
pw.println("Unknown or invalid change: '" + changeIdString + "'."); pw.println("Unknown or invalid change: '" + changeIdString + "'.");
} }
String packageName = getNextArgRequired(); String packageName = getNextArgRequired();
switch(toggleValue) { switch (toggleValue) {
case "enable": case "enable":
if (!config.addOverride(changeId, packageName, true)) { if (!config.addOverride(changeId, packageName, true)) {
pw.println("Warning! Change " + changeId + " is not known yet. Enabling it" pw.println("Warning! Change " + changeId + " is not known yet. Enabling it"
+ " could have no effect."); + " could have no effect.");
} }
pw.println("Enabled change " + changeId + " for " + packageName + "."); pw.println("Enabled change " + changeId + " for " + packageName + ".");
killPackage(packageName, pw);
return 0; return 0;
case "disable": case "disable":
if (!config.addOverride(changeId, packageName, false)) { if (!config.addOverride(changeId, packageName, false)) {
@@ -2896,11 +2911,13 @@ final class ActivityManagerShellCommand extends ShellCommand {
+ " could have no effect."); + " could have no effect.");
} }
pw.println("Disabled change " + changeId + " for " + packageName + "."); pw.println("Disabled change " + changeId + " for " + packageName + ".");
killPackage(packageName, pw);
return 0; return 0;
case "reset": case "reset":
if (config.removeOverride(changeId, packageName)) { if (config.removeOverride(changeId, packageName)) {
pw.println("Reset change " + changeId + " for " + packageName pw.println("Reset change " + changeId + " for " + packageName
+ " to default value."); + " to default value.");
killPackage(packageName, pw);
} else { } else {
pw.println("No override exists for changeId " + changeId + "."); pw.println("No override exists for changeId " + changeId + ".");
} }
@@ -3219,6 +3236,7 @@ final class ActivityManagerShellCommand extends ShellCommand {
pw.println(" Write all pending state to storage."); pw.println(" Write all pending state to storage.");
pw.println(" compat enable|disable|reset <CHANGE_ID|CHANGE_NAME> <PACKAGE_NAME>"); pw.println(" compat enable|disable|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(); pw.println();
Intent.printIntentArgsHelp(pw, ""); Intent.printIntentArgsHelp(pw, "");
} }