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

* commit 'e87dc6dba58e55c60f387a86468a57a5109a97ac':
  More info to support CTS, fix reconcile bug.
This commit is contained in:
Jeff Sharkey
2015-07-24 03:05:42 +00:00
committed by Android Git Automerger
3 changed files with 35 additions and 15 deletions

View File

@@ -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,9 +91,12 @@ public final class Sm {
}
public void runListDisks() throws RemoteException {
final boolean onlyAdoptable = "adoptable".equals(nextArg());
final DiskInfo[] disks = mSm.getDisks();
for (DiskInfo disk : disks) {
System.out.println(disk.getId());
if (!onlyAdoptable || disk.isAdoptable()) {
System.out.println(disk.getId());
}
}
}
@@ -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("");

View File

@@ -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;
}
}
}

View File

@@ -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
killApplication(packageName, appId, "move pkg");
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);