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

Commit 3f69af1e authored by Rishabh Singh's avatar Rishabh Singh
Browse files

Clear cache shell commmand

Added changes in runClear to clear cache data of the app

Bug: 221946754
Test: atest SdkSandboxStorageHostTest#testSdkDataPackageDirectory_IsClearedOnClearCache
Change-Id: Ibd61cdec64f51bbc84d6f0536aab877ce0725c6c
Merged-In: Ibd61cdec64f51bbc84d6f0536aab877ce0725c6c
(cherry picked from commit 6f7d6208)
parent 23e31a12
Loading
Loading
Loading
Loading
+26 −6
Original line number Diff line number Diff line
@@ -2269,10 +2269,23 @@ class PackageManagerShellCommand extends ShellCommand {
    }

    private int runClear() throws RemoteException {
        final PrintWriter pw = getOutPrintWriter();
        int userId = UserHandle.USER_SYSTEM;
        String option = getNextOption();
        if (option != null && option.equals("--user")) {
        boolean cacheOnly = false;

        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();
@@ -2284,7 +2297,12 @@ class PackageManagerShellCommand extends ShellCommand {
        final int translatedUserId =
                translateUserId(userId, UserHandle.USER_NULL, "runClear");
        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) {
            while (!obs.finished) {
                try {
@@ -4042,8 +4060,10 @@ class PackageManagerShellCommand extends ShellCommand {
        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("");
        pw.println("  clear [--user USER_ID] PACKAGE");
        pw.println("    Deletes all data associated with a package.");
        pw.println("  clear [--user USER_ID] [--cache-only] 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("  enable [--user USER_ID] PACKAGE_OR_COMPONENT");
        pw.println("  disable [--user USER_ID] PACKAGE_OR_COMPONENT");