Avoid NPE when no staged installs.

listFiles() returns null instead of empty list; deal with it.

Bug: 22608671
Change-Id: I60dabec31932af3cded915c6927a4c5e5c71775d
This commit is contained in:
Jeff Sharkey
2015-07-20 16:36:55 -07:00
parent 33c619bb52
commit 54d42be6eb

View File

@@ -91,7 +91,6 @@ import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.ImageUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.IoThread;
import com.google.android.collect.Sets;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -106,6 +105,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Random;
@@ -221,7 +221,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
reconcileStagesLocked(StorageManager.UUID_PRIVATE_INTERNAL);
final ArraySet<File> unclaimedIcons = Sets.newArraySet(
final ArraySet<File> unclaimedIcons = newArraySet(
mSessionsDir.listFiles());
// Ignore stages and icons claimed by active sessions
@@ -245,7 +245,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
private void reconcileStagesLocked(String volumeUuid) {
final File stagingDir = buildStagingDir(volumeUuid);
final ArraySet<File> unclaimedStages = Sets.newArraySet(
final ArraySet<File> unclaimedStages = newArraySet(
stagingDir.listFiles(sStageFilter));
// Ignore stages claimed by active sessions
@@ -1091,6 +1091,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
.build();
}
public static <E> ArraySet<E> newArraySet(E... elements) {
final ArraySet<E> set = new ArraySet<E>();
if (elements != null) {
set.ensureCapacity(elements.length);
Collections.addAll(set, elements);
}
return set;
}
private static class Callbacks extends Handler {
private static final int MSG_SESSION_CREATED = 1;
private static final int MSG_SESSION_BADGING_CHANGED = 2;