Merge "Clear cache shell commmand" into tm-dev am: cb1813cdaa

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18343946

Change-Id: I2fbf2dded6ec2b7ded809b21179978cb30c9e498
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Rishabh Singh
2022-05-13 02:48:27 +00:00
committed by Automerger Merge Worker

View File

@@ -2269,10 +2269,23 @@ class PackageManagerShellCommand extends ShellCommand {
} }
private int runClear() throws RemoteException { private int runClear() throws RemoteException {
final PrintWriter pw = getOutPrintWriter();
int userId = UserHandle.USER_SYSTEM; int userId = UserHandle.USER_SYSTEM;
String option = getNextOption(); boolean cacheOnly = false;
if (option != null && option.equals("--user")) {
userId = UserHandle.parseUserArg(getNextArgRequired()); String opt;
while ((opt = getNextOption()) != null) {
switch (opt) {
case "--user":
userId = UserHandle.parseUserArg(getNextArgRequired());
break;
case "--cache-only":
cacheOnly = true;
break;
default:
pw.println("Error: Unknown option: " + opt);
return 1;
}
} }
String pkg = getNextArg(); String pkg = getNextArg();
@@ -2284,7 +2297,12 @@ class PackageManagerShellCommand extends ShellCommand {
final int translatedUserId = final int translatedUserId =
translateUserId(userId, UserHandle.USER_NULL, "runClear"); translateUserId(userId, UserHandle.USER_NULL, "runClear");
final ClearDataObserver obs = new ClearDataObserver(); final ClearDataObserver obs = new ClearDataObserver();
ActivityManager.getService().clearApplicationUserData(pkg, false, obs, translatedUserId); if (!cacheOnly) {
ActivityManager.getService()
.clearApplicationUserData(pkg, false, obs, translatedUserId);
} else {
mInterface.deleteApplicationCacheFilesAsUser(pkg, translatedUserId, obs);
}
synchronized (obs) { synchronized (obs) {
while (!obs.finished) { while (!obs.finished) {
try { try {
@@ -4042,8 +4060,10 @@ class PackageManagerShellCommand extends ShellCommand {
pw.println(" --user: remove the app from the given user."); pw.println(" --user: remove the app from the given user.");
pw.println(" --versionCode: only uninstall if the app has the given version code."); pw.println(" --versionCode: only uninstall if the app has the given version code.");
pw.println(""); pw.println("");
pw.println(" clear [--user USER_ID] PACKAGE"); pw.println(" clear [--user USER_ID] [--cache-only] PACKAGE");
pw.println(" Deletes all data associated with a package."); pw.println(" Deletes data associated with a package. Options are:");
pw.println(" --user: specifies the user for which we need to clear data");
pw.println(" --cache-only: a flag which tells if we only need to clear cache data");
pw.println(""); pw.println("");
pw.println(" enable [--user USER_ID] PACKAGE_OR_COMPONENT"); pw.println(" enable [--user USER_ID] PACKAGE_OR_COMPONENT");
pw.println(" disable [--user USER_ID] PACKAGE_OR_COMPONENT"); pw.println(" disable [--user USER_ID] PACKAGE_OR_COMPONENT");