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

Commit f6e9a3ed authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "More info to support CTS, fix reconcile bug." into mnc-dev

parents 4fc1b707 85ced632
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -81,6 +81,8 @@ public final class Sm {
            runUnmount();
        } else if ("format".equals(op)) {
            runFormat();
        } else if ("benchmark".equals(op)) {
            runBenchmark();
        } else if ("forget".equals(op)) {
            runForget();
        } else {
@@ -89,11 +91,14 @@ public final class Sm {
    }

    public void runListDisks() throws RemoteException {
        final boolean onlyAdoptable = "adoptable".equals(nextArg());
        final DiskInfo[] disks = mSm.getDisks();
        for (DiskInfo disk : disks) {
            if (!onlyAdoptable || disk.isAdoptable()) {
                System.out.println(disk.getId());
            }
        }
    }

    public void runListVolumes() throws RemoteException {
        final String filter = nextArg();
@@ -161,6 +166,11 @@ public final class Sm {
        mSm.format(volId);
    }

    public void runBenchmark() throws RemoteException {
        final String volId = nextArg();
        mSm.benchmark(volId);
    }

    public void runForget() throws RemoteException{
        final String fsUuid = nextArg();
        if ("all".equals(fsUuid)) {
@@ -180,7 +190,7 @@ public final class Sm {
    }

    private static int showUsage() {
        System.err.println("usage: sm list-disks");
        System.err.println("usage: sm list-disks [adoptable]");
        System.err.println("       sm list-volumes [public|private|emulated|all]");
        System.err.println("       sm has-adoptable");
        System.err.println("       sm get-primary-storage-uuid");
@@ -190,6 +200,7 @@ public final class Sm {
        System.err.println("       sm mount VOLUME");
        System.err.println("       sm unmount VOLUME");
        System.err.println("       sm format VOLUME");
        System.err.println("       sm benchmark VOLUME");
        System.err.println("");
        System.err.println("       sm forget [UUID|all]");
        System.err.println("");
+12 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.os;

import android.annotation.NonNull;
import android.provider.DocumentsContract.Document;
import android.system.ErrnoException;
import android.system.Os;
@@ -69,6 +70,8 @@ public class FileUtils {
    /** Regular expression for safe filenames: no spaces or metacharacters */
    private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+");

    private static final File[] EMPTY = new File[0];

    /**
     * Set owner and mode of of given {@link File}.
     *
@@ -634,4 +637,13 @@ public class FileUtils {
            return new File(parent, name + "." + ext);
        }
    }

    public static @NonNull File[] listFilesOrEmpty(File dir) {
        File[] res = dir.listFiles();
        if (res != null) {
            return res;
        } else {
            return EMPTY;
        }
    }
}
+10 −13
Original line number Diff line number Diff line
@@ -15605,12 +15605,8 @@ public class PackageManagerService extends IPackageManager.Stub {
     * recycled.
     */
    private void reconcileUsers(String volumeUuid) {
        final File[] files = Environment.getDataUserDirectory(volumeUuid).listFiles();
        if (ArrayUtils.isEmpty(files)) {
            Slog.d(TAG, "No users found on " + volumeUuid);
            return;
        }
        final File[] files = FileUtils
                .listFilesOrEmpty(Environment.getDataUserDirectory(volumeUuid));
        for (File file : files) {
            if (!file.isDirectory()) continue;
@@ -15666,12 +15662,8 @@ public class PackageManagerService extends IPackageManager.Stub {
     * another volume.
     */
    private void reconcileApps(String volumeUuid) {
        final File[] files = Environment.getDataAppDirectory(volumeUuid).listFiles();
        if (ArrayUtils.isEmpty(files)) {
            Slog.d(TAG, "No apps found on " + volumeUuid);
            return;
        }
        final File[] files = FileUtils
                .listFilesOrEmpty(Environment.getDataAppDirectory(volumeUuid));
        for (File file : files) {
            final boolean isPackage = (isApkFile(file) || file.isDirectory())
                    && !PackageInstallerService.isStageName(file.getName());
@@ -15802,7 +15794,12 @@ public class PackageManagerService extends IPackageManager.Stub {
        }
        // Now that we're guarded by frozen state, kill app during move
        final long token = Binder.clearCallingIdentity();
        try {
            killApplication(packageName, appId, "move pkg");
        } finally {
            Binder.restoreCallingIdentity(token);
        }
        final Bundle extras = new Bundle();
        extras.putString(Intent.EXTRA_PACKAGE_NAME, packageName);